今天要学习的这本书的封面如下:
目前这本书已经出版到第8版了,我学习使用的是第5版,翻译的作者中有一位是“罗云彬”,就是《Windows 环境下 32 位汇编语言程序设计》的作者,如下:
因为相信作者的实力及翻译水平,就找来学习了。
学习过程中,光看不练,相当于啥也没有学习到,同时,看到书中有作者提到他自己搭建的网站,网站上有视频,也有书籍的全套代码
本书作者使用的是Visual sudio 2010版本,我目前正在使用的是Visual Studio 2022 版本,目前源代码已经在网站上下载下来了,目前就是在VIsual Studio 2022 中进行汇编环境配置,以使用作者提供的源代码进行复现实操。
上面 是作者网站提供的全部源代码的截图。
然后
下载Visual Studio 2022 ,安装Visual C++桌面开发这个模块,一步一步安装下来就可以了。如下所示:
等待全部安装完成后,启动Visual Studio 2022,选择C++空项目,如下:
项目名称、目录等等,根据自己的要求创建即可;
项目new创建后的界面如下:
找到生成依赖项 选择生成自定义
选择 masm --> 确定
新建文件
点击“新建项”后,出现界面如下:
选择cpp文件并在下方手动指定asm后缀
输入以下汇编代码:
; AddTwo.asm - 两个32位整数相加 ; 第三章示例 .386 .model flat, stdcall .stack 4096 ExitProcess PROTO, dwExitCode:DWORD .code main PROC mov eax, 5 add eax, 6 INVOKE ExitProcess, 0 main ENDP END main配置解决方案的平台
调出解决方案的属性,如下:
查看asm文件的属性页
更改为win32,如下:
将压缩包中Irvine_Library文件夹中的文件全部释放到E:\masm\Irvine中,如下图所示:
打开解决方案资源管理器 --> 右击项目名称 --> 选择属性(最下面) --> 选择 Microsoft Macro Assembler --> Include Paths --> 编辑 --> 添加irvine库目录 (如 下图):
将库文件所在的目录的路径填写在include paths中,如下图所示:
打开解决方案资源管理器 --> 右击项目名称 --> 选择属性(最下面) --> 选择“链接器” --> 选择 “常规” --> 选择“附加库目录” --> 编辑 --> 添加irvine库目录 (如 下图)
打开解决方案资源管理器 --> 右击项目名称 --> 选择属性(最下面) --> 选择“链接器” --> 选择 “输入” --> 选择“附加依赖项” --> 编辑 --> 直接编辑写入 irvine32.lib:
上述配置完成后,用汇编代码测试一下效果,如下:
TITLE EXAMPLE include irvine32.inc .data str1 byte "Hello World!", 0 .code main proc mov edx, offset str1 call writestring call crlf exit main endp end main可见,弹出DOS对话框,并成功显示出“Hello World!”。
下面说一下调试的内容:
为程序打上断点
在箭头对应的行号处左击就可以插入断点。
点击F5开始调试
开始调试后,可以根据需要调出各个需要的对话框。
CTRL+ALT+G 打开寄存器
点击F5启动调试后,在调试的菜单栏里面可以看到大量的调试用的工具,如下图所示:
按F11逐步运行
或者点击上方的菜单栏,可以逐语句、逐过程地调试汇编代码。
同时,寄存器查看栏中,会有红色字体标示变化的寄存器。