我需要在8086汇编中编写一个程序,从用户接收数据,进行一些数学计算并在屏幕上打印答案,我已经编写了程序的所有部分,所有工作正常但我不知道如何将号码打印到屏幕上。
在我的所有计算结束时,答案是AX,它被视为无符号16位整数。如何打印AX寄存器的十进制(无符号)值?
答案 0 :(得分:1)
你可以使用C-library函数itoa, 实现它并不是那么难,基本上,你这样做:
while (x){
buff[n]==x % 10;
x/=10;
n++;
}
然后反转缓冲区(或向后打印字符)
void print_number(int x);
print_number:
buff db 15 dup(0)
mov ax,[esp+4]
mov bx,0
itoa_w1:
mov cx, ax
mod cx,10
add cx,30h;'0'
div ax,10
mov buff[bx],cl
cmp ax,0
jnz itoa_w1
itoa_w2:
push buff[bx]
call putchar
pop ax
cmp bx,0
jnz itoa_w2
ret