这是我的代码:
.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
相乘?2.“”来划分它们?3. 余数在除法中存储在哪里?
不要担心一般性的陈述,你能告诉我哪些寄存器肯定(尽可能接近)在乘法和除法中工作。
注意:有些人可能会说这篇文章是x86 汇编的重复 - masm32:乘法和除法的绝对崩溃,但是(如果我错了,请纠正我)发新帖子而不是添加更尊重论坛社区对旧的评论并使其脱离主题。