我是汇编语言的新手,并试图通过代码来学习它,我发现一段代码说它将二进制转换为十进制并作为 ascii 输出到屏幕上。下面是代码
org 100h
push ax
push cx
push dx
push si
mov dx,10
mov ax,dx ;Assuming number to print starts in DX
mov si,10 ;decimal 10
xor cx,cx ;Initialize count at 0
NonZero:
xor dx,dx ;Clear last remainder
div si
push dx ;Save digits in reverse order
inc cx
or ax,ax ;Is original number down to 0 yet?
jnz NonZero ;No, continue looping
mov ah,02h
WriteDigitLoop:
pop dx
add dx,"0" ;Convert to ASCII
int 21h ; and print
loop WriteDigitLoop
EndDecimal:
pop si
pop dx
pop cx
pop ax
现在假设 dx 的初始值为 10 ,所以我猜输出应该是 2 。但实际输出为 10,根据代码流,这很明显。
如果这是一个问题,那么我应该做些什么改变来纠正这个问题。