汇编语言的基本概念.ppt
《汇编语言的基本概念.ppt》由会员分享,可在线阅读,更多相关《汇编语言的基本概念.ppt(91页珍藏版)》请在三一办公上搜索。
1、第五章 汇编语言的基本概念,概 述汇编语言程序格式伪指令PC机常用系统功能介绍,汇编语言程序设计特点,汇编语言是一种用符号表示的、面向CPU指令系统的程序设计语言。汇编语言具有以下两个基本特点:可以更充分利用机器硬件的全部功能,发挥机器的长处;程序目标代码占用内存少,执行速度快,效率高,具有实时性;,汇编语言与高级语言,由于汇编的这种特点,汇编语言常用于编写计算机系统程序、实时通信程序和实时控制程序。但汇编语言程序依赖于机器硬件,其通用性和移植性都较差。相对于汇编语言,高级语言的编程方便快捷,通用性和移植性都较好,在一些涉及大量数据处理、人机界面等设计任务的应用程序中,采用高级语言编程更为合适
2、。,从汇编源程序获得可执行程序的过程,为了能顺利完成汇编,用户必须为汇编程序提供一些额外的、与硬件有关的信息,如:程序使用的变量应分别存放在内存的哪个单元、堆栈应从内存的什么地址开始等等。,汇编语言源程序的一般结构分段式结构:数据段堆栈段代码段附加段,段,;段名1SEGMENT;一个段的开始语句1语句2 段名1ENDS;一个段的结束;段名2SEGMENT;另一个段的开始段名2ENDS;另一个段的结束;其它段;END;源代码结束,源程序的基本框架,汇编语言的上机过程,1.源程序的建立可用多种编辑程序建立源程序,但要求源程序用ASCII码存储,程序扩展名为.ASM。如源程序文件EXAMP.ASM2
3、.汇编生成目标文件(.OBJ)C:MASM EXAMP3.连接生成DOS格式的可执行文件(.EXE 或.COM文件)C:LINK EXAMP,汇编语言程序格式,汇编语言中的语句语句是由各种符号(标记)及分隔符按照一定的规则组织起来的一个有序序列。标识符 操作符 操作数 注释有三种基本语句:,宏指令语句 汇编时进行宏代替,指令性语句 可译为指令机器码,指示性语句(伪指令)仅作源程序管理用,指令性语句:即执行性语句(指令),与机器码一一对应,表示某种确定操作,包括四部分:标号:指令操作码 操作数;注释 例:AGAN:ADD AX,CX;加法指示性语句:即说明性语句(伪指令),不对应机器码,只为汇编
4、提供所需信息,由四部分组成:名字 伪指令 操作数;注释 例:SUMDB 64H;变量SUM的值是64H 宏指令:由伪指令定义的指令序列,包括宏定义、宏调用和宏扩展三部分,MASM汇编语句中的操作数,汇编语言中使用的操作数,可以是常数、寄存器、存储器、变量、标号或表达式。(1)常数固定值,无属性;,数字常量二进制数:以“B”结尾,如00001101B;八进制数:以“O”结尾,如725O;十六进制数:以“H”结尾,如0A12H;十进制数:以“D”结尾或无任何字母作结尾,如10D、10。,字符串常量字符串常量表示为包含在两个单引号之间的一连串ASCII字符。当单引号本身作为一个串元素时,需连写两个单
5、引号。每个串元素的值定义为该元素所对应的1字节ASCII码值。Hello,this is a sample program!还可用符号定义伪指令定义成标识符,即符号常量H EQU Hello,this is a sample program!,(2)变量通常指存放在存储单元中的值。变量的三个属性:段属性:指变量所在段的段基值,此值必须在一个段寄存器中。偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数(段内偏移量)。类型属性:指变量中每个元素所包含的字节数,类型包括字节变量(BYTE)、字变量(WORD)及双字变量(DWORD)等,(3)标号指令性语句(可执行语句)所在地址的符号表
6、示。标号的三个属性:段属性:指标号所在段的段基值,偏移属性:标号所在地址与所在段的段首址之间的偏移地址。类型属性:指在转移指令中标号可转移的距离,也称距离属性。有NEAR和FAR两种。,注意:标号通常作为转移指令或CALL指令的目标地址。,(4)表达式由常数、寄存器、变量、标号与运算符组合而成的运算式。运算式在汇编时由汇编程序计算出结果,再作为指令中的一个操作数参与指令的执行。MOV AL,2+3 汇编后变为 MOV AL,5,保留字,汇编源程序中标识符不能使用的字符串所有指令助记符:如MOV、ADD等。寄存器名:包括16位和8位寄存器。如AL、DH、AX、CS、TF等。宏汇编程序规定的所有伪
7、指令助记符:如ASSUME、DB、DW、DD等。宏汇编程序规定的其他助记符:BYTE、DUP、EQ、SEG等。,MASM中运算符,6类运算符算术运算符、逻辑运算符、关系运算符分析运算符、属性修改运算符、其他运算符,算术运算符,算术运算符的功能+加法运算符-减法运算符*乘法运算符/除法运算符MOD 求余运算符SHL 左移运算符SHR 右移运算符,算术运算符,算术运算符的使用特点数值表达式中可使用所有算术运算符地址表达式仅使用+、-算术运算符算术运算符不影响标志位,例:完成80H+90H解:MOV AL,80H+90H;使用数值表达式;(AL)=10H、CF=不变 MOV AL,80H ADD A
8、L,90H;使用加法指令;(AL)=10H、CF=1,关系运算符,关系运算符的功能,EQ 相等关系 NE 不相等关系 LT 小于关系 GT 大于关系 LE 小于或等于关系 GE 大于或等于关系,关系运算符,关系运算符的使用特点在两个性质相同的操作数之间进行大小关系比较若关系正确为真(T),全 1 操作数 若关系错误为假(F),全 0 操作数例:MOV AX,0A2H NE 02H;汇编后得到“MOV AX,0FFFFH”,分析运算符,分析运算符(数值返回运算符)的功能,SEG 符号地址段值属性返回符 OFFSET 符号地址偏移量值属性返回符 TYPE 符号地址中数据类型属性返回符 LENGTH
9、 DUP重复次数返回符 SIZE 变量总字节数返回符,分析运算符,对存储器地址进行运算将存储器地址的三个属性,即段、偏移量、类型分离出来。SEG取变量或标号所在段的段寄存器值 作为段基址,结果为16位值 格式:SEG 变量名或标号名OFFSET取变量或标号的段内偏移量,结果 为16位值 格式:OFFSET 变量名或标号名,TYPE取变量或标号的类型所占字节数 格式:TYPE 变量名或标号名 LENGTH取变量所含的数据元素个数,由DUP(重复操作符)定义数据个数时才有效。格式:LENGTH 变量 SIZE取分配给变量的字节个数,由DUP定义数据个数时才有效。格式:SIZE 变量,符号地址与逻辑
10、址址,定义数据段 DATA 如下:从实际地址 02000H 开始存数据 即段地址为 0200H 段内偏移地址从 0000H 开始 DATA SEGMENT VAR1 DB 20,30 VAR2 DW 2000H,3000H VAR3 DD 22003300H DATA ENDS,段地址=0200H,0000H,0002H,0006H,VAR1,VAR2,VAR3,例,SEG 和 OFFSET 应用,MOV BX,SEG VAR1;(BX)=0200H MOV BX,SEG VAR2;(BX)=0200H MOV BX,SEG VAR3;(BX)=0200H MOV BX,OFFSET VAR1
11、;(BX)=0000H MOV BX,OFFSET VAR2;(BX)=0002H MOV BX,OFFSET VAR3;(BX)=0006H,SEG 功能:返回符号地址的段逻辑值 OFFSET 功能:返回符号地址的偏移逻辑值,TYPE 的应用特点,返回变量数据类型所含的字节数量 MOV BL,TYPE VAR1;(BL)=1 MOV BL,TYPE VAR2;(BL)=2 MOV BL,TYPE VAR3;(BL)=4,LENGTH 和 SIZE 的应用特点,定义数据段 DATA SEGMENT VAR1 DB 100 DUP(?)VAR2 DW 100 DUP(?)DATA ENDS 指令
12、功能 MOV BX,LENGTH VAR1;(BX)=100 MOV BX,LENGTH VAR2;(BX)=100 MOV BX,SIZE VAR1;(BX)=100 MOV BX,SIZE VAR2;(BX)=200,变量定义数据个数,变量定义数据字节数,属性修改运算符的功能,PTR 操作数重新定义类型运算符,属性修改运算符,属性修改运算符,PTR临时修改类型属性或强制说明操作数的类型。可用类型:BYTE、WORD、DWORD、NEAR、FAR等,例:数据段中定义了字变量VAR,则 MOV AL,VAR;错误,类型不匹配改为:MOV AX,VAR 或:MOV AL,BYTE PTR VAR
13、,PTR 的应用特点(在 JMP 指令中的应用),段内间接近转移 CS不变、IP变 段间间接远转移 CS变、IP变,存储器中的 16 位值为段内 IP 目的地址 JMP WORD PTR BX JMP WORD PTR 2000H,存储器中的 32 位值为 CS:IP 目的地址 JMP DWORD PTR BX JMP DWORD PTR 2000H,PTR 的应用特点(在变量定义中的应用),定义数据段 代码段中使用,DATA SEGMENT VAR1 DB 20H,30HDATA ENDS,MOV AX,VAR1;错误,操作数类型不合MOV AX,WORD PTR VAR1;正确,返回字数据
14、,伪指令和宏指令,段定义伪指令过程定义伪指令数据类型定义及存储器地址分配伪指令符号定义伪指令,1、段定义伪指令,1)、段定义语句 SEGMENT/ENDS用于对 DS、ES、SS、CS 段的定义,格式:段名 SEGMENT 定位选择 组合类型 类别 段名 ENDS,注意:ENDS必须与SEGMENT成对出现,且段名必须一致。,定位类型 段起始边界的确定PAGE、PARA、WORD、BYTEPAGE段起始地址最低8位为0PARA段起始地址最低4位为0WORD段起始地址最低位为0BYTE段起始地址为任意值,组合类型 各段间的关系为连接程序提供本段与其它段的关系信息AT表达式:把本段装在表达式的值所
15、指定的段地址上,例:用组合类型中的AT表达式指定段基值,DATA SEGMENT AT 1234HARRAY DB 1,2,3 DB 4,5,6 RESULT DW?DATA ENDS,则 MOV AX,SEG ARRAY;AX=1234H MOV DS,AX;DS=1234H MOV SI,OFFSET ARRAY;SI=0000H,1、段定义伪指令,2)、段指示伪指令 ASSUME用来指示程序中定义的段与CPU中的各段寄存器之间的关系ASSUME 伪指令仅用在代码段首行,段名 SEGMENT 相关约定 ASSUME CS:段名,DS:段名,代码段内定义,指令集合段名 ENDS,例:程序分别
16、定义了DA、CD、ST段,则如下语句ASSUME CS:CD,DS:DA,SS:STCD段为代码段;DA段为数据段;ST段为堆栈段。,注意:使用ASSUME伪指令,仅仅告诉汇编程序哪个段寄存器被设定指向哪一个段,并没有给各段寄存器装入实际的段基值。要使段寄存器真正指向指定的段,还必须通过指令性语句将段基值装入相应的段寄存器;但CS寄存器除外,CS值是由操作系统将程序装入内存时自动设定的。,例:CD SEGMENT ASSUME CS:CD,DS:DA,ES:DM,SS:ST;MOV AX,DA MOV DS,AX;为DS装入段基值,1、段定义伪指令,3)、程序结束伪指令 END格式:END 标
17、号名指令中的标号名是该程序中第一条要执行的语句的标号名。标记汇编源程序结束。注意:END是伪指令助记符,不可缺省,放在源程序的最后一行,每个模块只有一个END。,2、过程定义伪指令,1)、过程定义伪指令 PROC/ENDPPROC FAR、ENDP 远过程定义伪指令PROC NEAR、ENDP 近过程定义伪指令,过程名 PROC FAR(NEAR)过程指令集合 RET过程名 ENDP,注:过程定义必须在代码段内,过程名是由用户设定的标识符,可在程序中作标号使用,至少有一个RET 语句,程序其他地方可以用CALL指令调用这个过程。,例,COD1 SEGMENT ASSUME CS:COD1,;代
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 基本概念
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6053157.html