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

上传人:我** 文档编号:117887431 上传时间:2019-12-11 格式:PPT 页数:179 大小:1.04MB
返回 下载 相关 举报
西安电子科技大学微机原理第4章_第1页
第1页 / 共179页
西安电子科技大学微机原理第4章_第2页
第2页 / 共179页
西安电子科技大学微机原理第4章_第3页
第3页 / 共179页
西安电子科技大学微机原理第4章_第4页
第4页 / 共179页
西安电子科技大学微机原理第4章_第5页
第5页 / 共179页
点击查看更多>>
资源描述

《西安电子科技大学微机原理第4章》由会员分享,可在线阅读,更多相关《西安电子科技大学微机原理第4章(179页珍藏版)》请在金锄头文库上搜索。

1、第4章汇编语言程序设计 *1 第4章 汇编语言程序设计 n4.1 8086汇编语言的语句 n4.2 8086汇编语言中常数、标号、变量及 表达式 n4.3 汇编语言源程序结构 n4.4 汇编语言程序设计 n4.5 宏定义与宏调用 n4.6 汇编语言程序的上机过程 Date 2 概念 n汇编语言是一种采用助记符表示的程序设计语言,即用 助记符来表示指令的操作码和操作数,用标号或符号代 表地址、常量或变量 n汇编语言源程序与其经过汇编所产生的目标代码程序之 间有明显的一一对应关系,故也称汇编语言为符号语言 n用汇编语言编写程序能够直接利用硬件系统的特性 n占用内存空间少,执行速度快;源程序和所要解

2、决问题 的数学模型之间的关系不够直观,程序设计需要较多的 软件开发时间,也增加了程序设计过程中出错的可能性 Date 3 汇编程序的功能 图4-1 汇编程序的功能示意图 Date 4 汇编语言源程序翻译成机器语言程 序任务 n根据用户的要求自动分配存储区域(包括程序区、数据 区、暂存区等); n自动地把各种进位制数转换成二进制数,把字符转换成 ASCII码; n计算表达式的值等; n自动对源程序进行检查,给出错误信息(如非法格式, 未定义的助记符、标号,漏掉操作数等)等。 n允许在源程序中把一个指令序列定义为一条宏指令的汇 编程序,增加了宏指令、结构、记录等高级汇编语言功 能。 Date 5

3、4.1 8086汇编语言的语句 n指令可由汇编程序翻译成机器语言指令,汇编 语言中的指令与机器语言指令基本上是一一对 应的,由CPU执行的语句,称为指令性语句; n伪指令则不汇编成机器语言指令,仅仅在汇编 过程中告诉汇编程序应如何汇编,称为指示性 语句; n宏指令是使用者利用上述基本语句自己定义的 新的指令。 Date 6 4.1.1 指令性语句 n格式: 标号: 操作码 操作数1, 操作数2 ;注释 n标号:是指令语句的标识符 n操作码:指令助记符。指令规定的符号 n操作数:操作数可以根据指令的功能需要,可 不带操作数,带1个操作数或2个操作数 n注释:是为方便程序人员阅读程序而加的说明 D

4、ate 7 4.1.2 指示性语句 n格式: 标识符(名字) 指示符(伪指令) 表达式 n标识符:是一个用字母、数字或加上下划线表示的一个 符号,标识符定义的性质由伪指令指定 n指示符:指示符又称为伪指令,是汇编程序规定并执行 的命令 n表达式:是常数、寄存器、标号、变量与一些操作符相 结合的序列,可有数字表达式和地址表达式两种 n注释:同指令性语句 Date 8 伪指令 n伪指令(指示性语句)。是给汇编程序的 命令,在汇编过程中由汇编程序进行处理 Date 9 伪指令分类 n数据定义伪指令 n符号定义伪指令 n段定义伪指令 n过程定义伪指令 n宏处理伪指令 n模块定义与连接伪指令 n处理器选

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

6、节)或 DWORD(双字型(4字节)等。 Date 11 4.2 8086汇编语言中常数、标号、 变量及表达式 n4.2.1 常数、标号和变量 n4.2.2 符号定义伪指令语句 n4.2.3 表达式 Date 12 4.2.1 常数、标号和变量 n汇编语言中数据项有常量、标号和变量3 种类型 Date 13 1.常数 n常数就是指令中出现的那些固定值 数值常数 字符串常数 Date 14 数值常数 n B: 表示二进制数。 例如,10110011B。 n D: 表示十进制数。 例如,179D或 179。 n O: 表示八进制数。 例如,263O。 n H: 表示十六进制数。 例如,B3H。 n

7、汇编语句中的数值常数的第一位必须是数字, 否则汇编时将被看成是标识符 例如:常数B3H在语句中应写成0B3H Date 15 字符串常数 n是由单引号 括起来的一串字符 例如:ABCDEFG和179。单引号内的字符在汇编时都以 ASCII的代码形式存放在存储单元中。 其ASCII代码分别为41H、42H、43H、44H,4BH和 31H、37H、39H。字符串最长允许有255个字符 Date 16 2.标号 n是用符号表示的地址,用以指示此指令语句所在的地址 n3个属性: 段地址:是指标号对应的指令首字节所在的段地址 偏移地址:是指标号对应的指令首字节所在段内的偏移地址 类型:NEAR和FAR

8、类型。标号如定义成NEAR类型,表示标号 仅在本段内被引用;如定义成FAR类型,表示标号可以在段间 使用。在转移和调用指令中常将标号作为转移目标地址使用。 n基本定义方法:是在指令的操作助记符前加上标识符和 冒号,该标识符就是我们所要定义的标号 例如:START: PUSH DS Date 17 3.变量 n是与一个数据项的第一字节相对应的标识 符,它表示该数据项第一字节在现行段中 的偏移量 n变量的值在程序运行期间可随时修改 n汇编语言中的变量是通过伪指令定义的 Date 18 1) 变量定义 n变量名DB 表达式;定义字节变量 n变量名DW 表达式;定义字变量 n变量名DD 表达式;定义双

9、字变量 n变量名DQ 表达式;定义长字变量 n变量名DT 表达式;定义一个十字节变量 Date 19 伪指令格式中的表达式 n一个或多个常数或某个运算公式(其值应为常数) n带引号的字符串。字符串必须用单引号括住,字符串的字符不超过255个 n用问号作为表达式。不带引号的问号是一个保留字,它可用作数据类型伪 指令DB、 DW、DD语句中的表达式 n带DUP(重复方式)表达式。DUP是表达式中的一个操作符。 表达式的格 式: 重复次数 DUP(表达式) n地址表达式(只能用于DW或DD)。操作数为地址表达式时,应遵循下列 规则: 当用DW定义地址表达式时,地址表达式中的变量名称表示该变量的第一个

10、存储 单元的偏移地址,地址表达式中的标号表示它所代表的指令(或伪指令)的第 一个字节的偏移地址; 当用DD定义地址表达式时,低位字用于预置偏移地址,高位字用于预置段地址 ,这些数值都是在定位时装入的; 地址表达式中的变量或标号可与常数值相加减。对于变量来说,运算结果的类 型不变;对标号来说,运算结果仍表示原标号所在段中的偏移地址; 变量或标号不能与变量或标号相加,但可相减,结果是没有属性的纯数值。 Date 20 2)变量属性 n段地址(SEG):变量所在段的段地址; n偏移地址(OFFSET):变量所在段内的偏移地址; n类型(TYPE):变量的类型是所定义的每个变量所占 据的字节数。对于D

11、B、DW、DD、DQ、DT定义的变量 其类型分别为 1、2、4、8、10。 n长度(LENGTH):变量定义时,一个变量名所定义的 变量个数。在含有DUP操作符的变量定义中,变量名所 定义的变量个数为定义格式中的重复次数。在其它各种 变量定义中,每个变量名所定义的变量个数均为 1。 n大小(SIZE):变量定义语句中,分配给同一变量名的 所有变量的总的字节数;大小(SIZE)=变量类型( TYPE)变量长度(LENGTH)。 Date 21 3)举例 DATA1 DB 20H DATA2 DW 0204H, 100H DATA3 DB (-1*3),(15/3) DATA4 DD 12345H

12、 DATA5 DB 0123 DATA6 DW AB, C, D DATA7 DB ? DATA8 DD ? DATA9 DB 5 DUP(00) DATA10 DW 3 DUP(?) Date 22 各变量在内存中分配的单元 图4-2 各变量在内存中分配的单元 Date 23 表4.1 部分变量的属性 变变量 名 段地 址 ( S E G ) 偏移地 址 ( OF FS ET ) 类类型 ( T Y P E ) 长长度 ( LE NG TH ) 大小 ( S I Z E ) DAT A 2 0100 H 0001H212 DAT A 3 0100 H 0005H111 DAT A 4 010

13、0 H 0007H414 DAT A 5 0100 H 000BH111 DAT A 6 0100 H 000FH212 DAT A 8 0100 H 0016H414 DAT A 1 0 0100 H 001FH236 Date 24 举例 【例4-2】定义地址表达式。 A1 DW VALUE ;定义变量A1为变量VALUE的偏移地 址。 A2 DW VALUE+5 ;定义变量A2为变量VALUE第6个字 节的偏移地址。 A3 DW VALUE-3 ;定义变量A3为变量VALUE前3个字 节的偏移地址。 A4 DD VALUE ;高位字为变量VALUE所在段的段地址 ,低位字为变量VALUE

14、的偏移地址。 Date 25 4.2.2 符号定义伪指令语句 n符号定义伪指令的用途是给一个符号重新 命名,或定义新的类型属性等 n符号包括汇编语言的变量名、标号名、过 程名、寄存器名以及指令助记符等。 n常用的符号定义伪指令有EQU、(等号) 和LABLE Date 26 1.EQU语句 n格式: 名称EQU表达式 n功能:是为格式中的表达式赋了一个名称 ,在编写源程序时,当某个表达式被多次 引用时,用到表达式或表达式值的地方都 可以用名称来代替 n EQU伪指令不允许对同一符号重复定义 Date 27 举例 ABC EQU 2000H ;表示名称ABC就是等价于数值 2000H。 XYZ

15、EQU BP+5 ;名称XYZ就代表地址表达式 BP+5。 ECON EQU E7H MOD 10 ;ECON是代表取模运算后的 余数 Date 28 2.=(赋值)语句 n格式: 名字=表达式 n功能:与EQU伪指令基本相同,主要区别 在于它可以对同一个名字重复定义 Date 29 举例 COUNT=100 MOV CX,COUNT ;(CX)100 COUNT = COUNT10 MOV BX,COUNT ;(BX)90 Date 30 3.LABLE语句 n格式: 名字 LABLE 类型 n用途:是定义标号或变量的类型。变量的类型可以是 BYTE、WORD、DWORD等;标号的类型可以是 NEAR或FAR。LABLE伪指令并不占内存单元 n应用: LABEL伪指令可使同一个数据区兼有BYTE和WORD两种属性 LABEL伪指令也可将一个属性已经定义为NEAR或者后面跟有 冒号(隐含属性为NEAR) 的标号再定义为FAR Date 31 举例 ARRAY1 LABEL BYTE ARRAY2 DW 10 DUP(?) AGAIN1 LABEL

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

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

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