| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13486 人关注过本帖
标题:求助大佬,如何用32位汇编语言对64位数据进行操作,比如加法,减法,乘法, ...
取消只看楼主 加入收藏
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:7 
求助大佬,如何用32位汇编语言对64位数据进行操作,比如加法,减法,乘法,除法。
32位汇编语言对64位数据进行一系列操作。
1.64位+64位
2.64位*64位
3.64位-64位
4.64位无符号整数二进制转十六进制输出
主要是这四个问题,求助大佬
搜索更多相关主题的帖子: 操作 除法 位数 汇编语言 乘法 
2021-06-25 19:23
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
回复 2楼 Valenciax
谢谢大佬解答,加法和减法没什么问题了,但是乘法还是没有实现出来
2021-06-28 15:22
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
好像出了一点问题,不管输入什么数,答案都一样,这是什么情况啊,我是用masm32编译运行的。求大佬再辛苦看看。
2021-06-28 21:03
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
回复 4楼 Valenciax
刚才好像回复错地方了,问题在5楼。
2021-06-28 21:05
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
回复 7楼 Valenciax
啊,谢谢大佬,那我再看看
2021-06-29 09:19
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
回复 7楼 Valenciax
源代码在我这里运行有点问题,就改了一点点,然后结果不太一样
程序代码:
.386
include io32.inc
;.model flat,stdcall
.data


 first dd 12345678h,87654321h  ;第1乘数,低位在前,高位在后
 second dd 0abcdabcdh,11223344h ;第2乘数,低位在前,高位在后
 result dd 0,0,0,0 ;结果,低位在前,高位在后
 fLsL dd ?,? ;first低位*second低位的暂存结果
 fHsL dd ?,? ;first高位*second低位的暂存结果
 fLsH dd ?,? ;first低位*second高位的暂存结果      
 fHsH dd ?,? ;first高位*second高位的暂存结果
;data ends

.code
;main proc
start:

 mov eax,[first+0]      ;獲取first低位
 mov ebx,[second+0]     ;獲取second低位
 mul ebx        ;相乘    
 mov [fLsL+0],eax    ;存取低位*低位的結果低位
 mov [fLsL+2],edx     ;存取低位*低位的結果高位
 mov eax,[first+2] 


 mov ebx,[second+0]


 mul ebx        ;以下解釋同上
 mov [fHsL+0],eax


 mov [fHsL+2],edx     


 mov eax,[first+0] 


 mov ebx,[second+2]


 mul ebx


 mov [fLsH+0],eax


 mov [fLsH+2],edx 


 mov eax,[first+2]


 mov ebx,[second+2] 


 mul ebx


 mov [fHsH+0],eax


 mov [fHsH+2],edx 
;            ;至此相乘結束,以下結果相加
 mov eax,[fLsL+0]


 mov [result+0],eax     ;結果的低位
 mov eax,[fLsL+2]


 add eax,[fHsL+0]


 adc dword ptr [result+4],0    ;若有進位加前一位
 add eax,[fLsH+0]


 adc dword ptr [result+4],0


 mov [result+2],eax


 mov eax,[fHsL+2]


 add eax,[fLsH+2]


 adc dword ptr [result+6],0


 add eax,[fHsH+0]


 adc dword ptr [result+6],0


 add eax,[result+4]         


 adc dword ptr [result+6],0


 mov [result+4],eax


 mov eax,[fHsH+2]


 add eax,[result+6]


 mov [result+6],eax


exit 0
end start

图片附件: 游客没有浏览图片的权限,请 登录注册

求助求助
2021-06-30 16:44
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
回复 10楼 Valenciax
昂?是不能改的意思吗,可是我这里运行不了四楼原代码,我只改了这几个地方:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
2021-06-30 17:26
Sky_
Rank: 2
等 级:论坛游民
帖 子:38
专家分:10
注 册:2019-12-17
收藏
得分:0 
大佬太强了,感谢感谢
2021-06-30 17:43
快速回复:求助大佬,如何用32位汇编语言对64位数据进行操作,比如加法,减法,乘 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014913 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved