TITLE Add and Subtract ;整数相加减的例子 ;Include文件定义 include Irvine32.inc includelib Irvine32.lib includelib kernel32.lib includelib user32.lib ;代码段 .code main PROC ;定义main过程 mov eax,10000h add eax,40000h sub eax,20000h call DumpRegs ;调用一个显示CPU寄存器值的过程 exit ;调用预定义的MS-Windows函数来终止程序,exit并不是MASM的关键字,而是Irvine32.inc中定义的命令 main ENDP END main ;结束,并定义入口
在练习这个例子的时候,由于Include文件定义不全,导致程序在Link的时候总是报错
比如说是: unresolved external symbol _ExitProcess@4
上述例子的另一种写法,直接调用MS-Windows函数,不使用Irvine32.inc中的定义命令来结束程序。
Title Add and Subtract second includelib Irvine32.lib includelib kernel32.lib includelib user32.lib .386 ;指出了该程序要求的最低CPU(Intel386) .model flat,stdcall ;指示汇编器为保护模式程序生成代码,Stdcall允许调用MS-Windows函数 .stack 4096 ExitProcess PROTO,dwExitCode:DWORD ;PROTO伪指令声明了该程序使用的过程原型:ExitProcess是一个MS-Windows函数,其作用是终止当前进程。 DumpRegs PROTO ; DumpRegs是Irvine32链接库中一个显示寄存器的过程 .code main PROC mov eax,10000h add eax,40000h sub eax,20000h call DumpRegs invoke ExitProcess,0 ; 通过调用ExitProcess来结束程序 main ENDP end main