环境配置
下载 Recent\Intel汇编语言程序设计_irvine_lib.rar和ml_from_masm32.rar。
将Recent\Intel汇编语言程序设计_irvine_lib.rar解压到C:\asm\irvine目录下,将ml.exe和ml.err拷贝到VC的Microsoft Visual Studio\VC98\Bin目录中。
用管理员身份打开vc6,新建一个win32 console application空工程。
新建一个text file,粘贴下面代码,保存为text1.asm,右键insert file to the project,然后拖拽到source files目录下。
.386 ; 指示MASM使用386指令集
.model flat, stdcall ; 设置内存模型为平坦模型,并使用stdcall调用约定
option casemap:none ; 不区分大小写
includelib msvcrt.lib
printf PROTO C :ptr sbyte, :vararg
.data
szMsg byte "Hello World, bo!", 0ah, 0
.code
start:
mov eax, OFFSET szMsg
invoke printf, eax
ret
end start
tools->options->directories,include files和library files都加上C:\asm\irvine路径。
ml /c /coff /Fo$(TargetDir)\$(InputName).obj $(InputPath)
$(TargetDir)\$(InputName).obj
右键->setting,选择setting for all configurations,然后选中所有asm文件,在右侧commands输入第一行命令,在outputs输入第二行命令。
assem1 files->settings->link,设置all configurations,在object/library module ”中加入irvine32.lib。
现在可以编译运行了。
调试窗口
注意重新用管理员身份打开vc6可能会丢失环境配置,要检查一下前面配置还在不在。
INCLUDE irvine32.inc
.data
vb1 byte 1,2,3
.code
main proc
mov esi,offset vb1
mov al,[esi]
inc esi
mov al,[esi]
inc esi
mov al,[esi]
exit ; push 0 ;call ExitProcess
main endp
end main
F10进入调试模式,view->debug windows->register,然后在汇编界面右键把code bytes开启。
F11进入_main@0函数,然后可以F10单步执行,或者在某一行F9打断点,F5执行直到断点所在行。(必须在汇编界面才能打断点,不然会显示断点无用)。