我需要在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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top