x86アセンブリでレジスタの値を印刷する簡単な方法
-
01-10-2019 - |
質問
ユーザーからデータを受信し、数学的な計算を行い、画面に答えを印刷する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
所属していません StackOverflow