汇编语言伪指令解析

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

BEGIN: MOV AX,DATA
MOV DS,AX
LEA DX,STR
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
汇编语言伪指令解析
汇编语言的 一个实例P81
2
一、汇编语言源程序的基本结构
完整的汇编语言源程序由段(代码段、数据段、附 加段或堆栈段)组成;一个汇编语言源程序必须包 含一个代码段,并指示程序执行的起始点,一个程 序只有一个起始点。数据段、堆栈段和附加段视情 况而定。
每个段由若干语句行组成。语句行是汇编的编程基 础。所有的指令必须位于某一个代码段内,伪指令 可根据需要位于任一段内。
段以“SEGMENT”开始,以“ENDS”结束。段由用 户定义。
汇编语言伪指令解析
3
二、汇编语言源程序中的语句
1、语句的分类 2、语句的格式
汇编语言伪指令解析
4
1、汇编源程序中语句的分类
汇编语言伪指令解析
10
TEST
例:测试为0或1
若要检测AL中的最低位是否为1,若为1则转移。
test al,01h ;测试AL的最低位D0
jnz there ;标志ZF=0,即D0=1
;则程序转移到there
...
;否则ZF=1,即D0=0,顺序执行
there: ...
汇编语言伪指令解析
11
三、常量、变量、标号与表达式(续)
操作数 操作数
[;注释] [;注释]
共同点:每一语句行都由4部分组成,各部分之 间至少要用一个空格作为间隔。
不同点:
在形式上:带不带冒号,是否可转向它。
在本质上:汇编时能否形成对应的机器码。
汇编语言伪指令解析
6
三、常量、变量、标号与表达式(续)
1、常量
1)数值常量 2)字符常量
3)符号常量
数值常量
第3章 汇编语言程序结构
一、汇编语言源程序的基本结构 二、汇编语言源程序中的语句 三、常量、变量、标号与表达式 四、伪指令 五、操作符 六、汇编语言上机过程
教学重点:
①指令语句格式和伪指令语句格式;②汇编语言程序格式;
③汇编语言的上机过程
教学难点:
①伪指令的应用;②运算符、操作符的应用;③伪指令存储器
汇编语言伪指令解析
12
(1)算术运算符
有+、-、*、/以及MOD(取余),其中MOD表示除法运算后得到 的余数。例:
19/7的商是2,19 MOD 7则为5(余数) 算术运算符可以用于数值表达式,例: MOV AL,2*7
汇编语言伪指令解析
13
(2)逻辑运算符
逻辑运算符有AND、OR、XOR和NOT,它们只能用于数 值表达式中。
表达式
表达式是由运算符(操作符)将常数、寄存器、标号、 变量组合起来的式子,分数值表达式和地址表达式两种。汇编 时按一定的优先规则对表达式进行计算。
数值表达式
算术表达式(利用算术运算符) 逻辑表达式(利用逻辑运算符) 关系表达式(利用关系运算符)
下面介绍三种运算符:
(1)算术运算符 (2)逻辑运算符 (3)关系运算符
分配技术
汇编语言伪指令解析
1
DATA SEGMENT
STR DB 0DH,0AH,’How are you!$'
DATA ENDS
STACK SEGMENT STACKΒιβλιοθήκη DB 100 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
指令性语句(指令/硬指令)
使CPU产生动作、并在程序执行时才处理的语句,就 是第3章学习的处理器指令。
指示性语句(伪指令)
不使CPU产生动作、在程序执行前由汇编程序处理 的说明性语句,例如,数据说明、变量定义等等。
宏指令(第5章)
汇编语言伪指令解析
5
2、汇编源程序中语句的格式
指令的格式: [标号:] 操作码 伪指令的格式: [名字] 伪指令
汇编语言伪指令解析
7
三、常量、变量、标号与表达式(续)
字符串形式的常量
字符串常量是用单引号或双引号引起来的一个或多个字符。 字 符 串 常 量 是 以 各 字 符 的 ASCⅡ 码 表 示 的 。 如 ‘ A’ 用 41H 表示,字符串‘A1B2’用41H,31H,42H,32H表示。
符号常量
对经常使用的数值常量可以先为它定义一个名字,然后在语 句中用名字来表示该常量。
例:MOV CL,36H AND 0FH
经汇编后:MOV CL,06H
这些逻辑运算符也是8086的指令助记符,会不会造成 混乱呢?不会的,逻辑运算符在汇编时进行,而指令助记 符在指令执行时进行。
例:AND DH,PORT AND 0FEH
AND DH,PORT AND 0FEH
后一个逻辑运算符AND在汇编时进行,若PORT为81H, 则 汇 编 后 表 达 式 算 出 为 8 0 H。 执 行 前 一 个 指 令 助 记 符 AND时,将DH与80H相与,结果在DH中。
标号也有三种属性:
①段值:所在段的段地址,总是在CS段寄存器中;
②偏移量:与变量相同,所在段的段内偏移地址;
③类型:分NEAR和FAR两种。
其中:
NEAR—表示标号所在语句与转移指令或调用指令在同一码段内, 只需改变IP即可。
FAR—标号所在语句与转移指令或调用指令不在同一码段内。
若没有对类型进行说明,默认为NEAR。
提示:每一个变量定义后都具有此三种属性,设置变量名 是为了方便存取它指示的存储单元。
汇编语言伪指令解析
9
三、常量、变量、标号与表达式(续)
标号是一条指令语句的符号地址。在汇编源程序中,只有 在需要转向一条指令语句时,才为该指令语句设置标号,以便 在转移类指令(含子程序调用指令)中直接引用这个标号。因 此,标号可作为转移类指令的操作数,即转移地址。
符号常量需要用等价伪指令EQU和等号伪指令“=”来定义。
汇编语言伪指令解析
8
三、常量、变量、标号与表达式(续)
变量:变量是一个存放数据的存储单元的名字,用变量名来 表示,变量名由用户自定义。变量实际上表示数据初值表首元 素的地址;用这个变量名表示,常称为符号地址,在程序中作 为存储器操作数来使用。如例子中BLOCK、BUFF。一般在数据 段中定义。 由于汇编语言中存储单元是分段使用的,所以变量具有三种属 性: ①段 值(SEGMENT)—变量定义所在段的段地址。 ②偏移量(OFFSET)—变量所指的单元地址与段起始地址之 间的位移量。 ③类 型(TYPE)—有字节(byte)、字(word)和双字(double word)等。
相关文档
最新文档