微型计算机原理与接口技术教学课件 何超 第4章 汇编语言及汇编程序设计

上传人:w****i 文档编号:94557134 上传时间:2019-08-08 格式:PPT 页数:61 大小:501.50KB
返回 下载 相关 举报
微型计算机原理与接口技术教学课件 何超 第4章 汇编语言及汇编程序设计_第1页
第1页 / 共61页
微型计算机原理与接口技术教学课件 何超 第4章 汇编语言及汇编程序设计_第2页
第2页 / 共61页
微型计算机原理与接口技术教学课件 何超 第4章 汇编语言及汇编程序设计_第3页
第3页 / 共61页
微型计算机原理与接口技术教学课件 何超 第4章 汇编语言及汇编程序设计_第4页
第4页 / 共61页
微型计算机原理与接口技术教学课件 何超 第4章 汇编语言及汇编程序设计_第5页
第5页 / 共61页
点击查看更多>>
资源描述

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

1、微型计算机原理与接口技术,主 编 何 超,中国水利水电出版社, 理解汇编语言和汇编程序的概念。 掌握汇编语言源程序的书写规则、语句的基本格式、程序的分段结构。 熟悉汇编语言的基本表达、伪指令语句及其应用。 熟悉汇编语言程序的上机运行、调试过程,掌握基本操作技能。 掌握汇编语言程序设计基本步骤,第4章 汇编语言及汇编程序设计,4.1 汇编语言概述,4.1.1 汇编语言,1机器指令:CPU能直接识别和执行的指令称为机器指令,机器指令在表现形式上为二进制代码。机器指令与CPU有密切的关系,通常不同种类的CPU对应的机器指令也不同。 2、机器语言:用二进制编码的机器指令的集合及一组使用机器指令的规则。

2、用机器语言描述的程序称为目的程序或目标程序,机器语言是CPU能直接识别的唯一语言。 3、机器语言不能用人们熟悉的形式来描述计算机需要执行的任务,且编写程序十分麻烦,容易出错,调试也困难。,2汇编语言,汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大方便。 实际上,汇编语言就是机器语言程序的符号表示。,3汇编程序,由于CPU能直接识别的语言是机器语言,所以用汇编语言编写的源程序必须翻译成为用机器语言表示的目标程序后才能由CPU执行。把汇编语言源程序翻译成目标程序的过程称为汇编,完成汇编任务的程序

3、叫做汇编程序。汇编过程如图4-1所示。,(1)DOS汇编环境。 在DOS时代,学习汇编就是学习系统底层编程的代名词,DOS环境下是16位的汇编语言。在DOS汇编中我们可以采用中断调用功能以及其他内核提供的功能。 (2)Win32汇编环境。 Windows把我们和计算机的硬件隔离开,Win32汇编可以当作一种功能强大的开发语言使用,使用它完全可以开发出大型的软件来,Win32汇编是Windows环境下一种全新的编程语言,使用Win32汇编语言是了解操作系统运行细节的最佳方式。,4.1.2 汇编环境介绍,4.1.3 汇编语言上机过程,(1)用编辑程序(例如EDIT)建立ASM源文件(文件名.ASM

4、)。 (2)用汇编程序(例如:MASM或ML)对ASM源文件进行汇编,产生OBJ目标文件(文件名.OBJ);若在汇编过程中出现语法错误,根据错误信息提示(如位置、类型、说明),用编辑软件重新调入源程序进行修改。 (3)用链接程序 (例如:LINK)对目标文件进行连接,生成EXE文件(文件名.EXE)。 (4)在DOS提示符下,输入EXE文件名,运行程序。,4.2 汇编语言标识符、表达式及运算符,4.2.1 汇编语言语句格式 一般情况下,汇编语言的语句可以由以下几部分组成: 名字 操作符 操作数 ;注释 说明: (1)用“ ”框住的部分表示这个部分可有可无。各部分之间必须用“空格符”或“横表符(

5、TAB)”隔开。 (2)名字就是一个符号。 (2)操作符就是指令的助记符。 (3)操作数是操作符的操作对象,由一个或多个表达式组成,当有两个或两个以上的操作数时,各操作数之间用逗号隔开。 (4)注释字段是以“;”开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分,用来说明本条指令(或本段程序)在程序中的功能和作用。,4.2.2 汇编语言标识符,汇编语言每条语句的第一个部分是它的名字字段,名字又称为标识符,可以是“标号”或“变量”,标号后面要跟冒号,变量则无。 标识符只有当要用符号地址访问该语句时才出现。标识符可以使用的字符有:字母AZ,字母az,数字09及专用字符?、,、_、$

6、等。不区别大小写字母,数字不能放在第一个位置。 标识符有3种属性:段属性、偏移属性及类型属性。,标识符有3种属性,(1)段属性。 段属性表示标识符所在段的段起始地址,标号的值存放在CS寄存器中;变量的值存放在CS以外的寄存器中。 (2)偏移属性。 偏移属性表示段内偏移地址,从本段开始到标识符位置的字节数。标识符的偏移地址是16位或32位无符号数,取决于段的长度。 (3)类型属性。 标号的类型有两种:NEAR指明它是段内引用,指针长度为2字节;FAR指明它是段外引用,指针长度为4字节;变量的类型主要定义该变量保留的字节数,有字节、字、双字等。,4.2.3 表达式和运算符,8086宏汇编有算术运算

7、符、逻辑运算符、关系运算符、分析运算符和综合运算符5种。 (1)算术运算符。 算术运算符用于完成算术运算,有7种运算: (2)+,-,*,/ 与通常的用法相同。 (3)MOD(取余): 两数相除之余数, 例 10 MOD 2=0 (4)SHL(左移) :按二进制左移, 例 30H SHL 2 =C0H (5)SHR(右移) :按二进制右移, 例 30H SHR 2 =0CH,00110000,00110000,00,00110000,001100,00,有+(加法)、(减法)、(乘法)、/(除法)、MOD(求余)、SHL(左移)、SHR(右移),(2)逻辑运算符,作用:是对其操作数进行按位操作

8、。 逻辑运算符有:,1010 1010,1011 1111,AND(与)、OR(或)、XOR(异或)、NOT(非),1001 0110,0010 0100,(3)关系运算符,关系运算符的运算对象是两个性质相同的项目。 关系运算的结果为:关系成立或不成立,有以下 6种:,它们用两个表达式值的比较,表达式的值一定是常数或是同一段内的偏移地址,比较的结果为逻辑值,关系成立,结果为真,用全1表示,即0FFFFH;不成立为假用全0表示,即0。,EQ(相等) NE(不相等) LT(小于) GT(大于) LE(小于或等于) GE(大于或等于),(4)分析运算符,分析运算符是对存储器地址进行运算的。 分析运算

9、符有5个:,SEG(求段基值) OFFSET(求偏移量) TYPE(求变量类型) LENGTH(求变量长度) SIZE(求字节数),1) 取段基址操作符SEG(Segment),格式:SEG 变量或标号,功能:当操作符 SEG 置于变量或符号前面时,汇编程序就回送变量或标号所在段的段基址。,1) 取偏移地址操作符OFFSET,格式: OFFSET 变量或标号,功能:当操作符OFFSET置于变量或标号前时,汇编程序就自动计算出该变量或标号在它段内的偏移地址。,3) 取类型操作符TYPE,格式:TYPE 变量或标号,功能:如果是变量,则汇编程序将回送该变量的以字节数表示的类型:DB为1,DW为2,

10、DD为4,DQ为8。如果是标号,则汇编程序将回送代表该标号类型的数值:NEAR为1,FAR为2。,4) 取变量所含的数据存储单元个数操作符 LENGTH,格式 :LENGTlH 变量,功能:如果变量是用重复数据操作符DUP说明的,汇编程序将回送外层DUP给定的值;如果变量没有用DUP说明,则返回的值总是1。,5) 取变量所含的数据存储区大小操作符SIZE,格式:SIZE 变量,功能:运算符SIZE加在变量的前面,汇编程序回送的值等于LENGTH和TYPE两个运算符返回值的乘积。,(5)综合运算符。,综合运算符可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性

11、,所以又称为属性修改运算符。 有6个综合运算符:,PTR、段属性前缀、SHORT、THIS、HIGH 和LOW,1)PTR 格式:类型 PTR 地址表达式 其中,地址表达式是指要修改类型属性的标号或存储器操作数。如果它是标号,则与之对应的类型有:NEAR、FAR;如果它是存储器操作数,则与之对应的类型有:BYTE、WORD、DWORD。 2)段跨越前缀 它是在存储器操作数之前加上段寄存器名和冒号用于强行指定此存储器操作数相对哪个段寄存器,共有4种:DS:、CS:、SS:和ES:,3)SHORT 用来修饰JMP指令中转向地址的属性,指出转向地址是在下一条指令地址的128127字节范围之内。 4)

12、HIGH/LOW 格式:HIGH 常数或地址表达式 LOW 常数或地址表达式 用于将一个表达式的高字节和低字节分开。LOW取低字节,HIGH取高字节。,2. 表达式,各类运算符和常数、寄存器名、标号、变量一起共同组成表达式。表达式可以是数字表达式,也可以是地址表达式。 表达式举例: x + ;表达式为变量名“x”的值加1 offset data ;表达式为取标号“data”的偏移量,4.3 伪指令和宏指令,汇编语言有指令语句、伪指令语句和宏指令语句。 (1)指令语句。 汇编程序对源程序进行汇编时,把指令语句翻译成机器指令,这类指令能够产生目标代码,是CPU可以执行的能够完成特定功能的语句。 (

13、2)伪指令语句。 伪指令没有与其对应的机器指令,伪指令语句是为汇编程序和连接程序提供一些必要控制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,包括符号的定义、变量的定义、段的定义等,以及分配存储区、指示程序结束等。,(3)宏指令语句。,在汇编语言源程序中,若某程序片段需要多次使用,为了避免重复书写,可以把它定义为一条宏指令。宏指令是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。 思考:伪指令与指令性语句最大区别是? 伪指令语句经汇编后不产生任何机器代码,而指令性语句经汇编后会产生相应的机器代码; 伪指令语句所指示的操作是在程序汇编时就完成了的,而指令性

14、语句的操作必须在程序运行时才能完成。,4.3.1 数据定义伪指令,1概念 数据定义伪指令用来定义一个变量的类型,并将所需要的数据放入指定的存储单元中。也可以只给变量分配存储单元,而不赋予特定的值。 格式: 变量名 数据定义符 操作数 ,操作数 ;注释 说明:操作数可以是字符串、数字、复制操作符DUP,也可以使用表达式。 注释部分用来说明该伪操作的功能。,常用的数据定义符有:,例如: DATA1 DB 12,56H DATA2 DW 12,3+4 DATA3 DB THXY DATA4 DW TH,XY DATA5 DW 天,河,学,院,DB:字节变量定义符 DW:字变量定义符。 DD:双字变量

15、定义符 DQ:四字变量定义符。 DT:十字节变量定义符。,注意:,字符串可以看成串常数,用单引号或双引号引起来,得到的值是字符串的ASCII码值,使用DW定义字符串时,引号中间只能放两个字符,存储器的低地址放第二个字符,高地址放第一个字符,在数据定义及存储空间分配伪指令中,“?”表示只申请存储空间,不存放数值,等到以后再给该单元赋值。 举例: DATA1 DB Tian He Xue Yuan,0DH,0AH ;0DH和0AH分别表示 回车和换行 DATA2 DB ? ;表示定义1个字节的存储空间 DATA3 DB 4 DUP(?) ;表示定义4个字节的存储空间,2分析运算符(前面已讲),4.

16、3.2 符号定义语句,通过符号定义语句,可把常数、表达式等用符号来表示。 1等价语句EQU 等价语句的一般格式为:符号名 EQU 表达式 注意: 表达式可以是:常量表达式,地址表达式,变量、标号或指令助记符; 不可以重复使用 例如: COUNT EQU 10 ;用COUNT代表常数10 THXY EQU “Tian He Xue Yuan“ ;用一个简单的符号代表一个复杂的字符串,2等号语句,等号“=”伪操作可以代替EQU使用,差别在于“=”伪操作可以重复定义。 例如: X = 1 X = 10 X = 100,3定义符号名语句,定义符号名语句的一般格式为:符号名 LABEL 类型 功能:LABEL伪操作使同一个变量具有不同的类型属性。 说明:在定义符号名语句中,类型可以为:BYTE、WORD、DWORD、QDWORD、TBYTE或FWORD。 例如:

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

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

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