微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件

上传人:我*** 文档编号:145970374 上传时间:2020-09-25 格式:PPT 页数:56 大小:425.50KB
返回 下载 相关 举报
微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件_第1页
第1页 / 共56页
微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件_第2页
第2页 / 共56页
微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件_第3页
第3页 / 共56页
微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件_第4页
第4页 / 共56页
微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件》由会员分享,可在线阅读,更多相关《微机原理与接口 第5章1_汇编语言程序设计_概念及格式课件(56页珍藏版)》请在金锄头文库上搜索。

1、1,第5章 汇编语言程序设计,主要内容: 汇编语言源程序的格式及上机过程 汇编语句源程序的编写 汇编语言程序的设计(一) 顺序与分支结构 汇编语言程序的设计(二) 循环结构与子程序,2,5.1汇编语言源程序的格式及上机过程,本节学习要求 学会在DEBUG 调试环境下察看程序结果 学会简单汇编程序的编辑、运行过程 掌握常见的输入及显示方法,3,计算机语言发展过程,机器语言,汇编语言,高级语言,FORTRAN BASIC COBOL PASCAL C/C+/C# JAVA .,4,机器语言:依赖于机器的低级语言,书写格式为二进制代码。 优点:执行速度快,效率高。 缺点:表达的意义不直观,编写、阅读

2、、调试较困难。 汇编语言:一种符号语言,与机器语言一一对应;使用助记符 优点:用户理解容易 缺点:不能被机器直接识别 高级语言:独立于机器的通用语言,接近人类的自然语言。 优点:易学易用,可移植性较好 缺点:目标代码冗长,占用内存多,执行效率不高,5,例一 编程实现c=a+b,并在屏幕上显示结果 解1:用C语言实现,#include stdio.h int main(int argc, char* argv) int a,b,c; a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; ,编译后的目标文件达到3.59KB,6,data segment a db

3、 ? b db ? c db ? string db c=$ data ends code segment main proc far assume cs:code, ds:data assume es:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax,mov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21

4、h mov dl,0dh int 21h ret main endp code ends end start,解2: 用汇编语言实现,汇编后的目标文件只有208字节,7,汇编语言源程序的组织结构 汇编语言源程序采用的是分段结构,即一个汇编语言源程序由若干段组成(一般由数据段和代码段组成),每一个段以SEGMENT语句开始,以ENDS语句结束,整个程序的结尾是END语句。 在代码段中下面的内容是不可缺少的: (1) 定义段(使用SEGMENT/ENDS语句定义) (2) 约定段寄存器和段的关系(即物理段和逻辑段的关系,使用一个或多个ASSUME语句实现) (3) 装填段寄存器(只装填数据型段寄存

5、器) (4) 设置返回DOS的方法,8,汇编语言源程序的格式,例二 编程实现多字节加法,如 S=3B74AC60F8H+20D59E36C1H,9,CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 5 MOV SI, 0 CLC LOOPER:MOV AL, DATA2SI ADC DATA1SI,AL INC SI DEC CX JNZ LOOPER MOV AH, 4CH INT 21H CODE ENDS,END START,DATA SEGMENT DATA1 DB 0F8H, 60H,

6、 0ACH, 74H, 3BH DATA2 DB 0C1H, 36H, 9EH, 0D5H, 20H DATA ENDS,10,例如: MYDARA SEGMENT; 定义数据段起始语句 ; 定义数据 MYDATA ENDS; 定义数据段终止语句 MYCODE SEGMENT; 定义代码段起始语句 ASSUME CS:MYCODE,DS:MYDATA; 约定段寄存器和段的关系 START: MOV AX,MYDATA; 装填相应的段寄存器 MOV DS,AX ; 完成所需功能的程序段 MOV AH,4CH; 设置返回DOS INT 21H MYCODE ENDS; 定义代码段终止语句 END

7、START; 程序结束,11,5.1.2 汇编语言语句的类型和格式 1. 语句分类 指令性语句:也称指令语句,指令系统的指令,汇编后产生目标代码。 指示性语句:也称伪指令语句,告诉汇编程序如何汇编,汇编后不产生目标代码。 宏指令语句:自定义语句,由指令语句和伪指令语句组成的指令集合,不展开时不产生目标代码。,12,2. 语句的格式 指令语句与伪指令语句的格式是类似的。一般情况下,汇编语言的语句可以由部分构成: 名字 助记符 操作数 ;注释 其中带方括号的部分表示任选项,既可以有,也可以没有。 例5.1中有如下语句: LOOPER: MOV AL,DATA2SI ;取一个字节加数 DATA1 D

8、B 0F8H,60H,0ACH,74H,3BH;被加数 第一条语句是指令语句,其中“LOOPER:”是名字,“MOV”是指令助记符,“AL,DATA2SI”是操作数,“;”后面是注释部分; 第二条语句是伪指令语句,其中“DATA1”是名字,“DB”是伪指令定义符,“0F8H,60H,0ACH,74H,3BH”是操作数,“;”后面是注释部分。,13,1) 名字 汇编语言语句的第一个组成部分是名字(Name)。在指令语句中,这个名字是一个标号。指令语句中的标号实质上是指令的符号地址。并非每条指令语句必须有标号,但如果一条指令前面有一标号,则程序中其它地方就可以引用这个标号。在例5.1中,START

9、、LOOPER就是标号。标号后面有一个冒号。 标号有三种属性:段、偏移量和类型。 标号的段属性是定义标号在程序段的段地址,当程序中引用一个标号时,该标号的段值应在CS寄存器中。 标号的偏移量属性表示标号所在段的起始地址到定义该标号的地址之间的字节数。偏移量是一个16位无符号数。 标号的类型属性有两种:NEAR和FAR。前一种标号可以在段内被引用;后一种标号可以在其它段被引用。如果定义一个标号时后跟冒号,则汇编程序确认其类型为NEAR。,14,伪指令语句中的名字可以是变量名、段名、过程名。 与指令语句中的标号不同,这些伪指令语句中的名字并不总是任选的,有些伪指令规定前面必须有名字,有些则不允许有

10、名字,也有一些伪指令的名字是任选的。即不同的伪指令对于是否有名字有不同的规定。伪指令语句的名字后面不跟冒号,这是它和标号的一个明显区别。 很多情况下伪指令语句中的名字是变量名,变量名代表存储器中一个数据区的名字,例如例5.1中的DATA1、DATA2就是变量名。,15,变量也有三种属性:段、偏移量和类型。 变量的段属性是变量所代表的数据区所在段的段地址。由于数据区一般在存储器的数据段中,因此变量的段地址常常在DS和ES寄存器中。 变量的偏移量属性是该变量所在段的起始地址与变量的地址之间的字节数。 变量的类型属性有BYTE(字节)、WORD(字)、 DWORD (双字)、 QWORD (四字)、

11、TBYTE(十字)等,表示数据区中存取操作对象的大小。,16,2) 助记符 汇编语言语句中的第二个组成部分是助记符(Memonic)。 在指令语句中的第二部分是CPU指令系统中指令的助记符,例如:MOV ADC等等。助记符约有90多种,在第四章中已经进行了详细的讨论。 在伪指令语句中的第二部分是伪指令的定义符,例如:DB、SEGMENT、 ENDS 、 END等都是伪指令定义符。它们在程序中的作用是定义变量的类型、定义段以及告诉汇编程序结束汇编等。,17,3) 操作数 汇编语言语句中的第三个组成部分是操作数。 在指令语句中是指令的操作数,可能有单操作数或双操作数,也可能无操作数; 在伪指令中可

12、能有更多个操作数。当操作数不止一个时,相互之间应该用逗号隔开。 可以作为操作数的有:常数、寄存器、标号、变量和表达式等。,18,(1) 常数。常数就是指令中出现的那些固定值,可以分为数值常数和字符串常数两类。 例如,立即数寻址时所有的立即数、直接寻址时所有的地址、ASCII字符串等都是常数。 常数是除了自身的值以外,没有其他属性的数值。在源程序中,数值常数按其基数的不同,可有二进制数、八进制数、十进制数、十六进制数等几种不同表示形式。汇编语言用不同的后缀加以区别。,19,(2) 寄存器 80868088CPU的寄存器可以作为指令的操作数。 (3) 标号 由于标号代表一条指令的符号地址,因此可以

13、作为转移(无条件转移或条件转移)、过程调用CALL以及循环控制LOOP指令的操作数。 (4) 变量 因为变量是存储器中某个数据区的名字,因此在指令中可以作为存储器操作数。 (5) 表达式 汇编语言语句中的表达式,按其性质可分为两种:数值表达式和地址表达式。数值表达式产生一个数值结果,只有大小,没有属性。地址表达式的结果不是一个单纯的数值,而是一个表示存储器地址的变量或标号,它有三种属性:段、偏移量和类型。,20,表达式是由操作数和运算符组成。即用一个运算符可以对一个或几个操作数进行运算,构成一个表达式。 表达式中常用的运算符有以下几种: 算术运算符:、和MOD。 逻辑运算符:AND、OR、NO

14、T和XOR。 关系运算符:EQ、NE、LT、GT、LE、GE。结果只有两个全1或全0。如, MOV AX,4 EQ 3 ;关系不成立,故(AX)0 MOV AX,4 NE 3 ;关系成立,故(AX)0FFFFH 分析运算符:利用分析运算符可以把一个存储单元地址分解为段地址和偏移地址等。分析运算符有SEG 、OFFSET 、TYPE、SIZE和LENGTH等。,21,分析运算符:利用分析运算符可以把一个存储单元地址分解为段地址和偏移地址等。分析运算符有SEG 、OFFSET 、TYPE、SIZE和LENGTH等。 分析运算符表达式,注意:SIZELENGTHTYPE,22,分析运算符举例:,SE

15、G运算符 MOV AX,SEG ARRAY MOV DS,AX OFFSET MOV DI,OFFSET DATA1 TYPE LENTH,表示变量的个数 SIZE,变量所占空间,字节总数。,23, TYPE运算符。TYPE运算符的运算结果是一个数值,这个数值与存储器操作数类型属性的对应关系见表5.1。 下面是使用TYPE运算符的例子: VAR DW ?;变量VAR的类型为字 ARRAY DD 10 DUP(?) ;变量ARRAY的类型为双字 STR DB THIS IS TEST;变量STR的类型为字节 MOV AX,TYPE VAR ;(AX)2 MOV BX,TYPE ARRAY ; (BX)4 MOV CX,TYPE STR ;(CX)1,24,25, LENGTH运算符。如果一个变量已用重复操作符DUP说明其变量的个数,则利用LENGTH 运算符可得到这个变量的个数。如果未用DUP说明,则得到的结果总是1。 例如,上面的例子中已经用“10 DUP(?)”说明变量ARRAY的个数,则LENGTH ARRAY的结果为10。 SIZE运算符。如果一个变量已用重复操作符DUP说

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

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

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