1 / 216
文档名称:

微型计算机技术第四章.ppt

格式:ppt   大小:1,436KB   页数:216页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

微型计算机技术第四章.ppt

上传人:文库旗舰店 2018/5/19 文件大小:1.40 MB

下载得到文件列表

微型计算机技术第四章.ppt

文档介绍

文档介绍:第4章汇编语言程序设计
汇编语言程序格式
伪指令
汇编语言源程序结构
汇编语言程序的上机过程
汇编语言程序设计
程序设计举例
汇编语言程序格式
程序结构
【例4-1】给出一个完整的汇编语言源程序,该程序的功能是完成两个字节数据相加。
DATA SEGMENT ;段定义开始(DATA段)
BUF1 DB 34H ;第1个加数
BUF2 DB 2AH ;第2个加数
SUM DB ? ;准备用来存放和数的单元
DATA ENDS ;段定义结束(DATA段)
CODE SEGMENT ;段定义开始(CODE段)
ASSUME CS:CODE,DS:DATA ;规定DATA、CODE分别为数据段和代码段
START: MOV AX,DATA
MOV DS, AX ;给数据段寄存器DS赋值
MOV AL, BUF1 ;取第1个加数
ADD AL, BUF2 ;和第2个加数相加
MOV SUM,AL ;存放结果
MOV AH,4CH
INT 21H ;返回DOS状态
CODE ENDS ;段定义结束(CODE段)
END START ;整个源程序结束
从上面这个例子可以看出,汇编语言源程序由若干条语句组成,语句分为如下两类。
1) 指令语句
指令语句是由8086/8088CPU提供的指令形成的语句,能完成一定的操作功能,能够翻译成机器代码的语句。
2) 伪指令语句
伪指令语句也叫指示性语句,它只是为汇编程序在翻译汇编语言源程序时提供有关信息,并不翻译成机器代码。例如,程序中的语句:
BUF1 DB 34H
BUF2 DB 2AH
SUM DB ?
就是伪指令语句,其功能是在内存中开辟3个名字分别为BUF1、BUF2、SUM的字节单元,前两个单元的初值分别为34H和2AH,SUM仅指定一个字节单元,不定义确定的初值。
实际上,汇编语言源程序中还可出现宏指令语句。宏指令语句就是由若干条指令语句形成的语句体。一条宏指令语句的功能相当于若干条指令语句的功能。
语句格式
指令语句和伪指令语句的格式是类似的,其格式如下:
[名字] 操作码操作数[;注释]
其中,带方括号的项可以省略,注释内容以分号(;)引导。
1. 名字
1) 名字的标识符
名字也就是由用户按一定规则定义的标识符,可由下列符号组成:
(1) 英文字母(A~Z,a~z);
(2) 数字(0~9);
(3) 特殊符号(?、@、_等)。
2) 名字的定义规则
名字的定义要满足如下规则:
(1) 数字不能作为名字的第一个符号;
(2) 单独的问号(?)不能作为名字;
(3) 一个名字的最大有效长度为31位,超过31位的部分计算机不再识别;
(4) 汇编语言中有特定含义的保留字(如操作码、寄存器名等),不能作为名字使用。
为了便于记忆,名字的定义应该做到见名知义,如用BUFFER表示缓冲区、SUM表示累加和等。
3) 名字的两种主要形式
名字有标号和变量两种主要形式。
(1) 标号在代码段中定义,后面跟着冒号“:”,它也可以用LABEL或EQU伪操作来定义。此外,它还可以作为子程序名定义,由于子程序由伪指令定义,故子程序名不需冒号说明。标号经常在转移指令或CALL指令的操作数字段出现,用以表示转向地址。标号有三种属性:段、偏移及类型。
段属性:用于定义标号的段起始地址。此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。
偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。对于16位段是16位无符号数;对于32位段则是32位无符号数。
类型属性:用来指出该标号是在本段内引用还是在其他段中引用的。如在段内引用,则称为NEAR,对于16位段,指针长度为2字节;对于32位段,指针长度为4字节。如在段外引用,则称为FAR,对于16位段,指针长度为4字节(段地址2字节,偏移地址2字节);对于32位段,指针长度为6字节(段地址2字节,偏移地址4字节)。
(2) 变量在数据段、附加数据段或堆栈段中定义,后面不跟冒号。它也可以用LABEL或EQU伪操作来定义。变量经常在操作数字段出现,它也有段、偏移及类型三种属性。
段属性:用于定义变量的段起始地址。此值必须在一个段寄存器中。
偏移属性:变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。对于16位段,是16位无符号数;对于32位段,则是32位无符号数。在当前段内给出变量的偏移值等于当前地址计数器的值,当前地址计数器的值可以用$来表示。