在x86汇编中打印寄存器值的简单方法
-
01-10-2019 - |
题
我需要在8086汇编中编写一个程序,该程序从用户接收数据,进行一些数学计算并在屏幕上打印答案,我已经编写了程序的所有部分,所有内容都很好,但我不知道如何打印到屏幕的号码。
在我所有计算的最后,答案是斧头,被视为无符号16位整数。如何打印斧头寄存器的十进制(未签名)值?
解决方案
您可以使用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
不隶属于 StackOverflow