3

ユーザーからデータを受け取り、いくつかの数学的計算を行い、画面に答えを出力するプログラムを 8086 Assembly で作成する必要があります。プログラムのすべての部分を作成し、すべて正常に動作しますが、出力方法がわかりません。番号を画面に表示します。

すべての計算の最後に、答えは AX であり、符号なし 16 ビット整数として扱われます。AX レジスタの 10 進数 (符号なし) 値を出力するにはどうすればよいですか?

4

1 に答える 1

1

Cライブラリ関数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
于 2010-04-25T17:20:39.477 に答える