DOS汇编简单的数学

时间:2009-10-28 16:27:27

标签: assembly dos nasm

我有一个存储在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

但这不起作用?

2 个答案:

答案 0 :(得分:1)

我认为你无法做到

mov ax,dl

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

mov ax, dx

或来自GJ:

movzx ax, dl

如果你只想要最后一个字节,那么只需引用dl和al。

答案 1 :(得分:0)

  

我需要这样做:

     

mov ax,dl

     

但这不起作用?

如果寄存器具有相同的大小,8位或16位或32位,

mov将起作用。

示例:

mov EAX, EDX
; or
mov AX, DX
; or
mov AL, DL