第4章 masm汇编语言

上传人:今*** 文档编号:107997503 上传时间:2019-10-22 格式:PPT 页数:76 大小:220KB
返回 下载 相关 举报
第4章 masm汇编语言_第1页
第1页 / 共76页
第4章 masm汇编语言_第2页
第2页 / 共76页
第4章 masm汇编语言_第3页
第3页 / 共76页
第4章 masm汇编语言_第4页
第4页 / 共76页
第4章 masm汇编语言_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《第4章 masm汇编语言》由会员分享,可在线阅读,更多相关《第4章 masm汇编语言(76页珍藏版)》请在金锄头文库上搜索。

1、第4章 MASM汇编语言,前面使用的所有指令都可在小汇编下 (DEBUG)使用,由于DEBUG不支持符号地址(即: 标号地址和变量地址),不支持绝大数的伪指令, 所以受到较大的限制,编程效率低,灵活性差。 宏汇编程序克服了上述问题,更有利于人 编写和阅读程序。本章主要介绍其宏汇编的语句格 式、语法规则和指令使用。,是为了简化程序设计,使用一条宏指令语句来代替一段程序,一、 MASM汇编语言的源语句,1. 源语句种类,(1)指令语句,即汇编指令,就是CPU指令系统中指令符号形式, 与机器语言一一对应关系,它是程序执行时执行。,(2)伪指令语句,CPU指令系统中指令。是汇编程序中命令, 是汇编程序

2、的汇编不是过程中执行,功能:内存分配 、定义数据、对数据进行某种处理、连接、宏替换、 列清单、建立段和过程等。,(3)宏指令语句,2. 源语句的格式 (1)指令语句格式 标号:助记符 操作数1,操作数2 ;注释 (2)伪指令语句格式 符号名 定义符 参数1,参数n ;注释 (3)宏指令语句格式 标号: 宏指令名 参数1,参数n ;注释 表示可有可无。,3. 源语句的格式中各项的含义 (1)标号及符号名 标号是表示一条指令所在的地址,即标号是指令的符号地址。 符号名是可表示伪指令定义符所定义的变量名、段名、过程名、数值符号等,,标 号: 助记符 操作数1,操作数2 ;注释,符号名 定义符 参数1

3、,参数n ;注释,标号与符号名最多使用31个字符,且数字不能为第一个字符,可使用以下字符: A.字母AZ(大小写不限) B.数字09 C.特殊字符 $、?、.、_ 助记符、定义符、可编程寄存器名以及其它伪指令中用到的各种符号都不能用作标号和符号名,(2)助记符及定义符 助记符:在指令中表示该语句的操作功能,是指令中操作码的体现。如ADD、MOV等,是由系统定义的。 定义符:是在伪指令使用,表示伪指令语句的操作功能,由汇编程序所规定,程序员只能根据规定使用。 (3)宏指令名 是程序员依需要来命名(规则同符号名),可出现在汇编语言程序的指令序列中,作为一条宏指令来使用。,标 号: 助记符 操作数1

4、,操作数2 ;注释,符号名 定义符 参数1,参数n ;注释,(4)操作数与参数 操作数:在指令中表示指令操作的对象,根据不同指令,在指令中有0个、1个和2个操作数。 参数:是在伪指令或宏指令语句中使用,给出伪指令语句或宏指令语句的参数,参数可以多个或没有。 指令语句操作数有三种形式:,常数操作数 寄存器操作数 存储器操作数,标 号: 助记符 操作数1,操作数2 ;注释,符号名 定义符 参数1,参数n ;注释,A. 常数操作数 即立即数,可分为数值、字符、数值符号名和 表达式常数。 数值常数: 二进制常数:以字母B为结尾,由若干0、1组成 十进制常数:以字母D为结尾,由若干09组成 八进制常数:

5、以字母O或Q为结尾,由若干07组成 十六进制常数:以字母H为结尾,由若干09、 AF组成,字符常数: 在操作数中使用括起来,如A、B5、GAE在内存中实际上就是ASCII码,如:A(41H)B5(4235H)。 数值符号名常数: 可用伪指令语句定义的常数符号。 表达式常数: 常数与运算符组合而成为求值的表达式。,B. 寄存器操作数 CPU中可编程寄存器可以作为操作数使用(IP除外),分为源和目的。寄存器寻址。,C.存储器操作数 以存储器单元作为操作数,所学的所有与存储器有关的寻址都实有,引进符号地址(标号和变量),标号和变量有三种属性: 段 属 性:段基址,标号在CS,变量DS或ES 偏移属性

6、:与段基址的距离的偏移量值 类型属性:标号类型属性指段内还是段间 操作,即FAR(-2)和NEAR(-1), 变量类型属性是指变量的字节数,BYTE (1)、WORD(2)和DWORD(4),例1: BCDA DB 12H,13H,34H mov si,0 mov al,bcdasi 例2: BLEN EQU 5 lea si,3400h mov blensi,0,(5)注释 不是汇编语句的必须部分,为阅读程序方便而使用,标 号: 助记符 操作数1,操作数2 ;注释,符号名 定义符 参数1,参数n ;注释,二、 MASM汇编语言常用伪指令 1. 符号定义伪指令 (1)等价定义伪指令 EQU 格

7、式:符号名 EQU 表示式 说明: (A) EQU语句表达式中出现的符号必须已定义。 (B) 在同一源程序中,EQU语句不允许同一符号 名重复定义,举例: VAL1 EQU 1234H M1 EQU DS:BP+6 VAR EQU VAL1-6 OP1 EQU DAA,(2)等号定义伪指令 = 格式:符号名 = 表示式,(3)定义符号名伪指令 LABEL 格式:符号名 LABEL 类型 功能:定义一个标号或变量名,并指定其类型,举例: VAL1 = 1234H VAL1 = VAL1-6,例2:ABCF LABEL FAR BARY DB 23,45 ABCN : MOV AL,1 用ADD

8、AX,WARY (字) 用 CALL ABCF ( 段间) 用 ADD AL,BARY (字节) 用 CALL ABCN ( 段内),例1: WARY LABEL WORD,2. 数据定义伪指令(变量名) 格式:(1) 变量名 DB 表示式1, ;字节 (2) 变量名 DW 表示式1, ;字 (3) 变量名 DD 表示式1, ;双字 (4) 变量名 DQ 表示式1, ;4个字 (5) 变量名 DT 表示式1, ;10个字节,说明: (1)表示式可为?、常数表达式、地址表达式 (DB除外)、字符、字符串(仅DB)。 ?表示内容未知。如:XX DB ?。 (2)用DUP 重复子句可连续重复定义 如

9、:AA1 DB 100 DUP(2); (3)用“,”可使用多个参数,表示从给出的变 量名为起始单元的连续递增单元的内容。 如: ST1 DB ABCDER; TAB1 DW 0,1,34,56,例1: A DB 55 B DW ? C DB 100 DUP(?) D DB HOW ARE YOU E DD ? F DB 1,2,3,4,5 G DW 25 DUP (25) H DW XY,25,44 DUP(0) T DB ABC89FGR TT DW 1,2,3,4,例2: A EQU 100 B DB A C DB A+5 D DW B E DD B F DB $-B G DB 25 D

10、UP (1,?,3) H DW 10 DUP(1,2 DUP(2),DATA_BYTE DB 10,4,10H,? DATA_WORD DW 100,100H,-5,?,DATA_BYTE ,DATA_WORD ,例:,ARRAY DB HELLO DB AB DW AB,ARRAY ,PAR1 DW 100,200 PAR2 DW 300,400 ADDR_TABLE DW PAR1,PAR2 VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3),OPER1 DB ?, ? OPER2 DW ?, ? MOV OPER1, 0 ;字节指令 MOV OPER

11、2, 0 ;字指令 OPER1 DB 1, 2 OPER2 DW 1234H, 5678H MOV AX, OPER1+1 MOV AL, OPER2 类型不匹配 MOV AX, WORD PTR OPER1+1 MOV AL, BYTE PTR OPER2,(AX)=3402H (AL)=34H,3.段和模块定义 伪指令 (1)段定义格式: 段名 SEGMENT 定位类型组合类型类别 段名 ENDS,说明: A.segment 和ends 共同定义一个逻辑段,必须成 对使用,每段有一段名。 B.段的大小不能超过64K。 C.段定义语句仅仅是将程序划分成段,它并不指明 定义的是什么段。 D.定

12、位类型 表示段的起始位置,类型是起始地址 能被什么值整除,有如下类型: PAGE (256), PARA (16,隐含), WORD (2), BYTE (1),E.组合类型:是告诉连接程序,本段与其它程序中 段的关系。有如下: NONE :无关,隐含 PUBLIC:表示可以把本段与同名同类别的其 它段相连接,构成一个物理段 COMMON:表示可以把本段与同名同类别的其它 段相覆盖,构成一个物理段 STACK:与PUBLIC同样,但它连接的是堆栈段 MEMORY:表示本段定位在所有段最高地址。 AT 表达式:本段将装截表达式的值。 F.类别:给段取别名,(2)指定段寄存器伪指令 格式: ASS

13、UME 段寄存器名:段名, 段寄存器名有: DS、ES、CS和SS 功能:向汇编程序指示当前各段所用的段寄存器名, 设定对应关系。,(3)模块定义伪指令格式: NAME 模块名 放在模块的第一条指令语句, (4)源程序结束伪指令格式: END 表达式 表达式为存储器地址,通常为程序的入口地 址。放在模块的最后,,例: NAME HU DATA SEGMENT DATA ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK STT: MOV AX,DATA MOV DS,AX MOV AX,STACK

14、 MOV SS,AX CODE ENDS END STT,4. 模块通信 伪指令 (1)定义公共符号名格式: PUBLIC 符号名, 说明:符号名可以为变量、符号常量、标号或过程名 功能:由PUBLIC定义的符号名,可为其它模块所有, 是公共符号名。,(2)定义外部符号名 格式: EXTRN 符号名:类型, 说明:符号名为其它模块PUBLIC所定义,类型 有BYTE、WORD、DWORD、NEAR和FAR,且 类型应与原模块中定义时的类型一致。 功能:定义本模块中所引用的外部模块中的符 号名。,例: NAME HU PUBLIC XX,GHH D1 SEGMENT XX DB 23 D1 EN

15、DS C1 SEGMENT ASSUME CS:C1,DS:D1 STT: MOV AX,D1 MOV DS,AX GHH: C1 ENDS END STT,NAME HU1 EXTRN XX:BYTE,GHH:FAR D2 SEGMENT D2 ENDS C2 SEGMENT ASSUME CS:C2,DS:D2 MOV AX, D2 MOV DS, AX JMP GHH C2 ENDS END,5. 过程定义伪指令 格式: 过程名 PROC NEAR/FAR RET 过程名 ENDP 功能:完成过程定义。 (1)过程名含有段基址、偏移地址和类型。 把它当标号。 (2)一个过程总是通过RET指令返回。 (3)隐含时为NEAR,例: DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA APER PROC RET APER ENDP STT: MOV AX,DATA MOV DS,AX CALL APER CODE ENDS END STT,6. 其它伪指令 (1)定位格式: ORG 数值表达式 说明:数值表达式为偏移

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号