第4章 汇编语言程序设计ppt课件

上传人:我*** 文档编号:149210795 上传时间:2020-10-25 格式:PPT 页数:74 大小:229.50KB
返回 下载 相关 举报
第4章 汇编语言程序设计ppt课件_第1页
第1页 / 共74页
第4章 汇编语言程序设计ppt课件_第2页
第2页 / 共74页
第4章 汇编语言程序设计ppt课件_第3页
第3页 / 共74页
第4章 汇编语言程序设计ppt课件_第4页
第4页 / 共74页
第4章 汇编语言程序设计ppt课件_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《第4章 汇编语言程序设计ppt课件》由会员分享,可在线阅读,更多相关《第4章 汇编语言程序设计ppt课件(74页珍藏版)》请在金锄头文库上搜索。

1、1,4.1 汇编语言的程序格式 4.2 汇编语言的数据与表达式 4.3 伪指令 4.4 宏命令伪指令 4.5 程序设计基本方法和上机调试,本章将围绕汇编语言源程序的结构展开,介绍内容如下:,第4章 汇编语言程序设计,2,汇编语言是介于机器语言(二进制代码)和高级语言(如:C语言, Fortran语言)之间的计算机语言,是一种用符号表示的面向机器的程序设计语言。它既有与机器语言指令代码一一对应的符号指令,还有专用于定义数据、定义和构造程序逻辑段等一系列的伪指令。它比机器语言易于阅读、编写和修改,又比高级语言运行速度快,能充分运用硬件资源,且占用内存空间少,能充分发挥计算机效能和进行精确控制等。因

2、此计算机控制系统的开发、高级语言编译程序的编制及软件开发等应用中常用汇编语言。 用汇编语言编写的程序称为汇编语言程序或源程序。对应于此源程序的机器语言程序称为目标程序,将一个汇编语言源程序转换成相应目标程序的翻译过程称为汇编,而具有汇编功能的应用程序就称为汇编程序。,3,4.1 汇编语言的程序格式,4.1.1 汇编语言程序的结构 汇编语言程序由若干个段构成。按各段功能的不同,分为: 堆栈段(保存数据、断点等信息) 代码段(存放指令) 数据段 附加段(定义数据、分配存储单元) 其中堆栈段和代码段是必需的。每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束

3、后需以END收尾。,4,STACK SEGMENT STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATA, SS:STACK START: CODE ENDS END START,1源程序的一般格式,习惯:用左边的实线框把程序各部分分隔,5,DSEG SEGMENT ;定义数据段 DATA1 DW 1234H ;定义被加数 DATA2 DW 5678H ;定义加数 DSEG ENDS ;数据段结束 ESEG SEGMENT ;定义附加段 SUM DW 2 DUP(?) ;定义存放结果区 ESEG ENDS

4、 ;附加段结束 CSEG SEGMENT ;定义代码段 ;下面的语句说明程序中定义的各段分别用哪个段寄存器寻址 ASSUME CS:CSEG,DS:DSEG,ES:ESEG START: MOV AX,DSEG ;START为程序开始执行的启动标号 MOV DS,AX ;初始化DS MOV AX,ESEG MOV ES,AX ;初始化ES LEA SI,SUM ;存放结果的偏移地址送SI MOV AX,DATA1 ;取被加数 ADD AX,DATA2 ;两数相加 MOV ES:SI,AX ;和送附加段的SUM单元中 HLT CSEG ENDS ;代码段结束 END START ;源程序结束,例

5、4-1 编写一个两字相加的程序。,6,2源程序的结构特点,1)汇编语言程序通常由若干段组成,段由伪指令SEGMENT与ENDS定义,各段顺序任意,段的数目按需要确定,原则上不受限制。 2)段由若干语句组成,语句以指令为主体而构成。一条语句写在一行上,书写时语句的各部分应尽量对齐。 3)汇编语言程序中至少要有一个启动标号,作为程序开始执行时目标代码的入口地址。启动标号常用START、BEGIN、MAIN等命名。 4)为增加程序的可读性,可在汇编语言语句“;”后加上注释。,7,4.1.2 汇编语言语句类型及格式,1汇编语言语句的类型 1)指令语句是可执行语句,在汇编中要产生对应的目标代码,CPU根

6、据这些代码才能执行相应的操作。 2)伪指令语句是不可执行语句,在汇编中不产生目标代码,用于指示汇编程序如何汇编源程序,利用它定义和说明常量和变量的属性及存储器单元的分配等。 3)宏指令语句是以一个宏名定义的一段指令序列,在汇编中凡是出现宏指令语句的地方,都会有相应的指令语句序列的目标代码插入。,8,2语句的格式,语句的格式分为指令语句格式和伪指令语句格式,它们都 是由4部分组成。 指令语句格式: 标号: 操作数 ;注释 伪指令语句格式:符号名 操作数 ;注释,其中, 表示可选项; 表示必选项。 标号和符号名 标号表示一条指令的符号地址,后面必须带一个冒号,一般在程序的入口处设置一个标号。符号名

7、可以是常量名、变量名、段名、过程名、宏名等后面不能带有冒号。汇编语言中可以用下列符号及其组合表示标号或符号名: 1) 英文字母:AZ, az, 大小写无区别。 2) 数字:0-9,不能作为标号和符号名的第一个字符。 3) 特殊字符:?, , $, _, 等。,9,需要指出的是:标号和符号名的长度不能超过31个, ? 和 $字符、CPU内部的寄存器、汇编语言中的保留字等均不能作为标号和符号名。 指令助记符每条语句中必须包含指令助记符,表明该条指令要求CPU完成的具体操作。如ADD, MOV, JMP等指令语句助记符,DB, PTR, EQU等伪指令语句助记符。 操作数可以是寄存器、常量、变量和表

8、达式,是一个可选项。在指令语句中,可以有两个操作数、一个操作数或没有操作数。在伪指令语句中,可给出一系列的操作数,用空格或逗号隔开。 注释用于解释程序使之便于阅读的任何说明文字或字符,注释由“;”开头,直到语句行的结尾。它对汇编程序不起作用,不会生成目标代码,只供增强可读性,可省略。,10,4.1.3 汇编语言的数据与表达式,1. 常量是没有任何属性的纯数值数据。它在汇编期间和程序运行中不会发生任何变化。分为:数值常量、字符串常量和符号常量。P84 2. 变量 是代表存放在某些存储单元的程序运行期间随时可以修改的数据。它常以变量名的形式出现在程序中,可以认为是存放数据存储单元的符号地址。变量可

9、以用数据定义伪指令DB, DW, DD等进行定义。 每个变量均具有三个属性:段属性、偏移量属性和类型属性。 段属性(SEG)表示变量存放在哪一个逻辑段中(即变量所在段的段基址); 偏移量属性(OFFSET)表示变量在逻辑段中离起始点的字节数。段和偏移量两个属性就构成了变量的逻辑地址。 类型属性(TYPE)表示变量占用存储单元的字节数,这一属性是由数据定义伪指令DB, DW, DW等来规定。,11,例4-2用数据定义伪指令DB、DW、DD定义变量 DATA SEGMENT DA1 DB 12H ;定义一个字节数据 DA2 DD 0FEDCBA90H ;定义一个双字数据 DA3 DW 5678H

10、;定义一个字数据 DATA ENDS,例4-2中变量名DA1, DA2, DA3三个变量都存放在DATA逻辑段中(用SEGMENT /ENDS 伪指令定义的一个逻辑段),要对这些变量进行存取操作时,先要把它们所在段的段基址存在一个段寄存器(如DS)中。 变量DA1 的偏移量为0,变量DA2 的偏移量为1,变量DA3的偏移量为5。 变量DA1 是用DB定义的,它的类型为字节,变量DA2是用DD定义,类型属性为双字,变量DA3是用DW定义的,类型属性为字。,画出下面例题中的内存单元分配图示,12,3. 标号是一条指令的符号地址。在无条件转移指令、条件转移指令和子程序调用指令的操作数位置上,通常用标

11、号作为程序转移指令的目标地址。在程序中引入标号后,可以使编写程序更加方便,程序的阅读和修改也更加容易。与变量类似,每个标号也具有三个属性: 段属性(SEG)。表示这条指令目标代码在哪个逻辑段中。 偏移量属性(OFFSET)。表示这条指令目标代码的首字节在段内离起始点的字节数。同样,上述两个属性构成了这条指令目标代码首字节的逻辑地址。 距离属性。表示本标号可作为段内或段间的转移特性,距离属性分为两种:,近(NEAR):只能被标号所在段的转移和调用指令所访问(即段内转移)。 远(FAR): 可被其他段(不是标号所在段)的转移和调用指令访问(即段间转移)。,13,表达式是由常量、变量和标号通过某些运

12、算符连接而成。表达式有数值表达式和地址表达式两种。数值表达式只产生一个数值结果,地址表达式的结果是一个存储器地址,如果这个地址存放的是数值,则称它为变量;如果这个地址中存放的是指令,就称它为标号。任一表达式的数值计算或数据大小、转移特性的确定都是在源程序汇编过程中进行,而不是在程序运行时获得。表达式中的运算符在程序中为构造某些数据和地址带来了灵活、方便的表达方式。运算符主要包括如下几种类型:,1.算术运算符加(+)、减(-)、乘(*)、除(/)、求余(MOD)、左移 (SHL)和右移(SHR)共7种。,4.2.2 表达式和运算符,2.逻辑运算符与(AND)、或(OR)、异或(XOR)、非(NO

13、T) 3.关系运算符相等(EQ)、不等(NE)、小于(LT)、大于(GT)、小于等于(LE)、大于(GE)等于共6种。 例题见教材P85 例4-3 逻辑运算符的应用 MOV AL,NOT 10101010B ;(AL)01010101B MOV AL,11110000B AND 10111101B ;(AL)10110000B MOV AL,10100000B OR 00000101B ;(AL)10100101B 例4-4 关系运算符的应用 MOV AX,5 EQ 101B ;(AX)0FFFFH MOV BH,10H GT 16 ;(BH)0 习题4.5,15,其运算对象必须是存储器操作数

14、,即变量或标号。运算符总是加在运算对象之前,返回的结果是一个数值。数值返回运算符包括SEG(段基址)、OFFSET(偏移量)、TYPE(类型)、LENGTH、SIZE,运算的对象是存储器操作数,返回变量或标号的属性值。如表4-1所示。,看P86,例4-5,先画出内存单元分配图示,4.数值返回运算符,16,K1 DB 30H,31H,32H K2 DW 4041H,4043H K3 DW 20H DUP(0) K4 DD 50515253H MOV AL,TYPE K1 ;等效于MOV AL,1 MOV AH,TYPE K2 ;等效于MOV AH,2 MOV AL, LENGTH K3 ;(AL

15、)20H,返回DUP前面的数值 MOV CL, LENGTH K4 ;(CL)01H MOV BL, SIZE K3 ;(BL)40H MOV DL, SIZE K4 ;(DL)04H 习题4.7,例4-5 数值返回运算符的应用,17,5.修改属性运算符用来修改变量标号或地址表达式的属性。,(1)修改段属性运算符“:” 用来临时给变量、标号或地址表达式指定一个段属性,自动生成段跨越前缀字节。 例4-6 段属性运算符的应用 MOV AX,ES:BX ;用附加段ES取代默认的数据段DS MOV BL,DS:BP ;用数据段DS取代默认的堆栈段SS (2)定义符号名为新类型运算符PTR 格式:类型

16、PTR 地址表达式 PTR 运算符是为同一个存储单元赋予不同的类型属性。根据地址表达式的不同,所赋予的新类型可以为BYTE, WORD, DWORD, NEAR, FAR,它们只在所在的指令内有效。 例4-7 PTR运算符的应用 N1 DB 3,6,9 MOV AX,WORD PTR N1 ;临时指定N1为字类型, (AX)0603H,18,(3)指定新类型运算符THIS 格式:THIS 类型或属性 THIS 运算符用来把它后面指定的类型和距离属性赋给当前的变量、标号或地址表达式。 例4-8 THIS运算符的应用 ABC EQU THIS BYTE ;从本语句开始变量ABC的类型属性指定为 字节,不管它原来的类型是什么 (4)取高位字节/低

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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