用汇编写64位程序与32位下有以下几点不同:
1,所用的寄存器不同于32下的eax,ebx,ecx,edx,esi,edi,esp,ebp等,在64位下是rax,rbx,rcx,rdx,rsi,rdi,rsp,rbp,此外又增加了r8,r9,r10,r11,r12,r13,r14,r15等寄存器。但eax,ax,ah,al等依然可用,且增加了spl,bpl等8位寄存器调用,r8等也可以用r8d,r8w,r8b进行32位,16位,8位的调用。
2,函数调用参数传递不同于32下的stdcall规范,而采用fastcall,前四个参数为别放入rcx,rdx,r8,r9四个寄存器中,并在堆栈中留出4*8=32个字节的空间,多于四个的参数放入堆栈。
3,函数调用后,由调用者负责堆栈回收。
看一个例子吧:
include \masm64\inc\user32.inc ;头文件
includelib \masm64\lib\user32.lib ;库文件
.data ;定义数据段
strTittle db "Hello",0
strCaption db "How are you",0
.code ;代码段
Main proc ;入口过程,需在汇编时定义
sub rsp,28H ;为前四个参数预留堆栈空间
xor rcx,rcx ;第一个参数0放入rcx中
lea rdx,strCaption ;把要显示的字符串地址做为第二个参数放入rdx中
lea r8,strTittle ;把消息框的标题字符串地址做为第三个参数放入r8中
xor r9,r9 ;把第四个参数0 放入r9中
call MessageBoxA ;调用MessageBoxA函数
add rsp,28H ;堆栈清理
ret ;返回
Main ends
end
有什么汇编软件适合64位的WIN7系统
去下载一个DOSBox 在里面能使用32位下能用的那些masm、link和debug程序
win7 64位汇编语言软件求求!!!!
Masm32不行吗?我的Win7 64位,一直在用这个。
传说Aogosoft官网有个IDE耶!可以语法加亮 ,函数 自动提示 ,应该可以在Win7 64位下运行。
其实它们用的都是ml.exe编译器,和link.exe链接器,所以只要有这两个东西,再加上库文件[Lib]和包含文件[Include] 就可以。
对了,我讲的是win32汇编,如果是16位汇编,那更简单,就只要那两个东西就行了,建议下载一个Masm32,内含32位编译器和16位编译器,而且有许多工具,当然32程序 可以在win7 64位下运行,但是16位不可以运行,如果有16位系统安装在虚拟机上,可以在上面实验,或直接在虚拟机中编译、链接、运行、调试。
不能用可能没有购买注册,或软件文件丢失,这个软件用的不也是MASM 6.0吗!,也就是ml.exe和link.exe,即使你写好代码,生成的程序还是不能运行的
你下个虚拟机,在里面装个windows2000或windows 98,在虚拟机里弄(下一个MASM 6.0就OK了,不用这个软件 ), 完美的很!
以前我学16位汇编就是:虚拟机VMware+Windows2000+MASM 5.0
那个软件听人说,那软件 本身有问题,如果你在源程序中写了非法指令,没有任何提示, 软件直接崩溃,估计是个没有多少水品的人写的软件,竟然还是收费软件。
如果觉得我上面的方法复杂,你就下载一个dosbox,刚才下了一个你那个软件,在虚拟机中研究它,大概用VC写的,有虚拟机壳保护,不好破解, 它就是dosbox实现16位程序功能,你可以打开你的软件安装目录,它的目录下竟然有个dosbox,所以你就不用下载 dosbox,你双击那个dosbox.exe就可以运行dosbox,在dosbox运行你的16位程序不会有问题 的,它应该有 ml.exe 和link.exe等工具,你将下面的代码复制到记事本中保存为xxx.bat,注意拓展名为bat:
rem #####################################
set PATH=C:\JMSOFT\Masm\bin\;C:\JMSOFT\Masm;%PATH%
cmd
rem #####################################
注意C:\JMSOFT\Masm\是你的软件安装目录
保存后,双击即可运行, 比如你有个:1.asm
在命令行输入:masm 1.asm
如果代码没严重 错,就会常 产生一个1.obj
在命令行输入:link 1.obj
如果代码没错,产生一个1.exe
打开dosbox 1.exe,运行1.exe 。。。
说的够详细了吧
汇编适合WIN7 64位操作系统的软件?
有个软件 叫轻松汇编 但是定义变量或者标号不能是英文单词。这是作者规定的 一般来说,汇编是允许的。。
请问有什么汇编语言是可以开发64位软件的?
你概念不清,C、C#、C++这是高级语言,汇编是低级语言~
高级语言
汇编语言
操作系统
机器语言
从下往上这是他们的关系
学汇编,win7,64位应该下载什么软件能编汇编呢?
64位OS不支持16位程序的运行。
你所编译的汇编程序会产生16位DOS程序。所以没有软件可以运行。
但有办法可以解决:
在你的64位系统安装一个虚拟机(VMwar),然后在虚拟机里安装一个32位系统完成你的需求;
安装win-masm或其它你熟悉的汇编语言,应该就OK了。
求一个能在win7 64位系统下运行的未来汇编软件,谢谢~
什么版本都可以,win7专业版以上去微软官方网站下载XP mode安装后就可以用XP软件了。
家庭版和i3以下的intel CPU电脑果断洗洗睡。
我的是win7 家庭版的,i3的处理器,是不是只能装虚拟机了?
XP mode就是个虚拟机,不过不支持家庭版的,i3的处理器支持xp mode需要的虚拟化,貌似现在只能用虚拟机装了 。去网上下载wmware绿色版的吧,才几十兆。
当然你也可以再装个XP系统
有什么汇编软件能在64位win7系统运行
借助DOSBox;
一. DOSBox软件,调试程序。
二. 开始安装,双击打开DOSBox软件,按步骤进行安装,安装目录任选。
三. 安装成功后打开DOSBox, 就可以看到一个非常熟悉的界面了,和电脑里的命令提示符DOS窗口差不多。
四. 安装完DOSBox后,我们就能运行汇编后的程序了。
转载请注明出处51数据库 » 64位汇编软件 64位程序怎么用汇编写