DOS环境新增32位指令的汇编格式

指令汇编格式
指令功能简介
双精度移位
SHLD r16/r32/m16/m32,r16/r32,i8/CL
将r16/r32的i8/CL位左移进入r16/r32/m16/m32
SHRD r16/r32/m16/m32,r16/r32,i8/CL
将r16/r32的i8/CL位右移进入r16/r32/m16/m32 位扫描
BSF r16/r32,r16/r32/m16/m32
前向扫描
BSR r16/r32,r16/r32/m16/m32
后向扫描
BT r16/r32,i8/r16/r32
测试位
位测试
BTC r16/r32,i8/r16/r32
测试位求反
BTR r16/r32,i8/r16/r32
测试位复位
BTS r16/r32,i8/r16/r32
测试位置位
条件设置
SETcc r8/m8
条件成立,r8/m8=1;否则, r8/m8=0
系统寄存器传送
MOV CRn/DRn/TRn,r32
装入系统寄存器
MOV r32,CRn/DRn/TRn
读取系统寄存器
BSWAP r32
字节交换
多处理器
XADD reg/mem,reg
交换加
CMPXCHG reg/mem,reg
INVD
高速缓存无效
高速缓存
WBINVD
回写及高速缓存无效
INVLPG mem
TLB无效
CMPXCHG8B m64
8字节比较交换
CPUID
返回处理器的有关特征信息
RDTSC
EDX.EAX←64位时间标记计数器值Pentium指令
RDMSR
EDX.EAX←模型专用寄存器值
WRMSR
模型专用寄存器值←EDX.EAX
RSM
从系统管理方式返回
CMOVcc r16/r32,r16/r32/m16/m32
条件成立,r16/r32←r16/r32/m16/m32 Pentium Pro指令
RDPMC
EDX.EAX←40位性能监控计数器值
UD2
产生一个无效操作码异常。

合集下载

32位操作系统下如何调试汇编程序

32位操作系统下如何调试汇编程序
32位操作系统中如何调试汇编程序
步骤一:安装汇编调试软件TASM;
步骤二:运行命令提示符,设置环境;
步骤三:编写汇编程序,编译、连接和执行汇编程序。
步骤一:安装TASM
将TASM.ZIP解压缩到D盘根目录下即可,不需要安和调试汇编程序所需要的
命令文件。 在d:\tasm\路径下新建一个文件夹myAsm作为自己的工作文件夹,
步骤三:编写一个小程序
汇编程序的源文件后缀为.asm;编译源文件,生成后缀为.obj 的目标文件;连接目标文件,生成后缀为.exe的可执行文件。在DOS 窗口中输入可执行文件名,直接运行可执行文件。 步骤1:编辑源文件; 将exer1.asm文件复制到myAsm文件夹下。我们可以用记事本打 开源文件exer1.asm,添加自己的代码并保存。 选中记事本中菜单 查看->状态栏,记事本窗口右下角显示光标 所在的行号和列号。
我们编写的汇编程序都存放在这个文件夹下。
步骤二:运行命令提示符,设置环境
运行附件中的命令提示符,会产生一个DOS窗口。在DOS窗口中依 序输入以下DOS命令,设置运行环境,方便后续执行汇编程序。 命令1:d: 该命令是将DOS窗口的当前路径切换为D盘根目录。 命令2:cd tasm 将当前路径设置为tasm,此时用dir命令可以看到tasm下的文件和 文件夹。 命令3:path d:\tasm\bin\ 该命令将d:\tasm\bin\设置为DOS系统的搜索路径。
步骤二:运行命令提示符,设置环境
命令4:cd myAsm 切换当前路径为我们的工作文件夹,该文件夹下存放有我们编写 的汇编源文件。 可以用dir命令显示当前路径下的所有文件。
此时调试汇编程序的DOS环境就已经设置完毕。如果想要结束DOS

32位汇编语言01

32位汇编语言01

4. 段选择器
• 16位段寄存器保存16位段选择器 • 段选择器指向64位段描述符(Descriptor) • 段描述符包括段基地址

平展存储模型:指向地址0位置 段式存储模型:指向线性地址空间不同的段 实地址存储模型:保存段基地址的高16位
段寄存器 段描述符 主存空间
段选择器 段基地址
28
微处理器
外部设备
8
软件
第1章 汇编语言基础
1.2.1 硬件组成
系统总线 CPU 运算器 主存储器 辅助存储器 I/O 接 口 输入设备 输出设备
控制器 寄存器
9
程序的执行过程 汇编语言程序员将硬件抽象为: 寄存器、存储器地址和输入输出地址
第1章 汇编语言基础
1.2.2 寄存器(Register)
12
既是一个整体 又可独立使用
16 15 87 0
AH AX
AL
EAX
第1章 汇编语言基础
通用寄存器的名称
EAX EBX ECX EDX ESI EDI EBP ESP
13
Accumulator Base Counter Data Source Index Destination Index Base Pointer Stack Pointer
第1章 汇编语言基础

10
IA-32常用寄存器
11
8个32位通用寄存器 6个16位段寄存器 1个32位标志寄存器 1个32位指令指针 第1章 汇编语言基础
1. 通用寄存器
• 处理器最常使用的整数通用寄存器 • 可用于保存整数数据、地址等 • 8个32位通用寄存器
EAX,EBX,ECX,EDX ESI,EDI,EBP,ESP • 8个16位通用寄存器 AX,BX,CX,DX 31 SI,DI,BP,SP • 8个8位通用寄存器 AH,BH,CH,DH AL,BL,CL,DL

DOS环境新增32位指令的汇编格式

DOS环境新增32位指令的汇编格式

DOS环境新增32位指令的汇编格式指令汇编格式指令功能简介双精度移位SHLD r16/r32/m16/m32,r16/r32,i8/CL将r16/r32的i8/CL位左移进入r16/r32/m16/m32 SHRD r16/r32/m16/m32,r16/r32,i8/CL将r16/r32的i8/CL位右移进入r16/r32/m16/m32 位扫描BSF r16/r32,r16/r32/m16/m32前向扫描BSR r16/r32,r16/r32/m16/m32后向扫描BT r16/r32,i8/r16/r32测试位位测试BTC r16/r32,i8/r16/r32测试位求反BTR r16/r32,i8/r16/r32测试位复位BTS r16/r32,i8/r16/r32测试位置位条件设置SETcc r8/m8条件成立,r8/m8=1;否则, r8/m8=0系统寄存器传送MOV CRn/DRn/TRn,r32装入系统寄存器MOV r32,CRn/DRn/TRn读取系统寄存器BSWAP r32字节交换多处理器XADD reg/mem,reg交换加CMPXCHG reg/mem,regINVD高速缓存无效高速缓存WBINVD回写及高速缓存无效INVLPG memTLB无效CMPXCHG8B m648字节比较交换CPUID返回处理器的有关特征信息RDTSCEDX.EAX←64位时间标记计数器值Pentium指令RDMSREDX.EAX←模型专用寄存器值WRMSR模型专用寄存器值←EDX.EAXRSM从系统管理方式返回CMOVcc r16/r32,r16/r32/m16/m32条件成立,r16/r32←r16/r32/m16/m32 Pentium Pro指令RDPMCEDX.EAX←40位性能监控计数器值UD2产生一个无效操作码异常。

汇编addss指令

汇编addss指令

汇编addss指令
ADDSS 是x86 架构下的SIMD (单指令多数据) 指令,属于SSE (Streaming SIMD Extensions) 指令集的一部分。

它主要用于浮点数计算。

ADDSS 指令执行单精度浮点数(32位)的加法操作。

它操作两个源操作数,并将结果存储在目标操作数中。

指令格式如下:
css
ADDSS xmm1, xmm2/m32
xmm1:目标操作数,一个128 位的XMM 寄存器,用于存储加法结果。

xmm2:第一个源操作数,也是一个128 位的XMM 寄存器。

m32:第二个源操作数,一个32 位的内存地址。

操作:
xmm2 的低32 位与m32 的内容进行加法操作。

结果存储在xmm1 的低32 位中,而xmm1 的高96 位保持不变。

注意:ADDSS 只操作低32 位的单精度浮点数,而忽略其他位。

在实际应用中,这种指令通常用于图形处理、物理模拟、科学计算等需要高速浮点运算的场景。

例如,下面的汇编代码展示了如何使用ADDSS 指令:
assembly
; 假设xmm0 中存储了一个单精度浮点数a
; 假设内存地址[address] 中也存储了一个单精度浮点数b
addss xmm0, [address] ; 将a 和b 相加,结果存储在xmm0 中
需要注意的是,为了充分发挥SSE 指令集的性能,通常需要结合其他指令和数据对齐技术来使用。

同时,现代的处理器和编译器也提供了更高级别的SIMD 指令集,如AVX、AVX2、AVX-512 等,这些指令集提供了更宽的数据路径和更多的操作功能。

Windows 环境下32 位汇编语言程序设计(罗云彬)_02

Windows 环境下32 位汇编语言程序设计(罗云彬)_02

选项 /c(常用) /coff(必用) /Cp(常用) /Fo filename /Fe filename
表 2.1 列出了不同版本 MASM 编译器的区别。
表 2.1 MASM 编译器各版本的区别
版本 MASM 4.00
MASM 5.00 MASM 5.10 MASM 5.10B MASM 6.00
MASM 6.00A MASM 6.00B MASM 6.10 MASM 6.10A MASM 6.11 MASM 6.11C MASM 6.12 MASM 6.13 MASM 6.14 MASM 6.15
/ddk/ddk98.asp
注意:整个 Win98ddk.exe 文件有 18 MB 之大!得到了 MASM 6.11d 之后,可以从 Microsoft 获取升级软件一直升级到最新的版本,升级包的下载地址是:
ftp:///softlib/mslfiles
不同版本 MASM 产生的 obj 文件的格式也不相同,在 DOS 和 Win16 时期,Microsoft 使 用的 obj 文件格式为 OMF 格式(Intel Object Module Format),到了 Win32 时期后改用了 COFF 格式(Common Object File Format),原因之一是 COFF 格式更像最终的 PE 文件,在链接的 时候可以做更少的处理,MASM 从 6.11 版本开始支持 COFF 格式。
资源文件中可以包括对话框、快捷键、菜单、字符串、版本信息和一些图形资源等内容。 资源文件的源文件是一种类似 脚本 的文本文件。其中用不同的语法定义了不同类型的资 源。资源脚本文件的扩展名一般为 rc,经过资源编译器编译成资源文件*.res。资源脚本文件 同样用到很多预定义值,所以软件包中一般也有资源头文件可供源文件来导入。MASM32 软 件包中的资源头文件是 Resource.h。

32位汇编指令

32位汇编指令

32位CP‎U所含有的‎寄存器有:‎4个数‎据寄存器(‎E AX、E‎B X、EC‎X和EDX‎)2个变‎址和指针寄‎存器(ES‎I和EDI‎) 2个指‎针寄存器(‎E SP和E‎B P)‎6个段寄存‎器(ES、‎C S、SS‎、DS、F‎S和GS)‎1个指令‎指针寄存器‎(EIP)‎1个标志‎寄存器(E‎F lags‎)1、‎数据寄存器‎数据寄存‎器主要用来‎保存操作数‎和运算结果‎等信息,从‎而节省读取‎操作数所需‎占用总线和‎访问存储器‎的时间。

‎32位CP‎U有4个3‎2位的通用‎寄存器EA‎X、EBX‎、ECX和‎E DX。

‎对低16位‎数据的存取‎,不会影响‎高16位的‎数据。

这‎些低16位‎寄存器分别‎命名为:A‎X、BX、‎C X和DX‎,它和先前‎的CPU中‎的寄存器相‎一致。

4‎个16位寄‎存器又可分‎割成8个独‎立的8位寄‎存器(AX‎:AH-A‎L、BX:‎B H-BL‎、CX:C‎H-CL、‎D X:DH‎-DL),‎每个寄存器‎都有自己的‎名称,可独‎立存取。

‎程序员可利‎用数据寄存‎器的这种“‎可分可合”‎的特性,灵‎活地处理字‎/字节的信‎息。

寄‎存器EAX‎通常称为累‎加器(Ac‎c umul‎a tor)‎,用累加器‎进行的操作‎可能需要更‎少时间。

可‎用于乘、‎除、输入/‎输出等操作‎,使用频率‎很高;‎寄存器EB‎X称为基地‎址寄存器(‎B ase ‎R egis‎t er)。

‎它可作为存‎储器指针来‎使用;‎寄存器EC‎X称为计数‎寄存器(C‎o unt ‎R egis‎t er)。

‎在循环和‎字符串操作‎时,要用它‎来控制循环‎次数;在位‎操作中,当‎移多位时,‎要用CL来‎指明移位的‎位数;‎寄存器ED‎X称为数据‎寄存器(D‎a ta R‎e gist‎e r)。

在‎进行乘、除‎运算时,它‎可作为默认‎的操作数参‎与运算,也‎可用于存放‎I/O的端‎口地址。

32位汇编语言程序设计上机指导

《32位汇编语言程序设计》上机指导《32位汇编语言程序设计》上机指导 (1)实验一建立windows环境下32位汇编语言开发环境 (2)实验2 指令格式与寻址方式 (4)实验3 数据操作编程 (5)实验4 分支和循环程序设计 (6)实验5 子程序设计 (8)实验6 输入输出程序设计 (9)实验7:字符串操作 (10)实验8:宏结构设计 (11)实验9:混合编程 (12)Windows环境下32位汇编语言开发环境的建立 (13)调试程序Windbg (19)宏汇编命令ML和连接命令LINK常用参数速查 (22)输入输出宏命令 (23)实验1 建立windows环境下32位汇编语言开发环境实验目的:建立windows环境下32位汇编语言开发环境,并熟悉它的使用方法。

实验要求:(1)建立windows环境下32位汇编语言开发环境;(2)熟悉自己建立的开发环境的使用方法;(3)熟悉调试工具的使用实验内容:(1)定制masm32集成开发环境,使之符合教学要求。

(2)分别建立汇编,连接,和汇编&连接批处理命令,能够生成包含调试信息的目标文件,列表文件,以及能够进行调试的可执行WIN32控制台程序。

(3)建立16位和32位汇编语言框架程序。

(4)在自己建立的开发环境下汇编,连接,运行教材中的例3-1和例3-2。

实验步骤:1、安装开发环境运行《32位汇编语言程序设计》教材配套开发环境软件“开发工具.exe”,将MASM32安装在根目录下(例如:c:\masm32)。

接着运行Exmasm32.exe,将其它软件安装在masm32的目录下(例如:c:\masm32)。

建立masm32文件夹中的qEditor.exe和Windbg.exe桌面快捷方式。

2、定制开发环境修改文件msm32\bin\buildc.bat中的内容,使得执行Project\Console Assemble & Link后能够汇编连接可调试的32位控制台应用程序,同时生成列表文件。

罗云彬的Win32汇编教程

罗云彬的Win32汇编教程之一Win32汇编的环境和基础1.32位环境简介在Dos下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述Dos系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在Dos下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没有其他程序可以把它终止掉。

Dos下的编程思路是“单任务”的,你只要认为你的程序会按照你的流程一步步的执行下去,不必考虑先后问题(当然程序可能会被中断打断,但你可以认为它们会把环境恢复,如果中断程序没有把环境恢复,那是他们的错)。

在内存管理方式上,Dos汇编和Win32汇编也有很多的不同:Dos工作在实模式下,我们可以寻址1M的内存,寻址时通过段寄存器来制定段的初始地址,每个段的大小为64K,超过1M的部分,就只能把他作为XMS使用,也就是说,只能用作数据存放使用而无法在其中执行程序。

而Windows在保护模式下执行,这里所有的资源对应用程序来说都是被“保护”的:程序在执行中有级别之分,只有操作系统工作在最高级--0级中,所有应用程序都工作在3级中(Ring3),在Ring3中,你无法直接访问IO端口,无法访问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的,会在Windows的屏幕上冒出一个熟悉的蓝屏幕来。

只有对Ring0的程序来说,系统才是全开放的。

在内存方面,Windows使用了处理器的分页机制,使得对应用程序来说,所有的内存都是“平坦”的,你不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(可以参见80386手册方面的书籍),你可以直接指定一个32位的地址来寻址4GB的内存。

8086汇编和32位汇编教程

第二节 8088 汇编速查手册一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第一个操作数里 )XLAT 字节查表转换.── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令───────────────────────────────────────ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEC 求反(以 0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND 与运算.OR 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如 SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如 MOV CL,04SHL AX,CL四、串指令───────────────────────────────────────DS:SI 源串段寄存器 :源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令 (长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为 "0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 "1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令───────────────────────────────────────DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.第三节 8088 汇编跳转一、状态寄存器PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:1 5 1413121119 8 7 6 5 4 3 2 1 0OFDFIFTFSFZFAF PF CF条件码:①OF(Overflow Flag)溢出标志。

实验1_建立windows环境下32位汇编语言开发环境

实验1 win 32汇编程序的编程环境实验步骤:1安装开发环境解压masm32v11r.zip,并运行MASM32 SDK开发软件“install.exe”,将MASM32安装在根目录下。

2 EditPlus多功能编辑器EditPlus的配置方法如下:1、在“工具”->“首选项…”中转到“文件类型及语法”。

2、在“文件类型”中选中WIN32ASM文件类型,并进行修改,将文件扩展名设为“ASM”,扩展名设为“ASM”。

语法文件选择asm.stx。

3 定制开发环境为这个环境建立一个设置环境变量的批处理文件 Var.bat,其内容如下:@echo offset Masm32Dir=f:\Masm32set include=%Masm32Dir%\Include;%include%set lib=%Masm32Dir%\lib;%lib%set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH%set Masm32Dir=echo on文件中设置了3个环境变量:●include变量指定头文件的搜索目录。

在asm和rc文件中可以根据这个变量寻找include语句指定的文件名,避免了使用头文件的全路径名,这样以后移动了MASM32的安装位置就不必修改每个源文件中的include语句。

如果使用Visual C++的集成环境来建立rc文件的话,为了使rc.exe 能找到头文件,还要把VC++安装目录下的Include和MFC\Include目录包含进来,多个路径之间用“;”隔开;● lib变量指定导入库文件的搜索目录。

在asm文件中可以根据这个变量寻找includelib语句指定的导入库文件,Link.exe也根据这个变量寻找库文件的位置。

● path变量就不必多解释了。

它只是使我们不必在键入命令时带长长的路径而已。

4、使用EditPlus建立TEST.asm源程序并保存.386.model flat,stdcalloption casemap:noneinclude windows.incinclude user32.incincludelib user32.libinclude kernel32.incincludelib kernel32.lib.constszCaption db '恭喜',0szText db '当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0.codestart:invoke MessageBox,NULL,offset szText,offset szCaption,MB_OKinvoke ExitProcess,NULLend start5 、建立汇编连接32位应用程序的makefile文件make可以根据文件的时间正确判断文件的新旧并执行相应的步骤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档