質問

ユーザーからデータを受信し、数学的な計算を行い、画面に答えを印刷する8086アセンブリでプログラムを作成する必要があります。プログラムのすべての部分を作成しました。画面の番号。

私のすべての計算の終わりに、答えはxであり、署名されていない16ビット整数として扱われます。 axレジスタの小数(符号なし)値を印刷するにはどうすればよいですか?

役に立ちましたか?

解決

c-library関数Itoaを使用して、それを実装することはそれほど難しくありません、Basicaly、あなたは次のことです。

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