分割两个无符号字节汇编

时间:2015-02-03 05:58:51

标签: assembly

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

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

我该如何解决此错误?我为在汇编中的基本理解而道歉

1 个答案:

答案 0 :(得分:1)

cbw/cwd/cdq说明用于签署扩展号码。因此它们仅对有符号值有用,并且仅当值已在寄存器中时才有用。

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

movzx ax, byte[bNum1]