DOS 汇编 简单数学
我在 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
但这行不通?
I have a number stored in dl, and I need this to work for numbers up to three digits? Here is the working code for digits 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
For example, for two digits. I could take dl/10. And then print out the result and the rest as to different chars. But I got an error, because the number needs to be in AX register for the DIV.
I need to do this:
mov ax,dl
But that won't work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您无法执行
mov ax,dl ,
因为 ax 和 dl 的大小不同。您应该能够
执行 mov ax, dx
或从 GJ
执行: movzx ax, dl ,
然后如果您只想要最后一个字节,则只需引用 dl 和 al 即可。
I don't think you'll be able to do
mov ax,dl
since ax and dl are different sizes. You should be able to do
mov ax, dx
or from GJ:
movzx ax, dl
And then just reference dl and al if you want just the last byte.
如果寄存器大小相同(8 位、16 位或 32 位),则
mov
将起作用。例子:
mov
will work if the registers have the same size, both 8bit or 16bit or 32bit.Example: