masm32(MASM32与MASM6.11的区别)
本文目录
MASM32与MASM6.11的区别
masm是16位,masm32是32位的,你写的程序不可能在masm32下编译通过的.因为一个是编译dos程序的一个是编译windows 程序的.给你一个windows下的汇编程序吧!
.386
.model flat,stdcall
option casemap:none
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; Include 文件定义
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 数据段
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
.data
szCaption db ’A MessageBox !’,0
szText db ’Hello, World !’,0
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 代码段
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
.code
start:
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
invoke ExitProcess,NULL
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
end start
masm32怎样用
首先打开masm可执行程序,按照提示把你的后缀名为asm的文件输进去,如果你写的程序没有语法错误的话会生成一个同名的.obj文件;然后打开link可执行程序,同理输入后缀名为obj的文件,中间提示的库信息等如果没有可直接回车跳过,如果没有链接错误的话就可以生成可执行程序了!
请教masm32 写的程序如何调试
masm32 用 debug.exe ?通常推荐的是 OllyDbg 吧,由于汇编的特性,即便是没有辅助调试信息,调试软件里的直接的指令和源程序基本上也是能直接对上的吧。如果非要用 vc6 那样的,也是可以的,编译是再加上 /Zd /Zi 选项,链接时再加上 /debug 选项,也就可以用 vc6 的来进行源程序级的调试了。
masm32问题,关于函数堆栈平衡
谁告诉你
在masm32中一个函数即使堆栈不平衡,在函数的末尾也有mov esp,ebp pop ebp进行平衡
的?
函数开始的push ebp是用来保存ebp寄存器(函数调用者栈帧的栈底)的,同时对与微软系列的编译器,局部变量采用ebp-X来访问
mov edb,esp是函数的调用者的栈帧的栈顶作为一个新的栈帧的开始
两行代码之后
堆栈内容应该是这样的
顶
调用者的栈帧底地址
该函数返回地址
底
现在我再来一句 push eax
此时堆栈变成这样
顶
eax的内容
调用者的栈帧底地址
该函数返回地址
底
此时堆栈已经不平衡
然后我用你的mov esp,ebp pop ebp准备返回
请问能正确返回吗?
当执行到ret的时候堆栈的情况是这样的(甚至ebp的值都不能恢复)
顶
调用者的栈帧底地址
该函数返回地址
底
这样直接返回到了函数开始的时候ebp所以位置了
你说这两个代码能保证函数的返回吗?
函数要正确返回,堆栈必须平衡(排除你自己设置堆栈让ret返回的情况)!
更多文章:
电影api免费接口(API是作什么用的,每台电脑都有吗没有它会怎样谢谢!)
2024年6月29日 11:31
termux使用教程python(termux敲完代码去哪里看运行结果图像)
2024年7月22日 01:30
if if else怎么执行(想请教c语言这种if--else语句如何执行假如: int a=0; if(a==0) {a=1;执行)
2024年7月19日 15:30
java运行软件放固态盘吗(买办公电脑 做java开发用 我应该怎么选电脑,以内存为主还是cpu为主,还是固态硬盘为主最好是)
2024年9月9日 06:15
架构师工资一月多少(如何从三流程序员成长为年薪50W的架构师)
2024年6月29日 03:44
plsqldeveloper使用教程(怎么使用plsql developer)
2024年5月15日 10:55
runtime error 错误怎么解决(游戏途中出现runtimeerror怎么解决)
2024年7月9日 04:05
vlookup根据姓名匹配学号(excel按照姓名自动匹配数据)
2024年7月3日 08:44
advisable(advisable和available的区别)
2024年7月16日 23:26
伟福编译器下载(有谁用过伟福单片机编译器啊我在编译时总是出现“列表文件<.LST>未找到.这是怎么回事啊,)
2024年5月18日 00:55
python是什么东西(Python最近听说又火了一把,人工智能到底是个什么东西呢)
2024年7月3日 20:49
power bi官网首页(PowerBI官方授权账号,近万人注册成功!)
2024年6月29日 02:36