微机原理与接口技术 第二版 教学课件 ppt 作者 周明德 第4章 汇编语言程序设计

上传人:E**** 文档编号:89375520 上传时间:2019-05-24 格式:PPT 页数:196 大小:1.21MB
返回 下载 相关 举报
微机原理与接口技术 第二版  教学课件 ppt 作者  周明德 第4章  汇编语言程序设计_第1页
第1页 / 共196页
微机原理与接口技术 第二版  教学课件 ppt 作者  周明德 第4章  汇编语言程序设计_第2页
第2页 / 共196页
微机原理与接口技术 第二版  教学课件 ppt 作者  周明德 第4章  汇编语言程序设计_第3页
第3页 / 共196页
微机原理与接口技术 第二版  教学课件 ppt 作者  周明德 第4章  汇编语言程序设计_第4页
第4页 / 共196页
微机原理与接口技术 第二版  教学课件 ppt 作者  周明德 第4章  汇编语言程序设计_第5页
第5页 / 共196页
点击查看更多>>
资源描述

《微机原理与接口技术 第二版 教学课件 ppt 作者 周明德 第4章 汇编语言程序设计》由会员分享,可在线阅读,更多相关《微机原理与接口技术 第二版 教学课件 ppt 作者 周明德 第4章 汇编语言程序设计(196页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计,4.1 汇编语言的格式 4.1.1 8086汇编语言程序的一个例子 MY_DATA SEGMENT ;定义数据段 SUM DB ? ;为符号SUM保留一个字节 MY_DATA ENDS ;定义数据段结束 MY_CODE SEGMENT ;定义码段,ASSUME CS:MY_CODE, ;规定CS和DS的内容 DS:MY_DATA PORT_VA1 EQU 3 ;端口的符号名 GO: MOV AX, MY_DATA ;DS初始化为MY_DATA MOV DS, AX MOV SUM, 0 ;清SUM单元,CYCLE: CMP SUM, 100 ;SUM单元与100相比较

2、 JNA NOT_DONE ;若未超过,转至NOT_DONE MOV AL, SUM ;若超过,把SUM单元的内容 OUT PORT_VAL, AL ;通过AL输出 HLT ;然后停机,NOT DONE:IN AL, PORT_VAL ;未超过时,输入下一个字节 ADD SUM, AL ;与以前的结果累加 JMP CYCLE ;转至CYCLE,MY CODE ENDS ;代码段结束 END GO ;整个程序结束 由这个例子看到,8086汇编的一个语句行是由4个部分组成的,即 标号 操作码 操作数 ;注释(或名字),4.1.2 8086汇编语言源程序的格式,源程序的一般格式为: NAME1 SE

3、GMENT 语句 语句 NAME1 ENDS NAME2 SEGMENT 语句 语句 NAME2 ENDS END ,4.2 语句行的构成,4.2.1 标记(Token) 1IBM宏汇编的字符集 (1)字母 包含大写的英文字母:ABCDXYZ; 小写的英文字母:abcxyz。,(2)数字 阿拉伯数字:0123456789。 (3)特殊字符,图4-1 IBM宏汇编字符集中可打印字符,2界符(Delimiters),图4-2 IBM宏汇编中的界符集,3常量(Constants),(1)数字(整数)常量 二进制常量 以字母B结尾的由一串“0”和“1”组成的序列。例如,00101100B。, 十进制常

4、量,由若干个09的数字组成的序列,可以以字母D作结尾,或没有任何字母作结尾。例如,1234D或1234。, 八进制常量,以字母Q结尾,由若干个07的数字组成的序列。例如255Q、377Q等。, 十六进制常量,以字母H结尾,由若干个09的数字或AF的字母所组成的序列。,(2)字符串常量,字符串常量是由包含在单引号内的1或2个ASCII字符构成的。,4标识符(Identifiers),标识符是由程序员自由建立起来的、有特定意义的字符序列,如例子中的SUM、CYCLE、PORT_VAL等。 一个标识符是由最多为31个字母、数字及规定的特殊字符(? _ $)等组成的,且不能用数字打头(以免与十六进制数

5、相混淆)。,下面是一些标识符的例子: X GAMMA JACKS THIS_DONE THISDONE,5保留字(Reserved Words),保留字看上去像标识符,但是它们在语言中有特殊的意义,而且不能用它们作为标识符。,表4-1 IBM宏汇编中的保留字,续表,续表,6注释(Comment),为了使汇编语言的源程序更便于阅读和理解,常在源程序中加上注释。 注释是在分号(;)后面的任意的字符序列,直到行的结尾。 在汇编时,汇编程序对它们并不进行处理。 在可打印的文件中,注释和源程序一起打印。,4.2.2 符号(Symbol),1寄存器(Registers) 2变量(Variable) 所有的

6、变量都具有三种属性: (1)段值(SEGMENT),即变量单元所在段的段地址(段的起始地址)的高16位,低4位始终为0。,(2)偏移量(OFFSET),即变量单元地址与段的起始地址之间的偏移量(16位)。 (3)类型(TYPE),变量有三种类型:字节(Byte)、字(word)和双字(Double Word)。,3标号(Label) 4数 5其他符号,4.2.3 表达式(Expressions),1操作数(Operands) 一个操作数或者是一个寄存器名,或是一个常量(数字常量或字符串常量),或是一个存储器操作数。,(1)常量操作数,具有数字值的操作数是常量或是表示常量的标识符(符号)。 例中

7、的常量操作数是100、PORT_VAL。 常量操作数的值的允许范围是从65535+65535。,(2)存储器操作数,存储器操作数,通常是标识符。 具体地说,可以分成标号(Label)和变量(Variable)两种。,变量可以具有以下几种寻址方式: 直接寻址 基址寻址 变址(索引)寻址 基址变址寻址,2运算符(Operators), 算术运算符(Arithmetic Operators) 逻辑运算符(Logical Operators) 关系运算符(Relational Operators) 分析运算符(Analytic Operators) 合成运算符(Synthetic Operators)

8、,(1)算术运算符,一个是加(+)、减()、乘(*)和除(/)运算符。 另一个算术运算符是MOD,它产生除法以后的余数,例如,19/7是2(商是2),而19MOD7是5(余数是5)。,因此,对例子中的存储器地址作如下运算: SUM+2 CYCLE-5 NOT_DONE-GO 是有效的表达式。而 SUM-CYCLE,(2)逻辑运算符,逻辑运算符是按位操作的AND、OR、XOR和NOT。 1010 1010 1010 1010B AND 1100 1100 1100 1100B=1000 1000 1000 1000B 1100 1100 1100 1100B OR 1111 0000 1111

9、0000B=1111 1100 1111 1100B NOT 1111 1111 1111 1111B=0000 0000 0000 0000B,(3)关系运算符,在IBM宏汇编中有以下关系运算符: 相等Equal(EQ) 不等Not Equal(NE) 小于Less Than(LT), 大于Greater Than(GT) 小于或等于Less Than or Equal(LE) 大于或等于Greater Than or Equal(GE),若在程序中有以下关系运算: MOV BX, PORT_VAL LT 5 若PORT_VAL的值小于5,关系为真,则汇编程序在汇编后产生的语句为: MOV

10、BX, 0FFFFH 若PORT_VAL的值不小于5,则关系为假,汇编后产生的语句为: MOV BX, 0,(4)分析运算符 (5)合成运算符,4.2.4 语句(Statements),一个汇编语言的源程序是由一条条语句组成的,语句就是对需要计算机完成的动作的说明。 源程序中的语句可分成两类:指令语句和指示性语句。,指令语句,汇编程序把它们翻译成机器代码,这些代码命令8086执行某些操作。如MOV、ADD、JMP等。,对于指示性语句(伪指令),汇编程序并不把它们翻译成机器代码,实际上也不可能翻译成机器代码,只是用来指示、引导汇编程序在汇编时做一些操作,如定义符号、分配存储单元、初始化存储器等,

11、所以伪指令本身不占用存储单元,例如: MY_PLACE DB ?,指令语句的格式为: 标号:助记符 参数, , 参数;注释 指示性语句的格式为: 名字 命令 参数, , 参数 ;注释,4.3 指示性语句(Directive Statements),在IBM宏汇编中有以下几种指示性语句: (1)符号定义语句(Symbol definition) (2)数据定义语句(Data definition) (3)段定义语句(Segmentation definition) (4)过程定义语句(Procedure definition) (5)结束语句(Termination),4.3.1 符号定义语句,

12、1等值语句EQU NAME EQU EXPRESSION 一些例子如下: BOILING_POINT EQU 212 BUFFER_SIZE EQU 32 NEW_PORT EQU PORT_VAL+1 COUNT EQU CX CBD EQU AAD,2等号(Equal sign)=语句,EMP = 6 EMP = 7 EMP = EMP + 1,3解除语句PURGE,PURGE语句的格式为: PURGE 符号1, 符号2, , 符号n 例如: PURGE NEW_PORT NEW_PORT EQU PORT_VAL+10,4.3.2 数据定义语句,数据定义语句,为一个数据项分配存储单元,用

13、一个符号名与这个存储单元相联系,且为这个数据提供一个任选的初始值。,与数据项相联系的符号名称为变量。 以下是数据定义语句的例子: THING DB ? ;定义一个字节 BIGGER_THING DW ? ;定义一个字 BIGGEST_THING DD ?;定义一个双字,例如: THING DB 25 不仅使THING这个符号与一个字节的存储单元相联系,而且在汇编时会把25放入与THING相联系的存储单元中。 所以THING是一个字节变量,它的初始值为25。,同样,以下语句: BIGGER_THING DW 4142H 在汇编时就会把41H与42H分别放至与BIGGER_THING相联系的两个连

14、续的字节单元中(一个字中),而且42H放在地址低的字节,41H放在地址高的字节。 所以,若BIGGER_THING是一个字变量,则它的初始值为4142H。,语句 BIGGEST_THING DD 12345678H 在汇编时的初始化如图4-3所示。 它定义了一个双字变量,且给了初始值。,IN_PORT DB PORT_VAL OUT_PORT DB PORT_VAL+1 其中,PORT_VAL已由EQU语句赋了值。,图4-3 定义双字的数据定义语句的作用,一个存储单元的类型如下: (1)数据字节 SUM DB ? ;定义一个字节 (2)数据字(两个连续的字节) BIGGER DW ? ;定义一

15、个字,(3)数据双字(四个连续的字节) BIGGEST DD ? ;定义一个双字 (4)Near指令单元 CYCLE: CMP SUM, 100 (5)Far指令单元,若在一个程序中,对它的数据段有如下定义: DATA_TABLES SEGMENT BUFFER1 DB 100 DUP(0) BUFFER2 DW 200 DUP(20H) BUFFER3 DD 100 DUP(13) DATA_TABLES ENDS,其中的每一个存储单元都有一些属性(或组成部分)。 分析运算符SEG,返回的是一个存储单元的段地址(即它所在段的起始地址);OFFSET运算符返回的是每一个存储单元地址的段内偏移量,即它与段地址之间的偏差。故: SEG BUFFER1 SEG BUFFER2 SEG BUFFER3,都是相同的,它们返回的地址都是DATA_TABLES的地址。 所以,若要对数据段寄存器初始化,则可以采用指令:,MOV AX, SEG BUFFER1 MOV DS, AX 而 OFFSET BUFFER1 OFFSET BUFFER2 OFFSET BUFFER3,是各不相同的。若要向这些缓冲区填入新的数据,可以用一些地址指针,则可以用以下指令来初始化地址指针: MOV BX, OFFSET BUFFER1 MOV SI, OFFSET BUFFER2

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

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

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