汇编新手求教关于imul乘法问题
理论上32位数乘32位数结果应该得64位数,高位存在edx,低位存在eax里,然后汇编的结果与理论值不一样....
求高手解惑~~
代码贴上
结果
另外,如果我想在C程序中输入两个整数,然后调用汇编子程序对这两个数求积,在主程序中打印计算结果,那么返回值的问题怎么解决呢?edx:eax是两个值.....
新手各种菜,谢谢各位高手解答。
2012-12-07 20:44
2012-12-07 22:41
2012-12-07 22:45
程序代码:;#Mode=CON
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
include macro.asm
.data?
buffer db 100 dup(?)
.const
szfmt db '%X%X',0Dh,0Ah,0
.CODE
START:
xor edx,edx
mov eax,10000000
mov ebx,10000000
cdq
imul ebx
invoke wsprintf,addr buffer,addr szfmt,edx,eax
invoke StdOut,addr buffer
invoke StdIn,addr buffer,sizeof buffer
invoke ExitProcess,0
end START
2012-12-08 07:51

2012-12-08 07:52

2012-12-08 07:57