Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly DOS汇编简单数学_Assembly_Dos_Nasm - Fatal编程技术网

Assembly DOS汇编简单数学

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寄存器中 我需要这样做: 莫

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

因为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。