宏汇编语言PPT课件
合集下载
宏汇编语言程序设计PPT课件
MOV ES , AX
129F:000F BF0000 MOV DI , 0000
129F:0012 B90600 MOV CX, 0006
129F:0015 F3
REP
129F:0016 A4
MOVSB
129F:0017 B44C
MOV AH, 4C
129F:0019 CD21
INT
21
、、、、、、
-U
;查看程序代码
129F:0000 FC
CLD
129F:0001 B89D12 MOV AX , 129D
129F:0004 8ED8
MOV DS , AX
129F:0006 8D360000 LEA SI ,
[ 0000 ]
129F:000A B89E12 MOV AX , 129E
129F:000D 8EC0
MOV AH, SIZE A2
汇编时形成指令
MOV CX, 200
MOV AH, 2
第21页/共92页
5). PTR 修改属性操作符
格式:类型/距离 PTR 变量或标号 功能:将PTR左边的类型属性赋给右边的变量或标号。 常用类型:BYTE、WORD、DWORD、NEAR、FAR
例:
MOV BYTE PTR [BX],10; [BX] 10H MOV WORD PTR [BX],10; [BX],[BX+1]
第15页/共92页
4). 数值返回操作符
SEG 取符号地址(变量或标号)的段地址
例 MOV AX , SEG yy
OFFSET 取符号地址(变量或标号)的偏移地址
例 MOV BX , OFFSET yy
bb yy bb cc ES:bb start :
第4章 宏汇编语言
操作码助记符项
操作数项
注释项
操作数给出参与操作的数或数所在的地方。 操作数多于一个时,用逗号分开。
操作数可以是常数、寄存器、存储器操作数、变 量、 标号、过程名或表达式等。
LOGO
常数
给出具体的数据。可以是数字常量或字符常量。 数字默认十进制,也可加D表示十进制数。如 1234D, 1234 数字后加B表示二进制数。 如 1010B 数字后加H表示十六进制数。 如 1234H 字符常量,用单引号表示。 如 ‘1234’ 汇编时,用字符对应的ASCII表示。如 31H, 32H, 33H, 34H
* 在同一个程序中,同样的标号或变量的定义只允许出现一次,否则汇编程序会 指示出错。
2、 操作码项(不可省略)
[标号] [: ] 操作码 [ 操作数, ]
LOGO
[;注释]
名字项
操作码助记符项
操作数项
注释项
操作码可以是指令、伪指令中的助记符,用以指明操作的性质或功能。
对于指令,汇编程序将其翻译成机器语言指令。
LOGO
注意:可以直接对数据进行以上的运算,结果为数据值;但对于
地址仅限于加减运算,得到的结果为地址值,而直接乘除是没有意 义的。
2). 逻辑运算符 (AND、OR、NOT、XOR)
MOV AX, 80H OR 70H ← MOV AX,0F0H 注意:上述逻辑运算符与指令系统中的逻辑指令具有相同符号,但前 者在汇编过程中进行逻辑运算,后者在程序执行中进行。 3). 关系运算符 ( EQ、NE、GT、GE、LT、LE ) 真:FFFFH; 假: 0
例:
mov AL, 0AH
mov AL, AH
mov BX, 0abcdH
宏汇编语言程序设计 .ppt
ENDS
END START
§4-4 程序设计方法
【 分支结构】
2.多分支
依次测试多个条件是否满足:若满足转入相应分支入口;不满足继续向下
测试,直到全部测试完。
此方法编程简单直观,但速度慢。
判定条件
例 有8个加工子程序,入口地址分别为
P1 ,P2 ,…P8 。编程实现检测键盘输入
命令,使系统分别转向8个加工子程序。
概述
一个好的程序,应该具备的特点:
程序结构模块化,程序易读,易调试及维护。 执行速度快。 占用内存空间小。
§4-4 程序设计方法
【概述】
设计汇编语言源程序的基本步骤:
⑴ 分析问题 抽象数学模型,确定实现算法。
⑵ 绘制程序流程图 粗框图 细框图。
⑶ 分配存储空间、工作单元 分配数据段、堆栈段、程序段 的位置,确定寄存器主:
§4-4 程序设计方法
P1: P2: P3:
P8: ST :
MOV INT CMP JE CMP JE … CMP JE JMP … … … … … HLT
AH, 1 21H AL, ‘1’ P1 AL, ‘2’ P2
AL, ‘8’ P8 ST
【 分支结构】
;1号功能键调用,键盘接收 ;键值为1,转1号加工子程序 ;键值为2,转2号加工子程序
MOV AH, 0
DEC AL MOV BL, AL
; AL为键值
ADD ADD MOV ADD JMP
AL, AL AL, BL BX, OFFSET BASE BX, AX BX
;偏移量=键值×3 ;基地址 ;表地址 ;转入转移指令
§4-4 程序设计方法
【 分支结构】
⑶根据关键字分支
宏汇编语言PPT课件
③ 利用EQU可以用一个符号名替代一个复杂的地址表 达式和其他一些符号,如指令助记符、变量名、标号、 段名、寄存器名、宏定义名等。
.
34
2.等号伪指令
格式:符号名 = 表达式
功能:为常量、表达式及其他各种符号定义一个 等价的符号名,并能对所定义的符号多次重复定 义,且以最后一次定义的值为准。
【例3.17】定义等价符号名。
.
20
1.操作数
2.算术运算符
算术运算符包括:+(加)、-(减)、 * ( 乘 ) 、 / ( 除 ) 、 MOD( 求 模 ) 、 SHL(左移)、SHR(右移)几种,它既 可以用于数值表达式又可用于地址表达 式。
.
21
【例3.4】用算术运算符进行数值表达式运算。
NUM1 NUM2 NUM3 VAR1 VAR2 NUM4 NUM5
DW伪指令则是取它的偏移地址来初始化变量, 用DD伪指令则是取它的段首址和偏移地址来初 始化变量。
例如:
BUF1 DW A
BUF2 DD B
.
16
(5)带DUP的表达式
在表达式中使用重复数据操作符DUP,可以为连续的存 储单元提供重复数据,其格式为:
N DUP(表达式)
其中N为重复因子,只能取正整数,表示定义了N个重 复数据存储单元,其类型由它前面的数据定义伪指令确 定,而每个数据存储单元中的初值由DUP后面圆括号中 的表达式给定。
DATA1
.
22Biblioteka 3.逻辑运算符逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、 按位加(XOR)、逻辑非(NOT)四种运算。由于逻辑 运算是按位操作,且在汇编过程中完成,因而运算的结 果仍为整数常量。
【例3.5】用逻辑运算符进行运算。
.
34
2.等号伪指令
格式:符号名 = 表达式
功能:为常量、表达式及其他各种符号定义一个 等价的符号名,并能对所定义的符号多次重复定 义,且以最后一次定义的值为准。
【例3.17】定义等价符号名。
.
20
1.操作数
2.算术运算符
算术运算符包括:+(加)、-(减)、 * ( 乘 ) 、 / ( 除 ) 、 MOD( 求 模 ) 、 SHL(左移)、SHR(右移)几种,它既 可以用于数值表达式又可用于地址表达 式。
.
21
【例3.4】用算术运算符进行数值表达式运算。
NUM1 NUM2 NUM3 VAR1 VAR2 NUM4 NUM5
DW伪指令则是取它的偏移地址来初始化变量, 用DD伪指令则是取它的段首址和偏移地址来初 始化变量。
例如:
BUF1 DW A
BUF2 DD B
.
16
(5)带DUP的表达式
在表达式中使用重复数据操作符DUP,可以为连续的存 储单元提供重复数据,其格式为:
N DUP(表达式)
其中N为重复因子,只能取正整数,表示定义了N个重 复数据存储单元,其类型由它前面的数据定义伪指令确 定,而每个数据存储单元中的初值由DUP后面圆括号中 的表达式给定。
DATA1
.
22Biblioteka 3.逻辑运算符逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、 按位加(XOR)、逻辑非(NOT)四种运算。由于逻辑 运算是按位操作,且在汇编过程中完成,因而运算的结 果仍为整数常量。
【例3.5】用逻辑运算符进行运算。
《汇编语言》PPT课件
机
原
理 例3-3
ORG 1000H
及
DW
1234H
应 用 编
SJ_DATA: DW
56H,2000
经汇编后,从地址1000H处存贮器的内容为:
著
〔1000H〕= 12H
组
〔1001H〕= 34H
〔1002H〕= 00H
〔1003H〕= 56H
〔1004H〕= 07H
§3.1.2 汇编伪指令
湘 四、EQU 赋值伪指令 潭 字符名称 EQU 项〔数或汇编符号〕
;〔35H〕 A
MOV DPTR,#DPTRA ;0AA00H DPTR
§3.1.2 汇编伪指令
湘 七、BIT定义位地址符号伪指令 潭 字符名称 BIT 位地址
大 学
这里的"字符名称"与标号不同〔其后没有冒号〕,但
单 它是必须的,其功能是把BIT之后的"位地址"值赋给"字
片 机
符名称".
原 理
例3-6:
潭 大
[标号:] DB X1、 X2 … Xn
学
ORG 1000H
单
DB
片
SJ-DATA: DB
0AAH 25,25H
机
ZFC-DATA: DB
'MCS-51'
原
理 及 应 用 编 著
经汇编后,从地址1000H处存贮器的内容为: 〔1000H〕= AAH 〔1001H〕= 19H 〔1002H〕= 25H 〔1003H〕= 4DH
用
编 著 组
eg: MOV MOV MOV
P1,A 70H ,R2 0E0H,78H
; MOV 90H,A ; (A)
汇编语言第7章高级汇编语言技术PPT课件
7.1.1 宏定义、宏调用和宏展开
1. 宏定义:
说明:
① 定义宏指令以MACRO语句开始,ENDM 语句结束,它们必须成对出现
② 宏指令名:为宏指令取的名字,必须以字 母开头,后可跟字母、数字或下划线
③ 宏定义体:能够完成一定功能的指令序列
④ 哑元:定义宏体中出现的符号(字符串),
可有可无,各哑元之间用逗号隔开
注:先有宏定义,后有宏调用 例7.9: 例7.11:
12
第七章 高级汇编语言技术
7.1.5 列表伪操作 .XALL:为默认情况,指示清单中只列
出产生目标码的宏展开
.LALL:列出包括注释在内的所有宏展
开
.SALL:不列出任何展开信息
注:宏定义中的注释可用“;”和“;;”表示
(在宏展开时不展开,即使在.LALL之 下的清单中也不会出现)
7.2.2 不定重复伪操作 1.IRP伪操作
格式:IRP dummy,<argument list>
…
(重复块)
ENDM
重复次数
功能:连续地执行重复块几次,每次重复把重复块中的哑
元用自变量表中的一项来取代,下一次取代下一项, 重复次数由自变量表中的自变量个数来确定
例7.17:
注:该操作不一定非要在宏定义体内 18
3. 宏展开:在汇编时,将宏定义体插入宏调用
处(宏指令名),用实元代替哑元
注:宏展开工作是汇编程序在汇编过程中完成
例7.1:
7
第七章 高级汇编语言技术
7.1.1 宏指令与子程序的区别
共同优点:简化源程序代码
区别:
① 执行时间:子程序调用是在程序运行过程中进行;而宏调用 是在汇编过程中完成
② 执行方式:子程序执行时,每调一次都要先保护断点、再保 护现场,返回时先恢复现场、再恢复断点,因此采用子程序 方式程序的执行要花费额外的开销,执行时间长、速度慢; 而宏指令方式不需要这些开销,因而执行时间短、速度快
1. 宏定义:
说明:
① 定义宏指令以MACRO语句开始,ENDM 语句结束,它们必须成对出现
② 宏指令名:为宏指令取的名字,必须以字 母开头,后可跟字母、数字或下划线
③ 宏定义体:能够完成一定功能的指令序列
④ 哑元:定义宏体中出现的符号(字符串),
可有可无,各哑元之间用逗号隔开
注:先有宏定义,后有宏调用 例7.9: 例7.11:
12
第七章 高级汇编语言技术
7.1.5 列表伪操作 .XALL:为默认情况,指示清单中只列
出产生目标码的宏展开
.LALL:列出包括注释在内的所有宏展
开
.SALL:不列出任何展开信息
注:宏定义中的注释可用“;”和“;;”表示
(在宏展开时不展开,即使在.LALL之 下的清单中也不会出现)
7.2.2 不定重复伪操作 1.IRP伪操作
格式:IRP dummy,<argument list>
…
(重复块)
ENDM
重复次数
功能:连续地执行重复块几次,每次重复把重复块中的哑
元用自变量表中的一项来取代,下一次取代下一项, 重复次数由自变量表中的自变量个数来确定
例7.17:
注:该操作不一定非要在宏定义体内 18
3. 宏展开:在汇编时,将宏定义体插入宏调用
处(宏指令名),用实元代替哑元
注:宏展开工作是汇编程序在汇编过程中完成
例7.1:
7
第七章 高级汇编语言技术
7.1.1 宏指令与子程序的区别
共同优点:简化源程序代码
区别:
① 执行时间:子程序调用是在程序运行过程中进行;而宏调用 是在汇编过程中完成
② 执行方式:子程序执行时,每调一次都要先保护断点、再保 护现场,返回时先恢复现场、再恢复断点,因此采用子程序 方式程序的执行要花费额外的开销,执行时间长、速度慢; 而宏指令方式不需要这些开销,因而执行时间短、速度快
《汇编语言》课件
编程实例三:排序算法的实现
总结词:算法思想
VS
详细描述:通过汇编语言实现排序算 法,理解算法思想在编程中的运用, 提高编程思维和解决问题的能力。
06 汇编语言与高级语言的联 系与区别
编语言与高级语言的联系
同源关系
汇编语言和高级语言都源于计算机的二进制语言,它们都是为了 方便人类操作计算机而产生的。
子程序的返回值
子程序可以有一个或多个返回值,通过寄存 器或内存单元返回给主程序。
05 汇编语言编程实践
编程实例一:求两个数的和
总结词:简单运算
详细描述:通过汇编语言实现求两个数的和的程序,了解汇编语言的输入、存储、运算和输出指令。
编程实例二:求一个数的阶乘
总结词:循环结构
详细描述:通过编写求阶乘的汇编程序,掌握循环结构的实现方法,理解循环在计算中的重要性。
JE、JNE、JG、JL等条件跳转指令
根据条件跳转到指定地址。格式:JE/JNE/JG/JL destination。
子程序调用指令
CALL指令
调用子程序,并将返回地址压入堆栈。格式 :CALL procedure_address。
RET指令
从子程序返回,并弹出堆栈中的返回地址。 格式:RET。
04 汇编语言程序结构
04
03 汇编语言指令系统
数据传送指令
MOV指令
用于将数据从一个位置移动到另一个位 置。格式:MOV destination, source。
VS
PUSH和POP指令
用于在堆栈上存储和检索数据。格式: PUSH source / POP destination。
算术运算指令
要点一
ADD和SUB指令
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如: BUF DB 100 DUP(0)
以上语句定义了以BUF为首址,大小为100个字节,初 值为0的数据存储单元。
返回本节
.
17
标号
标号是一条指令语句的符号地址。在汇编源程序中,只有 在需要转向一条指令语句时,才为该指令语句设置标号, 以便在转移类指令(含子程序调用指令)中直接引用这个 标号。因此,标号可作为转移类指令的操作数,即转移地 址。
.
10
2.变量的定义
表达式项是给变量或指定存储单元赋予初值,它有以 下几种形式:
(1)数值表达式 (2) 字符串表达式 (3)地址表达式(只适用DW和DD两个伪指令) (4)? 表达式 (5)带DUP的表达式
.
11
(1)数值表达式
数据定义伪指令可以为一个或连续的存储单元设置数值 初值。
【例3.1】为数据段分配存储单元。
DATA
SEGMENT
A
DB 11H,12H,13H
B
DW 1122H,3344H
C
DD 12345678H
DATA
ENDS
上述变量的存储单元分配及初始化情况如下图3.1所示。
.
12
图3.1 数据段中数据存储分配图
.
13
(2) 字符串表达式
字符串表达式中的字符串必须用引号引起来。DB、DW、 DD伪指令将字符串中的各字符均以ASCⅡ码形式存放在 相应的存储单元,但表示形式各不相同。
.
7
字符串常量
字符串常量是用单引号或双引号引起来 的一个或多个字符。字符串常量是以各 字符的ASCⅡ码表示的。如‘A’用41H 表 示 , 字 符 串 ‘ A1B2’ 用 4 1 H,31H, 42H,32H表示。
返回本节
.
8
变量
1.变量 2.变量的定义
.
9
1.变量
(1)段属性 (2)偏移地址属性 (3)类型属性
【例3.2】为字符串分配存储单元。
DATA
SEGMENT
STR1
DB ‘1234’
STR2
DW ‘AB’,‘CD’,‘A’
STR3
DD ‘AB’
DATA
ENDS
其存储单元分配如下图3.2所示。
.
14
.
图 3 2
数 据 段 存 储 分 配 图
.
15
(3)地址表达式(只适用DW和DD两个伪指令)
如果该地址表达式为一变量(或标号)名,用
CLC
ROL al,1
JZ rrr
MOV NOT0,dl
JMP qqq
INC bx
rrr: MOV minus,dl
qqq: JMP abc
.
2
指令语句的一般格式如下:
[标号:] 指令助记符 操作数 ;注释
1.标号:标号是机器指令语句存放地址的符号表示, 代表该指令目标代码的第一个字节地址,后面必须紧跟 冒号“:” 。
.
返回本章首页
5
(3)TYPE运算符
(4)$运算符
4 方括号运算符和地址表达式
5.3 数据定义伪指令
1 等值伪指令(EQU)
2 等号伪指令(=)
3 字节定义伪指令
4 字定义伪指令
5 双字定义伪指令
6 多字节定义伪指令
5.4 宏汇编语言基本语法
1 方式选择伪指令
2 段定义伪指令
.
6
3 段约定语句 4 过程定义语句 5 定位语句 6 汇编结束语句
第5章 宏汇编语言
5.1 汇编源程序的语句类型 一个完整的汇编程序至少应包含两类语句:一类是
指令性语句;另一类是指示性语句。 指令性语句的书写格式如下: 标号: 符号指令;注释 变量名 伪 指 令;注释
返回本章首页
.
1
LEA bx,buf
abc: MOV al,0
MOV dl,[bx]
SUB al,dl
DW伪指令则是取它的偏移地址来初始化变量, 用DD伪指令则是取它的段首址和偏移地址来初 始化变量。
例如:
BUF1 DW A
BUF2 DD B
.
16
(5)带DUP的表达式
在表达式中使用重复数据操作符DUP,可以为连续的存 储单元提供重复数据,其格式为:
N DUP(表达式)
其中N为重复因子,只能取正整数,表示定义了N个重 复数据存储单元,其类型由它前面的数据定义伪指令确 定,而每个数据存储单元中的初值由DUP后面圆括号中 的表达式给定。
返回本节
.
4
5.2 宏汇编基本语法
5.2.1 标号、变量和常数
1 标号和变量
2 常量:立即数,字符串常数,符号常数 5.2.2 运算符 1 数值运算符 (1)算术运算符 (2)逻辑运算符 (3)关系运算符 2 修改属性的运算符 3 返回属性或数值的运算符 (1)SEG运算符 (2)OFFSET运算符
MOV MOV
┆ EQU 25*4 –50 ;NUM1=50 EQU NUM1 / 7 ;NUM2=7 DB NUM1 MOD 7 ;NUM3=1 DB 1,2,3,4,5
【例3.3】符号地址表示。
┆
NEXT:MOV AL, [SI] ;带标号NEXT的指令
┆
DEC CX
JNE NEXT ;标号NEXT作转移指令的操作数
.
18
标号也具有三种属性
1.段属性 2.偏移地址属性 3.类型属性
返回本节
.
19
4 表达式
1.操作数 2. 算术运算符 3.逻辑运算符 4.关系运算符 5.属性运算符 6.数值返回运算符
.
20
1.操作数
2.算术运算符
算术运算符包括:+(加)、-(减)、 * ( 乘 ) 、 / ( 除 ) 、 MOD( 求 模 ) 、 SHL(左移)、SHR(右移)几种,它既 可以用于数值表达式又可用于地址表达 式。
.
21
【例3.4】用算术运算符进行数值表达式运算。
NUM1 NUM2 NUM3 VAR1 VAR2 NUM4 NUM5
2.伪指令符:伪指令符指定汇编程序要完成的 具体操作,如数据定义伪指令DB、DW、DD,段 定 义 伪 指 令 SEGMENT, 假 定 伪 指 令 ASSUME 等 。
3.操作数:伪指令后面的操作数可以是常数、 字符串、变量、表达式等,其个数由具体的伪指
令决定,各个操作数之间必须以“逗号”分隔。
4.注释:伪指令的注释必须以“;”开始,其 作用同指令语句中的注释部分。
2.指令助记符:指令助记符为语句的核心成分,表示 了该语句的操作类型。
3.操作数:操作数表示指令助记符的操作对象。 4.注释:注释均以分号开始,它可占一行或多行,一 般放在一条语句的后面。
返回本节
.
3
伪指令语句格式
伪指令语句格式如下:
[符号名] 伪指令符 操作数 ;注释
1.符号名:符号名是伪指令语句的一个可选项。
以上语句定义了以BUF为首址,大小为100个字节,初 值为0的数据存储单元。
返回本节
.
17
标号
标号是一条指令语句的符号地址。在汇编源程序中,只有 在需要转向一条指令语句时,才为该指令语句设置标号, 以便在转移类指令(含子程序调用指令)中直接引用这个 标号。因此,标号可作为转移类指令的操作数,即转移地 址。
.
10
2.变量的定义
表达式项是给变量或指定存储单元赋予初值,它有以 下几种形式:
(1)数值表达式 (2) 字符串表达式 (3)地址表达式(只适用DW和DD两个伪指令) (4)? 表达式 (5)带DUP的表达式
.
11
(1)数值表达式
数据定义伪指令可以为一个或连续的存储单元设置数值 初值。
【例3.1】为数据段分配存储单元。
DATA
SEGMENT
A
DB 11H,12H,13H
B
DW 1122H,3344H
C
DD 12345678H
DATA
ENDS
上述变量的存储单元分配及初始化情况如下图3.1所示。
.
12
图3.1 数据段中数据存储分配图
.
13
(2) 字符串表达式
字符串表达式中的字符串必须用引号引起来。DB、DW、 DD伪指令将字符串中的各字符均以ASCⅡ码形式存放在 相应的存储单元,但表示形式各不相同。
.
7
字符串常量
字符串常量是用单引号或双引号引起来 的一个或多个字符。字符串常量是以各 字符的ASCⅡ码表示的。如‘A’用41H 表 示 , 字 符 串 ‘ A1B2’ 用 4 1 H,31H, 42H,32H表示。
返回本节
.
8
变量
1.变量 2.变量的定义
.
9
1.变量
(1)段属性 (2)偏移地址属性 (3)类型属性
【例3.2】为字符串分配存储单元。
DATA
SEGMENT
STR1
DB ‘1234’
STR2
DW ‘AB’,‘CD’,‘A’
STR3
DD ‘AB’
DATA
ENDS
其存储单元分配如下图3.2所示。
.
14
.
图 3 2
数 据 段 存 储 分 配 图
.
15
(3)地址表达式(只适用DW和DD两个伪指令)
如果该地址表达式为一变量(或标号)名,用
CLC
ROL al,1
JZ rrr
MOV NOT0,dl
JMP qqq
INC bx
rrr: MOV minus,dl
qqq: JMP abc
.
2
指令语句的一般格式如下:
[标号:] 指令助记符 操作数 ;注释
1.标号:标号是机器指令语句存放地址的符号表示, 代表该指令目标代码的第一个字节地址,后面必须紧跟 冒号“:” 。
.
返回本章首页
5
(3)TYPE运算符
(4)$运算符
4 方括号运算符和地址表达式
5.3 数据定义伪指令
1 等值伪指令(EQU)
2 等号伪指令(=)
3 字节定义伪指令
4 字定义伪指令
5 双字定义伪指令
6 多字节定义伪指令
5.4 宏汇编语言基本语法
1 方式选择伪指令
2 段定义伪指令
.
6
3 段约定语句 4 过程定义语句 5 定位语句 6 汇编结束语句
第5章 宏汇编语言
5.1 汇编源程序的语句类型 一个完整的汇编程序至少应包含两类语句:一类是
指令性语句;另一类是指示性语句。 指令性语句的书写格式如下: 标号: 符号指令;注释 变量名 伪 指 令;注释
返回本章首页
.
1
LEA bx,buf
abc: MOV al,0
MOV dl,[bx]
SUB al,dl
DW伪指令则是取它的偏移地址来初始化变量, 用DD伪指令则是取它的段首址和偏移地址来初 始化变量。
例如:
BUF1 DW A
BUF2 DD B
.
16
(5)带DUP的表达式
在表达式中使用重复数据操作符DUP,可以为连续的存 储单元提供重复数据,其格式为:
N DUP(表达式)
其中N为重复因子,只能取正整数,表示定义了N个重 复数据存储单元,其类型由它前面的数据定义伪指令确 定,而每个数据存储单元中的初值由DUP后面圆括号中 的表达式给定。
返回本节
.
4
5.2 宏汇编基本语法
5.2.1 标号、变量和常数
1 标号和变量
2 常量:立即数,字符串常数,符号常数 5.2.2 运算符 1 数值运算符 (1)算术运算符 (2)逻辑运算符 (3)关系运算符 2 修改属性的运算符 3 返回属性或数值的运算符 (1)SEG运算符 (2)OFFSET运算符
MOV MOV
┆ EQU 25*4 –50 ;NUM1=50 EQU NUM1 / 7 ;NUM2=7 DB NUM1 MOD 7 ;NUM3=1 DB 1,2,3,4,5
【例3.3】符号地址表示。
┆
NEXT:MOV AL, [SI] ;带标号NEXT的指令
┆
DEC CX
JNE NEXT ;标号NEXT作转移指令的操作数
.
18
标号也具有三种属性
1.段属性 2.偏移地址属性 3.类型属性
返回本节
.
19
4 表达式
1.操作数 2. 算术运算符 3.逻辑运算符 4.关系运算符 5.属性运算符 6.数值返回运算符
.
20
1.操作数
2.算术运算符
算术运算符包括:+(加)、-(减)、 * ( 乘 ) 、 / ( 除 ) 、 MOD( 求 模 ) 、 SHL(左移)、SHR(右移)几种,它既 可以用于数值表达式又可用于地址表达 式。
.
21
【例3.4】用算术运算符进行数值表达式运算。
NUM1 NUM2 NUM3 VAR1 VAR2 NUM4 NUM5
2.伪指令符:伪指令符指定汇编程序要完成的 具体操作,如数据定义伪指令DB、DW、DD,段 定 义 伪 指 令 SEGMENT, 假 定 伪 指 令 ASSUME 等 。
3.操作数:伪指令后面的操作数可以是常数、 字符串、变量、表达式等,其个数由具体的伪指
令决定,各个操作数之间必须以“逗号”分隔。
4.注释:伪指令的注释必须以“;”开始,其 作用同指令语句中的注释部分。
2.指令助记符:指令助记符为语句的核心成分,表示 了该语句的操作类型。
3.操作数:操作数表示指令助记符的操作对象。 4.注释:注释均以分号开始,它可占一行或多行,一 般放在一条语句的后面。
返回本节
.
3
伪指令语句格式
伪指令语句格式如下:
[符号名] 伪指令符 操作数 ;注释
1.符号名:符号名是伪指令语句的一个可选项。