注册 登录
编程论坛 汇编论坛

汇编新手求教关于imul乘法问题

lxb07 发布于 2012-12-07 20:44, 595 次点击
理论上32位数乘32位数结果应该得64位数,高位存在edx,低位存在eax里,

然后汇编的结果与理论值不一样....

求高手解惑~~

代码贴上

只有本站会员才能查看附件,请 登录


结果

只有本站会员才能查看附件,请 登录


另外,如果我想在C程序中输入两个整数,然后调用汇编子程序对这两个数求积,在主程序中打印计算结果,那么返回值的问题怎么解决呢?edx:eax是两个值.....

新手各种菜,谢谢各位高手解答。
5 回复
#2
有容就大2012-12-07 22:41
32位那个函数不懂。坐等大牛。
#3
lxb072012-12-07 22:45
回复 2楼 有容就大
等的急死我了...明天就要用....这位版主你帮下忙呗...
#4
wp2319572012-12-08 07:51
如果仅仅是输出 到是可以变通输出
程序代码:
;#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



[ 本帖最后由 wp231957 于 2012-12-8 07:53 编辑 ]
#5
wp2319572012-12-08 07:52
输出样例:
D:\MASMPlus\Project\t1>test1
5AF3107A4000
=10进制下的10000000*10000000
#6
wp2319572012-12-08 07:57
以下是引用lxb07在2012-12-7 20:44:15的发言:


另外,如果我想在C程序中输入两个整数,然后调用汇编子程序对这两个数求积,在主程序中打印计算结果,那么返回值的问题怎么解决呢?edx:eax是两个值.....
   我倒是没有试验,我觉得这样做应该可行,子函数形参返回低32位值  函数本身返回高32位值
1