x86レジスタが乗算および除算に関与しているアセンブリ
質問
これは私のコードです:
.data
ans1 db 0
ans2 db 0
.data?
in1 db 100 dup(?) ; first input value
in2 db 100 dup(?) ; second input value
.code
start:
; here I have code for input
; I get 2 nums, and I want to multiply and divide them
; here is what I already have to mul/div them:
lea eax, in1
lea edx, in2
imul eax ; multiply in1 and in2
mov ans1, eax ; move result to ans1
xor eax, eax ; clear register
xor edx, edx ; " "
lea eax, in1
lea edx, in2
idiv eax ; divide in1 by in2
mov ans2, eax ; move result to ans2
lea eax, ans1
push eax
call StdOut ; print ans1 (I have include instructions at the start)
lea ebx, ans2
push ebx
call StdOut ; print ans2 ("")
.
私の質問:
1.正確にどのレジスタを掛けますか。in1
とin2
を複数回掛けますか。
それらを分割するには?
3.部門に収納されている残りはどこですか?
一般的な声明を心配しないでください、どの登録者が絶対に乗算と除算で(できるだけ近く)作業するかを教えてください。
注: この投稿は x86アセンブリ - MASM32:乗算と部門の絶対的な内訳、しかし(私が間違っているなら私を正しければ正しい)古い投稿をするのではなく、新しい投稿をすることをより尊重して、トピックをオフにします。
解決
アセンブリを書いている場合は、参照仕様:
Unsigned multiply (AX ← AL ∗ r/m8).
.
あなたが知る必要があるすべてのものをあなたに伝えます。結果はAX
に配置されます。ソースはAL、および8ビットレジスタまたはメモリの位置です。
編集
あなたの質問は正しくフォーマットされていなかった、あなたの質問は同じ行にありました。
除算はDIV
:
Unsigned divide AX by r/m8, with result stored in AL ← Quotient, AH ← Remainder
.
真剣に:マニュアルを読んでください。
所属していません StackOverflow