Assembly DOS汇编简单数学
我有一个数字存储在dl中,我需要它来处理最多三位数的数字?这是数字0-9的工作代码Assembly DOS汇编简单数学,assembly,dos,nasm,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寄存器中 我需要这样做: 莫
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
因为ax和dl的大小不同。你应该能做到
mov-ax,dx
或来自GJ:
movzx ax,dl
如果只需要最后一个字节,只需引用dl和al 我认为你做不到
mov-ax,dl
因为ax和dl的大小不同。你应该能做到
mov-ax,dx
或来自GJ:
movzx ax,dl
如果只需要最后一个字节,只需引用dl和al
我需要这样做:
莫瓦克斯
但那不行吗
mov
如果寄存器具有相同的大小(8位、16位或32位),则可以工作
例如:
mov EAX, EDX
; or
mov AX, DX
; or
mov AL, DL
我需要这样做:
莫瓦克斯
但那不行吗
mov
如果寄存器具有相同的大小(8位、16位或32位),则可以工作
例如:
mov EAX, EDX
; or
mov AX, DX
; or
mov AL, DL
当用于读取字符的int21将其放入一个8位寄存器中,而DIV只有16位时,我该怎么做呢?寄存器实际上是32位的,但您可以使用ax,al,ah(与整个eax相反)引用它的各个部分。因此,如果用8位值填充ax寄存器,应该没问题。实际上正确的答案是:movzx ax,dl。只有在这种情况下,ah寄存器才会被设置为0。当用于读取字符的int21将其放在8位寄存器中,而DIV只有16位时,我该如何做?寄存器实际上是32位,但您可以使用ax、al、ah(与整个eax相反)来引用它的各个部分。因此,如果用8位值填充ax寄存器,应该没问题。实际上正确的答案是:movzx ax,dl。只有在这种情况下,ah寄存器才会设置为0。