两个32位无符号数乘法程序
data segmentmulnum dw 0000,0ffffh,0000,0ffffh,4 dup(?)
data ends
stack segment para stack'stack'
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,
ss:stack,es:data
start proc far
begin: push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov es,ax
lea bx,mulnum
mulu32: mov ax,[bx]
mov si,
mov di,
mul si
mov ,ax
mov ,dx
mov ax,
mul si
add ax,
adc dx,0
mov ,ax
mov ,dx
mov ax,
mul di
add ax,
adc dx,
mov ,ax
mov ,dx
pushf
mov ax,
mul di
popf
adc ax,
adc dx,0
mov ,ax
mov ,dx
ret
start endp
code ends
end begin
为什么在MSAM上link时会出错!!!!!!!
求助大佬们,在线等
上面代码有的地方误用全角字符了,修改了以下几处,编译连接正常。
1. assume cs:code,ds:data,ss:stack,es:data (写成一行)
2. mulu32: movax,[bx] (中括号误用了全角)
3. mov ,dx (逗号误用了全角)
superbe 发表于 2018-11-23 11:35
上面代码有的地方误用全角字符了,修改了以下几处,编译连接正常。
1. assume cs:code,ds:data,ss:stack,e ...
哦哦,谢谢 superbe 发表于 2018-11-23 11:35
上面代码有的地方误用全角字符了,修改了以下几处,编译连接正常。
1. assume cs:code,ds:data,ss:stack,e ...
仿照两个32位数相乘的例子写一个两个64位数相乘,我用的是扩展的寄存器,为什么没有结果输出呢?还有就是两个32数相乘也没有结果输出,在cmd命令行中运行后就是新建了一个cmd命令行,也没有什么输出?感到好困惑?如果你有时间,还望你告知?再次感谢你对问题的回答。 程序中没有添加输出结果的代码 superbe 发表于 2018-11-25 20:54
程序中没有添加输出结果的代码
怎么添加还望大佬指点指点,我的汇编没有学好,万分感谢 本帖最后由 superbe 于 2018-11-27 15:28 编辑
添加了显示代码 看这样行不行。我也是初学哈。上传的代码显示不正常,只好上传文件了。
superbe 发表于 2018-11-27 15:17
添加了显示代码 看这样行不行。我也是初学哈。上传的代码显示不正常,只好上传文件了。
为什么你的代码在我的MASM 615中运行出错,我在虚拟机中xp系统中装的 水柔炎 发表于 2018-11-28 09:40
为什么你的代码在我的MASM 615中运行出错,我在虚拟机中xp系统中装的
能把你的.exe文件发一下吗?谢谢 我把assume cs:code....一行放错地方了(在masm5.0里不报错),你还放到原来code segment下,masm6.15就不报错了。
虚拟机xp在cmd窗口下运行如果没有显示结果,按Alter+Enter把cmd窗口全屏再执行。
感觉还是dosbox好用。 superbe 发表于 2018-11-28 12:17
我把assume cs:code....一行放错地方了(在masm5.0里不报错),你还放到原来code segment下,masm6.15就不报 ...
谢谢,看到结果了,非常感谢 superbe 发表于 2018-11-28 12:17
我把assume cs:code....一行放错地方了(在masm5.0里不报错),你还放到原来code segment下,masm6.15就不报 ...
如果不用子程序调用,是否可以写出两个64位数字相乘,得到一个128位的数字,用eax等寄存器 参考上面32位改写的64位乘法的程序,在masm32下编译连接,CMD窗口下运行。验证下结果对不对。
Project->Console Assemble & Link。包里有EXE文件。
superbe 发表于 2018-12-5 11:37
Project->Console Assemble & Link。包里有EXE文件。
谢谢,我已经知道了,我们的老师讲解了,他用.386的写了出来
页:
[1]