第一个汇编语言程序MASM(第一个汇编语言程序寄存器函数)「第一个汇编器的源代码」

一、本章准备工作Windows环境,x86主机安装MASM软件下载地址:http://www.masm32.com/download.htm我这里安装到了D盘根目录
为方便后面命令行调用,安装以后,可以把D:\masm32\bin目录放到系统环境变量PATH里
本章示例使用d:/masm32/qeditor.exe 可视化开发工具
二、x86 处理器架构8086 的寄存器:AX、BX、CX、DX通常用来存放一般性数据,被称为通用寄存器
16位寄存器所能存储的数据最大值为2162^{16}216-1
8086 CPU的通用寄存器可以分为两个独立的8位寄存器使用
例: AX可分为AH和AL
三、几条简单的汇编指令四、启动qeditor 录入测试程序1. 源代码.386 ; 编译器指令,使用386指令集.model flat, stdcall ; model汇编指令,程序的内存模式, flat是windows程序,没有远近指针,stdcall是windows函数用的参数方式,即参数从右向左传递option casemap :none ; 标签是否区分大小写include \masm32\include\windows.inc ; 包含了Win32 API 的一些常量和函数定义include \masm32\include\kernel32.inc ; 包含了后面使用的ExitProcess函数include \masm32\include\masm32.inc ; 包含了后面使用的StdOut函数,不是标准的Win32函数,由MASM提供includelib \masm32\lib\kernel32.lib ; 库文件includelib \masm32\lib\masm32.lib.data HelloWorld db "Hello World!", 0 ; 定义使用的字符串常量,db代表define byte
最后跟一个NUL,表示ANSI字符集结束符.code ; 开始代码区start: ; 所有的代码要在start标签后、end start前 invoke StdOut, addr HelloWorld ; 调用函数StdOut,参数量HelloWorld的地址
注意StdOut是MASM提供的宏
其它编辑器里可以使用WriteConsole之类win32函数代替
invoke ExitProcess, 0 ; 调用ExitProcessend start
保存文件
2. 编译选择菜单 Project-Assemble ASM file 进行编译,生成obj文件:再选择Link 链接文件,生成可执行文件:运行效果:3. 命令行编译ml /c /Zd /coff hello.asmlink /SUBSYSTEM:CONSOLE hello.obj也可以生成 hello.exe
五、调用Windows API的版本.386.model flat, stdcalloption casemap :noneinclude \masm32\include\windows.incinclude \masm32\include\kernel32.incinclude \masm32\include\user32.incincludelib \masm32\lib\kernel32.libincludelib \masm32\lib\user32.lib.data HelloWorld db "Hello World!", 0.codestart: invoke MessageBox, NULL, addr HelloWorld, addr HelloWorld, MB_OK invoke ExitProcess, 0end start直接在菜单里编译运行:命令行编译的话使用:ml /c /Zd /coff hellow.asmlink /SUBSYSTEM:WINDOWS hellow.obj这里SUBSYSTEM使用WINDOWS代替了CONSOLE,表示是一个Windows GUI程序
第一个汇编语言程序MASM(第一个汇编语言程序寄存器函数)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息