划分两个无符号字节汇编
Dividing two unsigned bytes Assembly
我很难理解何时以及为何使用 cbw/cwd/cdq/cqo
。我有两个无符号字节 bNum1
和 bNum2
,我需要将它们划分并存储在字节大小的 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]
我很难理解何时以及为何使用 cbw/cwd/cdq/cqo
。我有两个无符号字节 bNum1
和 bNum2
,我需要将它们划分并存储在字节大小的 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]