1

我有一个存储在 dl 中的数字,我需要它来处理最多三位数的数字吗?这是数字 0-9 的工作代码。

WriteNumber:
;; print out number in dl
push ax
push dx
add dl,"0"
mov ah,02h ; printing one char
int 21h
pop dx
pop ax
ret

例如,两位数。我可以服用 dl/10。然后打印出结果和其余的不同字符。但是我得到了一个错误,因为这个数字需要在 DIV 的 AX 寄存器中。

我需要这样做:

mov ax,dl

但这行不通?

4

2 回答 2

1

我不认为你能做到

mov ax,dl

因为 ax 和 dl 的大小不同。你应该能够做到

mov ax, dx

或来自 GJ:

movzx ax, dl

如果您只想要最后一个字节,则只需引用 dl 和 al 即可。

于 2009-10-28T17:08:48.647 回答
0

我需要这样做:

mov ax,dl

但这行不通?

mov如果寄存器具有相同的大小(8 位或 16 位或 32 位),则将起作用。

例子:

mov EAX, EDX
; or
mov AX, DX
; or
mov AL, DL
于 2009-10-28T17:09:40.373 回答