划分两个无符号字节汇编

Dividing two unsigned bytes Assembly

我很难理解何时以及为何使用 cbw/cwd/cdq/cqo。我有两个无符号字节 bNum1bNum2,我需要将它们划分并存储在字节大小的 var bAns 中。我意识到我需要将数据放在 AX 中,但不确定如何在 AX 中放置一个字节而不出现无效大小错误:

mov ax, byte[bNum1]  # invalid size error
div byte[bNum2]
mov byte[bAns], al

我该如何解决这个错误?对于我在 Assembly 中的初步理解,我深表歉意

cbw/cwd/cdq指令用于对扩展号进行签名。因此,它们仅对有符号值有用,并且仅当该值已在寄存器中时才有用。

鉴于bnum1在内存中是一个无符号字节,您可以加载它并使用movzx指令对其进行零扩展,例如

movzx ax, byte[bNum1]