西安电子科技大学微机原理第4章

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

2015/7/23
20
2)变量属性



段地址(SEG 偏移地址(OFFSET 类型(TYPE):变量的类型是所定义的每个变量所占据 的字节数。对于DB、DW、DD、DQ、DT定义的变量其 类型分别为 1、2、4、8、10。 长度(LENGTH):变量定义时,一个变量名所定义的变 量个数。在含有DUP操作符的变量定义中,变量名所定义 的变量个数为定义格式中的重复次数。在其它各种变量定 义中,每个变量名所定义的变量个数均为 1 大小(SIZE):变量定义语句中,分配给同一变量名的所 有变量的总的字节数;大小(SIZE)=变量类型(TYPE) ×变量长度(LENGTH)。
21
2015/7/23
3)举例
DATA1 DB 20H DATA2 DW 0204H, 100H DATA3 DB (-1*3),(15/3 DATA4 DD 12345H DATA5 DB ′0123′ DATA6 DW ′AB′, ′C′, ′D′ DATA7 DB ? DATA8 DD ? DATA9 DB 5 DUP(00 DATA10 DW 3 DUP(?)
2015/7/23
5
4.1 8086汇编语言的语句



指令可由汇编程序翻译成机器语言指令,汇编语 言中的指令与机器语言指令基本上是一一对应的, 由CPU执行的语句,称为指令性语句; 伪指令则不汇编成机器语言指令,仅仅在汇编过 程中告诉汇编程序应如何汇编,称为指示性语句; 宏指令是使用者利用上述基本语句自己定义的新 的指令。
A3 DW VALUE-3 ;定义变量A3为变量VALUE前3个字节 A4 DD VALUE ;高位字为变量VALUE所在段的段地址, 低位字为变量VALUE的偏移地址。
25
2015/7/23
4.2.2 符号定义伪指令语句
符号定义伪指令的用途是给一个符号重新 命名,或定义新的类型属性等 符号包括汇编语言的变量名、标号名、过 程名、寄存器名以及指令助记符等。 常用的符号定义伪指令有EQU、=(等号)和 LABLE
2015/7/23
3
汇编程序的功能
汇 编语 言 源 程序
汇 编程 序 Assembler
机 器语 言 目 标程 序
图4-1 汇编程序的功能示意图
2015/7/23
4
汇编语言源程序翻译成机器语言程 序任务


根据用户的要求自动分配存储区域(包括程序区、数据区、 暂存区等); 自动地把各种进位制数转换成二进制数,把字符转换成 ASCII码; 计算表达式的值等; 自动对源程序进行检查,给出错误信息(如非法格式,未 定义的助记符、标号,漏掉操作数等)等。 允许在源程序中把一个指令序列定义为一条宏指令的汇编 程序,增加了宏指令、结构、记录等高级汇编语言功能。
2015/7/23
22
各变量在内存中分配的单元
段地址:偏移地址 0100:0000H 0001H 0002H 3 4 5 6 7 8 9 A B C D E F 0100:0010H 1 2 3 4 5 6 7 8 9 A B C D E F 0100:0020H 1 2 3 4 20H 04H 02H 00H 01H FDH 05H 45H 23H 01H 00H 30H 31H 32H 33H 42H 41H 43H 00H 44H 00H ? ? ? ? ? 00H 00H 00H 00H 00H ? ? ? ? ? ? DATA1 DATA2 DATA3 DATA4

2015/7/23
18
1) 变量定义
变量名DB 变量名DW 变量名DD 变量名DQ 变量名DT 表达式;定义一个十字节变量

2015/7/23
19
伪指令格式中的表达式



一个或多个常数或某个运算公式(其值应为常数) 带引号的字符串。字符串必须用单引号括住,字符串的字符不超过255个 用问号作为表达式。不带引号的问号是一个保留字,它可用作数据类型伪指 令DB、 DW、DD语句中的表达式 带DUP(重复方式)表达式。DUP是表达式中的一个操作符。 表达式的格式: 重复次数 DUP
第4章汇编语言程序设计
2015/7/23
1
第4章 汇编语言程序设计
4.1 8086汇编语言的语句 4.2 8086汇编语言中常数、标号、变量及表 达式 4.3 汇编语言源程序结构 4.4 汇编语言程序设计 4.5 宏定义与宏调用 4.6 汇编语言程序的上机过程

2015/7/23 2
DATA5
DATA6
DATA7 DATA8
DATA9
DATA10
图4-2 各变量在内存中分配的单元
23
2015/7/23
表4.1 部分变量的属性
变量名 DATA2 DATA3 DATA4 段地址 (SEG) 0100H 0100H 0100H 偏移地址 (OFFSET) 0001H 0005H 0007H 类型 (TYPE) 2 1 4 长度 (LENGTH) 1 1 1 大小 (SIZE) 2 1 4
2015/7/23
10
4.1.3 有关属性


段值属性。指存储器操作数的段起始地址,此值必须在一 个段寄存器中,标号的段则总在CS寄存器中。 段内偏移量。16位无符号数,表示从段起始地址到该操作 数所在位置之间的字节数。在当前段内给出变量的偏移量 等于当前地址计数器的值,当前计数器的值可用“$”来表 示。 类型属性。标号的属性用来指出该标号在本段内引用还是 在其他段中引用,段内引用,为NEAR,指针长度为2字 节;段间引用,为FAR,指针长度为4字节。变量的类型 属性用来指出该变量所保留的字节数,主要有BYTE(字 节型)、WORD(字型(2字节))或DWORD(双字型 (4字节))等。

地址表达式(只能用于DW或DD)。操作数为地址表达式时,应遵循下列规 则:
当用DW定义地址表达式时,地址表达式中的变量名称表示该变量的第一个存储单 元的偏移地址,地址表达式中的标号表示它所代表的指令(或伪指令)的第一个 字节的偏移地址; 当用DD定义地址表达式时,低位字用于预置偏移地址,高位字用于预置段地址, 这些数值都是在定位时装入的; 地址表达式中的变量或标号可与常数值相加减。对于变量来说,运算结果的类型 不变;对标号来说,运算结果仍表示原标号所在段中的偏移地址; 变量或标号不能与变量或标号相加,但可相减,结果是没有属性的纯数值。
2015/7/23
28
2.=(赋值)语句
格式: 名字=表达式 功能:与EQU伪指令基本相同,主要区别 在于它可以对同一个名字重复定义

2015/7/23
29
举例
COUNT=100 MOV CX,COUNT ;(CX)←100 …… COUNT = COUNT−10 MOV BX,COUNT ;(BX)←90
DATA5
DATA6
0100H
0100H
000BH
000FH
1
2
1
1
1
2
DATA8
DATA10
0100H
0100H
ห้องสมุดไป่ตู้
0016H
001FH
4
2
1
3
4
6
2015/7/23
24
举例
【例4-2】
A1 DW VALUE ;定义变量A1为变量VALUE的偏移地址。
A2 DW VALUE+5 ;定义变量A2为变量VALUE第6个字节
概念


汇编语言是一种采用助记符表示的程序设计语言,即用助 记符来表示指令的操作码和操作数,用标号或符号代表地 址、常量或变量 汇编语言源程序与其经过汇编所产生的目标代码程序之间 有明显的一一对应关系,故也称汇编语言为符号语言 用汇编语言编写程序能够直接利用硬件系统的特性 占用内存空间少,执行速度快;源程序和所要解决问题的 数学模型之间的关系不够直观,程序设计需要较多的软件 开发时间,也增加了程序设计过程中出错的可能性
例如:常数B3H在语句中应写成0B3H
2015/7/23
15
字符串常数

是由单引号‘ ’括起来的一串字符
例如:‘ABCDEFG’和‘179’。单引号内的字符在汇编时都 以ASCII的代码形式存放在存储单元中。 其ASCII代码分别为41H、42H、43H、44H,…,4BH和 31H、37H、39H。字符串最长允许有255个字符
2015/7/23
11
4.2 8086汇编语言中常数、标号、 变量及表达式
4.2.1 常数、标号和变量 4.2.2 符号定义伪指令语句 4.2.3 表达式

2015/7/23
12
4.2.1 常数、标号和变量

汇编语言中数据项有常量、标号和变量3种 类型
2015/7/23
13
1.常数

常数就是指令中出现的那些固定值
数值常数 字符串常数
2015/7/23
14
数值常数

B: 表示二进制数。 例如,10110011B D: 表示十进制数。 例如,179D或 179 O: 表示八进制数。 例如,263O H: 表示十六进制数。 例如,B3H 汇编语句中的数值常数的第一位必须是数字,否 则汇编时将被看成是标识符

2015/7/23
8
伪指令

伪指令(指示性语句)。是给汇编程序的 命令,在汇编过程中由汇编程序进行处理
2015/7/23
9
伪指令分类



数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 宏处理伪指令 模块定义与连接伪指令 处理器选择伪指令 条件伪指令 列表伪指令 其他伪指令

基本定义方法:是在指令的操作助记符前加上标识符和冒 号,该标识符就是我们所要定义的标号
例如:START: PUSH DS
17
2015/7/23
3.变量
是与一个数据项的第一字节相对应的标识 符,它表示该数据项第一字节在现行段中 的偏移量 变量的值在程序运行期间可随时修改 汇编语言中的变量是通过伪指令定义的

2015/7/23
7
4.1.2 指示性语句
格式: [标识符(名字)] 指示符(伪指令) 表达式 标识符:是一个用字母、数字或加上下划线表示的一个符 号,标识符定义的性质由伪指令指定 指示符:指示符又称为伪指令,是汇编程序规定并执行的 命令 表达式:是常数、寄存器、标号、变量与一些操作符相结 合的序列,可有数字表达式和地址表达式两种 注释:同指令性语句
2015/7/23
30
BLE语句


格式: 名字 LABLE 类型 用途:是定义标号或变量的类型。变量的类型可以是 BYTE、WORD、DWORD等;标号的类型可以是NEAR 或FAR。LABLE伪指令并不占内存单元 应用:


LABEL伪指令可使同一个数据区兼有BYTE和WORD两种属性 LABEL伪指令也可将一个属性已经定义为NEAR或者后面跟有冒 号(隐含属性为NEAR) 的标号再定义为FAR

2015/7/23
26
1.EQU语句
格式: 名称EQU 功能:是为格式中的表达式赋了一个名称, 在编写源程序时,当某个表达式被多次引 用时,用到表达式或表达式值的地方都可 以用名称来代替 EQU伪指令不允许对同一符号重复定义

2015/7/23
27
举例
ABC EQU 2000H ;表示名称ABC就是等价于数值2000H。 XYZ EQU [BP+5] ;名称XYZ就代表地址表达式 [BP+5]。 ECON EQU E7H MOD 10 ;ECON是代表取模运算后的余 数
2015/7/23
6
4.1.1 指令性语句
格式: [标号:] 操作码 [操作数1,] [操作数2] [;注释] 标号:是指令语句的标识符 操作码:指令助记符。指令规定的符号 操作数:操作数可以根据指令的功能需要,可不 带操作数,带1个操作数或2个操作数 注释:是为方便程序人员阅读程序而加的说明
2015/7/23
31
举例
ARRAY1 LABEL BYTE ARRAY2 DW 10 DUP(?) AGAIN1 LABEL FAR ;定义标号 AGAIN1的属性为FAR AGAIN: PUSH AX ;定义标号AGAIN的 属性为NEAR
2015/7/23
16
2.标号

是用符号表示的地址,用以指示此指令语句所在的地址 3个属性:

段地址:是指标号对应的指令首字节所在的段地址 偏移地址:是指标号对应的指令首字节所在段内的偏移地址 类型:NEAR和FAR类型。标号如定义成NEAR类型,表示标号仅 在本段内被引用;如定义成FAR类型,表示标号可以在段间使用。 在转移和调用指令中常将标号作为转移目标地址使用。
相关文档
最新文档