我很难理解何时以及为何使用cbw/cwd/cdq/cqo
。我有两个无符号字节bNum1
和bNum2
,我需要将其划分并存储在字节大小为var bAns
中。我意识到我需要将数据放在AX中但不确定如何在AX中放置一个字节而不会出现无效的大小错误:
mov ax, byte[bNum1] # invalid size error
div byte[bNum2]
mov byte[bAns], al
我该如何解决此错误?我为在汇编中的基本理解而道歉
答案 0 :(得分:1)
cbw/cwd/cdq
说明用于签署扩展号码。因此它们仅对有符号值有用,并且仅当值已在寄存器中时才有用。
鉴于bnum1
是内存中的无符号字节,您可以加载它并使用movzx
指令对其进行零扩展,例如
movzx ax, byte[bNum1]