第5章 汇编语言程序设计.ppt
《第5章 汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章 汇编语言程序设计.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 汇编语言程序设计,一. 学习如何运用指令系统中的指令来编制,采用汇编语言程序来学习程序设计。二. 学习如何组织、构造一个汇编语言源程序所必需的各种伪指令的格式、作用和使用。,学习目标,(课时安排:6课时)一、理解汇编语言程序中3种语句格式、特点和作用。二、理解汇编语言程序中使用的各种运算符;对常用的运算符(如OFFSET、TYPE、PTR等)应会正确使用。三、掌握汇编语言程序中符号、数据、段结构和过程的定义方法。四、掌握汇编语言程序中段寄存器的各种加载方法。,学习目标,五、了解宏指令的定义和使用。六、掌握无条件转移指令、条件转移指令、循环控制指令、子程序的调用和返回指令的格式与使用。七
2、、掌握顺序、分支、循环和子程序结构的程序设计方法与技术。八、理解在数值运算、串操作运算和代码转换中程序设计实例。九、了解汇编语言程序的开发过程。,5.1 概述,程序:能完成一定的运算与操作功能的指令序列,称为。计算机语言:,计算机语言,机器语言,汇编语言,高级语言,是以二进制代码0和1组成的机器指令,是计算机能够直接识别和执行的语言。,用助记符表示指令功能的计算机语言,它的指令语句与机器指令一一对应。,面向用户,与特定机器属性相分离的程序设计语言,更接近人类语言与数学语言。,5.2 汇编语言语句,汇编语言编制的程序计算机不能识别和执行,必须经过汇编程序的汇编(即翻译)转换成机器语言指令代码(即
3、目标程序),再由计算识别并执行。语句是汇编语言程序的基本组成单位。一个汇编语言源程序有3种基本语句: 指令语句 伪指令语句 宏指令语句(或称宏调用语句),指令语句与伪指令语句,每个语句由4个字段组成:名字 操作符号 操作数 ;注释,语句格式:名字 操作符号 操作数 ;注释1. 名字字段:(1)在指令语句中,名字字段为标号,为一任选字段,且一定是用“:”作为标号的结束符,是一条指令的符号地址通常是一个程序段或子程序的入口指令语句选用标号。(2)在伪指令语句中,可为常量名、变量名、段名和过程名等,该字段是任选还是必需的,要视伪指令而定。名字字段后面用空格作结束符,不得使用冒号。(3)组成名字的规则
4、:P174页。2. 操作符字段:是指令助记符,表示目标程序在运行时中央处理器CPU应完成的功能。,3. 操作数字段:是由操作符字段(指令助记符/伪指令)确定。该字段与操作符字段之间用空格或制表符TAB为分界符。各操作数之间用逗号或空格分隔。4. 注释字段:本字段为任选字段,以分号作这字段的开始符,可由任意字符串表示。是对某些程序段或指令加以注解,说明它们的功能及意义。,5.3 汇编语言数据,5.3.1 符号定义语句(两种伪指令)(1)等值伪指令、 (2)等号伪指令5.3.2 数据定义语句(1)数值表达式、 (2)?表达式、(3)字符串表达式、(4)带DUP表达式,5.3 汇编语言数据,5.3.
5、3 数据(1)常数、 (2)寄存器操作数、(3)存储器操作数5.3.4 运算符(5种)(1)算术运算符、(2)逻辑运算符、(3)关系运算符、(4)数值返回运算符、(5)属性运算符、(6)运算符优先级,5.3.1 符号定义语句,1 . 等值伪指令:格式:功能:EQU是等值伪指令,它把右边的值或符号赋给EQU左边的符号。注意:等值伪指令语句仅在汇编源程序时,作为替代符号作用,不产生任何目标代码,也不分配存储单元。在同一源程序中,同一符号不能用EQU伪指令重新定义。,符号 EQU 表达式/符号,:见教材以下各例题(1)常数或数值表达式:例:COUNT EQU 15*2+10 (2)地址表达式:例:A
6、DDR1 EQU DS:BP(3)变量名、标号或指令助记符例:NMU1 EQU COUNT1 ; BEING EQU START ; BTOD EQU DAA ;,为变量名CUNT1另定义一个别名。,为标号START另定义一个别名。,为指令助记符DAA另定义一个别名。,5.3.1 符号定义语句,2. 等号伪指令:格式: 符号=表达式/符号功能:与EQU相同 。等号伪指令与等值伪指令之间的差异:(1)等号伪指令可以重新定义符号。(2)等号伪指令可以为已定义的变量名或标号定义另一个别名,但不能为指令助记符定义另一个别名。,5.3.2 数据定义语句,在存储区中,设置常数、数据或保留若干存储单元,应使
7、用数据定义伪指令:数据定义伪指令有:,DB定义字节数据DW定义字数据DD定义双字数据DF定义6字节数据DQ定义8字节数据DT定义10字节数据,数据定义语句的格式:变量名 表达式1,表达式2,例:,DBDWDD,DATA SEGMENT VAR1 DB 12HVAR2 DW 1234HVAR3 DD 12345678HDATA ENDS,SEGMENT /ENDS表示逻辑段的开始 / 结束,经过数据定义语句定义的变量,均有3个属性:(1)段属性(SEG):表示变量存放在哪个逻辑段中,且用这个逻辑段的段基值表示。(2)偏移量属性(OFFSET):表示在逻辑段中离段起始单元(段基址)的距离(字节数)
8、。(3)类型属性(TYPE):表示变量的数据的大小(字节数据、字数据、双字数据),主要依据DB、DW、DD等伪指令来确定的。,几种表达式:数值表达式:例:2. ?表达式:,DA_B1 DB 50DA_B2 DB 12H,34H,56HDA_W1 DW 1234HDA_W2 DW 1234H,5678H,9ABCH,?表示可预置任意内容。?表达式常用于保留一个或多个存储单元,以备程序运行时,作工作单元或保存结果用。,VAR_B DB ?, ?VAR_W DW ?, ?,3. 字符串表达式:(1)字符串必须用引号(单引号或双引号)括起来。(2)字符串中各字符均是以ASCII码形式存放在相应存储单元
9、中。(3)DB、DW、DD中的字符串的表示形式和字符ASCII码的存储顺序的差异。具体见教材P177页,及图52。,4. 带DUP表达式: 变量名 表达式1 DUP(表达式2) 例:,定义重复数据操作符。,DBDWDD,是数据的重复的次数。,是重复数据的内容。,NU_B1 DB 10H DUP(?)NU_W1 DW 20H DUP(10H),;保留10H个字节单元,每个字节单元可预置任意内容。,;保留20H个字节单元,每个字节单元预置数据为10H,共占有40H 个字节存储单元。,5.3.3 数据,一、常数:1.数值常数:2.字符常数: 用单引号或双引号括起来的一个或多个字符组成的字符序列,称为
10、字符常数。,数据有数值和属性,两部分,对一个语句汇编成机器目标代码有直接关系。,是没有任何属性的纯数值。,常数的应用:(1)在指令语句的源操作数中作立即数操作数。例:(2)在指令语句的寻找存储器操作数的各种寻址方式中作位移量。例:(3)在某些伪指令语句的操作数字段中,赋值数据。例:见教材P179,MOV AL,0ABHMOV BX,AB,MOV AL,DS:140H ;直接寻址方式MOV BX,45HSI ;变址寻址方式MOV 0FEHBP,AL ;基址寻址方式MOV 1234HBHDI,AX ;基址变址寻址方式,二、寄存器操作数:,1.CPU中通用寄存器和段寄存器的内容可作操作数使用。2.C
11、S仅可作源操作数,其他寄存器均可。3.指令指针IP不可作寄存器操作数使用.4.寄存器的内容作操作数的数据时,用寄存器名表示.5.寄存器作地址指针时,要将寄存器名用方括号括起来.,三、存储器操作数:,1. 变量:在一个逻辑段中,用数据定义语句定义并预置数据初值后,变量名就作为存储单元的符号地址,代表了存放在存储单元的数据。使用变量的两种情况:(1)在指令语句中的操作数字段中,变量名作为址表达式的组成部分之一。(2)在用DW或DD的数据定义语句中,有三种情况,见教材 P181。,指存储单元中的内容,变量、标号及地址表达式是这种操作数的主要表示形式。,2. 标号:定义:指令语句的名字字段上的名字,称
12、为标号。是一条指令的符号地址。标号常作为转移类指令的操作数,表示转移的目标地址。标号的3个属性:(1)段属性(SEG):表示标号所在指令的逻辑段,且用该逻辑段的段基值表示。(2)偏移量属性(OFFSET):表示标号所在指令距离起始单元之间的字节数。(3)类型属性(TYPE):是作为段内转移不是段间转移的目标地址。有 两种。,NEAR(近):段内转移FAR (远):段间转移,5.3.4 运算符,1.算术运算符:(表5-1)2.逻辑运算符:按位进行运算。AND、OR、XOR、NOT3.关系运算符:用于比较两个表达式值的大小。 当比较关系式成立时,用全1表示“真”; 当比较关系式不成立时,用全0表示
13、“假”。,具体内容见教材,4.数值返回运算符:,定义:数值返回运算符的运算对象是存储器操作数,即由变量名或标号组成的地址表达式。格式: (1)SEG和OFFSET运算符:主要反映存储器操作数的地址部分。该运算符出现在变量名或标号的前面,返回这个变量名或标号所在段的段基值勤或在段内的偏移量。例:,(2)TYPE运算符:TYPE运算符是用数字形式表示变量或标号的类型属性。(3)LENGTH和SIZE运算符:运算符仅加在变量名的前面,它返回的是数组变量的元素个数( LENGTH )和数组变量所占的总字节数( SIZE )。运算规则:变量是用重复操作符DUP定义的,则LENGTH 的运算结果是外层DU
14、P的给定值(即外层重复次数)。若无DUP定义,则结果总是1。SIZE是LENGTH 和TYPE两个运算结果的乘积。,反映存储器操作数的某些特征。,5.属性运算符PTR:定义:PTR是用来临时对存储器操作数的类型进行设定、说明。格式: 例:6.运算符优先级:(表5-5运算符优先级)(1)先执行优先级别高的运算符;(2)优先级别相同的运算符,按照从左至右顺序进行;(3)可用圆括号改变运算的顺序。,5.4 伪指令语句,5.4.1 段定义语句重点学习段寄存器的各种加载方式5.4.2 过程定义语句5.4.3 定位语句和位置计数器5.3.4 偶地址控制语句5.3.5 程序标题语句,5.4.1 段定义语句,
15、一、段定义伪指令(SEGMENT/ENDS)定义:用于程序中设置一个段(逻辑段)。格式:,段名 SEGMENT 定位类型 组合类型类别名 本段语句序列(指令或数据)段名 ENDS,1. 段名:2. 定位类型:定义:表示对段的起始边界的要求。定位类型选项:(4种)(1)PAGE(页):表示本段从一个页的边界开始。段的起始地址一定能被256整除。段的起始单元地址(段基址)的最后8位二进制数为0(00H)。(2)PARA(节):表示本段从一个小节的边界开始。段的起始单元最后4位二进制数为0(0H)。(3)WORD(字):表示本段从一个偶字节地址开始。(4)BYTE(字节):表示本段起始单元可以从任一
16、地址开始。,由用户自己设定,在程序中当需要引用或调用某逻辑段时,即用段名表示。,3 . 组合类型:表示段与段之间的连接与定位。有6种选择: (教材P188页)4 . 类别名:注:定义一个逻辑段时,段名是必选项,其他三个参数是任选的,各参数之间用空格分隔。任选是可只选其中1-2个,但是不能改变它们的先后顺序关系。,(1). NONE: (2). PUBLIC(3). COMMON(4). STACK(5). AT(6). MEMORY,二、段寻址伪指令(ASSUME),ASSUME伪指令格式:功能:告诉汇编程序已定义的段与段寄存器之间的对应关系。ASSUME随时修改或撤除1-4个段寄存器与已定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 语言程序设计
限制150内