VC6++配置汇编环境和第一个简单程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Feng512275/article/details/82346911

####准备工作
1.下载并安装VC6++软件
2.下载Irvine32.lib库以及相关文件(Intel 汇编语言程序设计_irvine_lib文件内)
3.下载ml.exe和ml.err文件(ml_from_masm32文件内)

以上准备工作的文件均在我的yun盘内,点我下载


##开始配置

一、在VC6++里面创建一个新的工程,这里我命名为"Na"。
这里写图片描述

二、在"Na"工程里面新建一个文件,取后缀为.asm。我把该文件命名为"nana.asm"。
这里写图片描述

三、点击该"Na"工程里面的:工具–>选项–>目录 。在Include File目录内添加Irvine32.lib库以及相关文件,也就是说把"Intel 汇编语言程序设计_irvine_lib"这个文件夹添加进来,这个文件夹就包含了Irvine32.lib这个库。
这里写图片描述

四、点击该"Na"工程里面的:工具–>选项–>目录 。在LibraryFile目录内添加Irvine32.lib库以及相关文件,也就是说把"Intel 汇编语言程序设计_irvine_lib"这个文件夹添加进来,这个文件夹就包含了Irvine32.lib这个库。
这里写图片描述

五、把ml.exe和ml.err文件放到VC6++的:VC98–>Bin目录下
这里写图片描述

六、点击VC6++左边的视图框的FileView,然后选中刚才的"nana.asm"文件。右键–>设置。在project settings/Custom Build页面中命令行加:

ml /c /coff /Fo$(TargetDir)\$(InputName).obj $(InputPath) 

输出中加上:

$(TargetDir)\$(InputName).obj

这里写图片描述

七、点击"Na"工程,然后再点击:工程–>设置–>连接。在“Project setting”页面的”link”选项卡中“object/library module ”中加入irvine32.lib。
即在对象/库模块里面追加。
这里写图片描述

八、写入代码,运行并分析程序。

; Addition and Subtraction					(AddSubTest.asm)

; Chapter 4 example. Demonstration of ADD, SUB,
; INC, DEC, and NEG instructions, and how
; they affect the CPU status flags.

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

.data
Rval   SDWORD ?
Xval   SDWORD 26
Yval   SDWORD 30
Zval   SDWORD 40

.code
main proc
	; INC and DEC
	mov	ax,1000h
	inc	ax		; 1001h
	dec	ax		; 1000h

	; Expression: Rval = -Xval + (Yval - Zval)
	mov	eax,Xval
	neg	eax			; -26
	mov	ebx,Yval
	sub	ebx,Zval	; -10
	add	eax,ebx
	mov	Rval,eax	; -36

	; Zero flag example:
	mov	cx,1
	sub	cx,1		; ZF = 1
	mov	ax,0FFFFh
	inc	ax			; ZF = 1

	; Sign flag example:
	mov	cx,0
	sub	cx,1		; SF = 1
	mov	ax,7FFFh
	add	ax,2		; SF = 1

	; Carry flag example:
	mov	al,0FFh
	add	al,1		; CF = 1,  AL = 00

	; Overflow flag example:
	mov	al,+127
	add	al,1		; OF = 1
	mov	al,-128
	sub	al,1		; OF = 1

	invoke ExitProcess,0
main endp
end main

九、打上断点,开始简单的调试程序。
Debug调试快捷键:F10
Debug调试一步一步调试:F11
VC6++调出寄存器存储情况:查看–>调试窗口–>Registers

这里写图片描述

这里写图片描述

十、简单分析
把1000h十六进制移到AX寄存器里面,也就是十进制的4096
这里写图片描述

这里写图片描述

这里写图片描述


##结束
打完收工~
后面会陆续介绍汇编的上机代码和分析。

猜你喜欢

转载自blog.csdn.net/Feng512275/article/details/82346911