收藏 分享(赏)

中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_2.ppt

上传人:微传9988 文档编号:2176089 上传时间:2018-09-04 格式:PPT 页数:27 大小:185.50KB
下载 相关 举报
中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_2.ppt_第1页
第1页 / 共27页
中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_2.ppt_第2页
第2页 / 共27页
中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_2.ppt_第3页
第3页 / 共27页
中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_2.ppt_第4页
第4页 / 共27页
中职计算机原理(主编瞿正刚等_北理工版)课件模块三_指令系统_2.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、任务4 汇编语言简述,3.4.3常用伪指令 伪指令是在汇编时由汇编程序处理的指令,不能生成目标代码,因此其操作也称为伪操作。下面介绍几条常用的伪指令。 1.符号定义伪指令EQU 格式:符号名EQU表达式(或符号名)。 功能:将符号名定义为一个常量、数值表达式或一条可执行的指令;以后使用该符号名时,即可引用它所表示的常量、表达式或可执行的指令。举例如下。 DA EQU 1234H;数1234 H赋给符号DA ADR1 EQU DS ; BP + 7 ;段前缀的变址访问赋给符号ADR1 DATA EQU HEIGHT +9;地址表达式赋给符号DATA 说明:在EQU语句的表达式中,若有符号名,则该

2、符号名必须事先定义。,下一页,返回,上一页,任务4 汇编语言简述,2.赋值伪指令= 格式:符号名=表达式(或符号名)。 功能:与EQU语句类似,二者的主要区别在于EQU中的符号不允许重复定义,而“=”允许符号名重复定义。举例如下。 EXP=5 ;EXP的值为5 FXP=FXP+5 ;EXP的值为10 3.段定义伪指令SEGMENT/ENDS 格式:段名SEGMENT定位类型组合类型类别语句序列(程序或数据)段名ENDS 功能:标志汇编语言源程序段的开始和结束,段名由用户自己定义,但是开始和结尾的段名必须一致;在段的说明部分应说明定位类型、组合类型和类别名,也可以省略掉。,下一页,返回,上一页,

3、任务4 汇编语言简述,(1)定位类型:表示对段起始边界的要求,可以是PACE ,PARA , WORD或BYTE,分别表示以页、节、字、字节为边界。 (2)组合类型:表示段与段之间的关系,可以是NONE , PUBLIC , COMMON , AT表达式、STACK和MEMORY。其含义如下。 NONE:隐含选择,表示本段与其他段无任何关系,每段都有自己的起始地址。 PUBLIC:段间同名同类型段连接,指定统一段基址,连接次序由连接命令指定。 COMMON:段间同名同类型段连接,指定相同的段起始地址,因此产生同名同类型段覆盖,覆盖后的长度取决于同名段中最大长度的段。 AT表达式:连接时起始地址

4、定位在表达式所指定的段地址上,但不能用于代码段。,下一页,返回,上一页,任务4 汇编语言简述, STACK:指定该段在运行时为堆栈段的一部分,若有多个STACK段,SS指向第一个遇到的STACK段。 MEMORY:把本段分配在所有其他连接在一起的段上,即高地址处,若有多个MEMORY段,则汇编程序认为所遇到的第一个为MEMORY段,其余为COMMON段。 (3)类别:用单引号括起来,连接时同类别的段存放在连续的存储区内,并组成段组名,类别有“STACK“ ,“ CODE”等。 4.指定段寄存器伪指令ASSUME 格式:ASSUME段寄存器名:段名,段寄存器名:段名。 其中,段寄存器名必须是CS

5、,SS,DS,ES中的一个或几个,段名必须已经定义。,下一页,返回,上一页,任务4 汇编语言简述,功能:指定段与段寄存器之间的关系,但不能把段地址装入段寄存器中。举例如下。ASSSUME CS:CODE,DS:DATA1,ES:DATA2 5.过程定义伪指令PROC/ENDP 格式:过程名 PROCNEAR/FARRET过程名 ENDP 功能:定义过程,并说明它是NEAR或FAR类型。 说明:在每一个过程中必须有一条返回指令RET,若有多个出口,可用多个返回指令。 6.程序结束伪指令END 格式:END标号,下一页,返回,上一页,任务4 汇编语言简述,功能:标志源程序结束,即汇编结束,可选项标

6、号指明程序开始执行的起始地址。 7.定义段起始偏移地址伪指令ORG 格式:ORG常数表达式。 功能:指定段起始偏移地址。举例如下。 ORG 3000H;定义下面DATA1的起始偏移地址为3000 H DATA1 DB 34H,56H,ABCD DATA2 DW 1234H,EF 又如: ORG$+10 ;由当前地址向前跳过10个字节单元,下一页,返回,上一页,任务4 汇编语言简述,8.标识符说明伪指令PUBLIC 格式:PUBLIC标识符。 功能:说明标识符的属性是公共标识符,使本段与同名段连接在一起,形成一个新的逻辑段,共用一个段基址。标识符可以是跳转地址、数据地址或整个段。举例如下。 PU

7、BLIC NAME1 , NAME2 , .;说明NAMEK NAME2属于公共标识符 9.标识符说明伪指令EXTRN 格式:EXTRN标识符。 功能:用法与C语言相同,说明所使用的标识符在外部程序段中。标识符的含义与PUBLIC中的标识符相同。举例如下。 EXTRN NAMED;说明NAMED在外部程序段中,下一页,返回,上一页,任务4 汇编语言简述,10.多文本汇编连接伪指令INCLUDE 格式:INCLUDE文件名。 功能:把指定的文本一起汇编,直到指定文本文件的末尾,再继续汇编其后的语句。 3.4.4宏指令 为了简化程序的设计,在程序设计中可将多次重复使用的程序段用宏指令代替。 1.宏

8、定义指令MACRO/ENDM 格式:宏指令名 MACRO形式参数表. 宏体ENDM 功能:定义宏指令。,下一页,返回,上一页,任务4 汇编语言简述,说明:MACRO/ENDM必须成对使用,宏指令名由用户指定;定义后,在程序中可以和指令一样使用,即宏调用。其中,形式参数为可选项,多个参数之间用逗号“,”隔开;宏调用时,用实际参数代替形式参数。 宏体由指令语句、伪指令和其他宏指令名组成。汇编时,除伪指令不被汇编外,其他指令被汇编成指令代码,插入程序调用处;同时,在插入的每一条指令前添加“+”号,这一过程称为宏展开,由汇编程序在汇编时完成。 【例3-16】定义一条宏指令,可以实现移位操作功能。,下一

9、页,返回,上一页,任务4 汇编语言简述,解:定义过程如下。 SHIFT MACRO REG X,NMOV CL,NS&X REG,CLENDM 其中,参数REG代表寄存器名,X代表操作码,N代表移位次数。为了使参数可以出现在指令助记符中,用&符号连接。宏调用如下。SHIFT AX,AR,3SHIFT DL,HR,6宏展开如下。+MOV CL,3+SAR AX,CL,下一页,返回,上一页,任务4 汇编语言简述,+MOV CL,6 +SHR DL,CL 2.取消宏定义伪指令PURGE 格式:PURGE宏指令名,.。 功能:取消宏指令名的定义,可以同时取消多个宏定义。 说明:宏定义与子程序都可以简化

10、源程序,但是宏指令是在宏展开时用宏体取代宏指令名,不节省存储空间,但执行速度快;子程序在程序执行时由CPU调用,占用内存空间少,但执行速度慢。,下一页,返回,上一页,任务4 汇编语言简述,3.4.5条件汇编 条件汇编有多种伪指令,下面仅介绍常用的几条。 格式:IFELSEENDIF 功能:根据条件是否成立,有选择地对程序段进行汇编。当条件为真时,汇编程序段1;条件为假时,汇编程序段2。 1.IF表达式 功能:表达式的值不为0,条件为真。,下一页,返回,上一页,任务4 汇编语言简述,2. IFE表达式 功能:表达式的值为0,条件为真。 3. IFB 功能:参数为空,条件为真。 4. IFNB 功

11、能:参数不为空,条件为真。 3.4.6保护方式编程指令 保护方式和实地址方式是以同样的方式使用和执行指令,区别在于生成主存物理地址的方式不同。在实地址方式中,段寄存器左移4位加偏移量而生成物理地址。在保护方式中,段寄存器中是一个13位的选择符,根据选择符访问一个8 B的描述符,再从中获取段起始地址。,下一页,返回,上一页,任务4 汇编语言简述,在汇编语言中可通过指令进入保护方式,也可使用DOS中的保护方式接口DPMI在Windows环境下进入DOS保护方式,再通过DOS功能调用INT 2FH进行保护方式操作。 1.保护方式控制指令 1)装入全局/中断描述符表寄存器指令LGDT/LIDT 格式:

12、LGDT/LIDT SRC 功能:把SRC指定的6B(48位)数据装入全局/中断描述符表寄存器GDTR/IDTR中,其中前2个字节是描述符表的界限值,后4个字节是描述符表的线性基地址。该指令对状态标志无影响。例如:LGDTDI。 2)装入局部描述符表寄存器指令LLDT 格式:LLDT SRC,下一页,返回,上一页,任务4 汇编语言简述,功能:把SRC指定的数据作为选择符装入局部描述符表寄存器LDTR中。源操作数可以是16位寄存器或存储器单元,其中选择符指向全局描述表GDT中类型为LDT的描述符。该指令对状态标志无影响。例如:LLDT BX。 3)装入任务状态段寄存器指令LTR 格式:LTR S

13、RC 功能:把SRC指定的数据作为选择符装入任务状态段寄存器TR中,并使装入的任务状态段标记为忙,但不发生任务切换。源操作数可以是16位寄存器或存储器单元,它指向GDT中一个忙的TSS描述符。该指令对状态标志无影响。 4)装入机器标志字指令LMSW 格式:LMSW SRC 功能:把SRC指定的数据装入控制寄存器CR0,的低16位。,下一页,返回,上一页,任务4 汇编语言简述,5)调整选择符特权级RPL指令ARPL 格式:ARPL DEST, REG 功能:若操作数DEST的RPL小于或等于操作数RE(;的RPL,则ZF置1,并用操作数REG的RPL修改操作数DEST的RPL;若操作数DEST的

14、RPL大于操作数REG的RPL,则DEST不变,ZF清0。 其中,操作数DEST为包含选择符的16位寄存器或存储器操作数,REG为包含选择符的16位寄存器。例如:ARPL MEM,BX。 6)清除任务切换标志CLTS 格式:CLTS,下一页,返回,上一页,任务4 汇编语言简述,功能:清除控制寄存器CR0,中的任务切换标志TS,即TS清0。 2.保护参数检验指令 1)检查数组边界指令BOUND 格式:BOUND REG,MEM 功能:检查数组下标(索引)是否违反边界限制,若违反则产生异常中断5。 2)控制寄存器装入指令 格式:MOV CRn, SRC 功能:把源操作数SRC指定的32位寄存器中的

15、数据装入CR0 ,CR2或CR3中,影响状态标志OF,SF,ZF,AF和PF。 3)控制寄存器存储指令 格式:MOV DEST,CRn,下一页,返回,上一页,任务4 汇编语言简述,功能:把控制寄存器CR0 ,CR2或CR3中的数据存入DEST指定的32位寄存器中,影响状态标志OF,SF,ZF,AF和PF。 4)保存GDTMDTR指令SGDT/SIDT 格式:SGDT/SIDT DEST 功能:把描述符表寄存器GDTR/IDTR中的内容存入DEST指定的连续6 B(48位)单元中。描述符表寄存器中16位段界限存入DEST的低字中,描述符表寄存器中的32位段基址存入DEST的高两字中。在系统软件中

16、使用,对状态标志没有影响。 5)保存LDTR指令SLDT 格式:SLDT DEST,下一页,返回,上一页,任务4 汇编语言简述,功能:把局部描述符表寄存器LDTR中的内容存入DEST指定的16位目的寄存器或存储器单元中。在系统软件中使用,对状态标志没有影响。 6)保存机器标志字指令SMSW 格式:SMSW DEST 功能:把CR0的低16位存储到DEST指定的寄存器或存储器单元中。 3.进入保护方式 在开机或RESET复位之后,80486 CPU进入实地址方式。如果进入保护方式,需要对各系统表和寄存器进行初始化,包括建立全局/中断描述符表GDT/IDT、任务状态段TSS等;执行指令MOV CR

17、n, SRC,将控制寄存器CR0中的PE置1。在进入保护方式后首先执行段间跳转JMP,转向保护方式下的初始化程序,对代码段寄存器CS、数据段寄存器SS,DS,ES,FS , GS及任务状态段寄存器TR等进行设置。,下一页,返回,上一页,任务4 汇编语言简述,3.4.7与保护方式程序接口 随着80X86微处理器及其指令系统的发展,汇编程序MASM的版本不断更新,功能不断增强,从而为用户的程序设计提供了更多的支持。例如,提供更多的伪指令和宏,简化段定义,允许多种形式的汇编语言程序混合使用等。下面简要介绍部分伪指令的功能以及与保护方式程序的接口。 1.简化段定义 在8086汇编语言中,段的定义由SE

18、GMENT开始,以ENDS结束。其格式如下。段名SEGMENT段边界 组合类型 类别名,下一页,返回,上一页,任务4 汇编语言简述, 段名ENDS显然,书写起来比较烦琐。以后,常使用简化格式如下。.CODE CODE1.CODE CODE2数据段和堆栈段格式如下。.DATA.STACK 200H 简化段定义格式可为编程提供方便,但是对于汇编程序和连接程序来说没有什么差异,各段都默认不同的定位边界、组合类型和类别名。,下一页,返回,上一页,任务4 汇编语言简述,2.汇编语言版本说明随着80x86微处理器的发展,其指令系统也由8位发展到了16位、32位甚至64位。但是,以后推出的高版本微处理器都兼

19、容原来低版本的指令系统。也就是说,原先设计的汇编语言程序都可以在以后推出的微机系统中运行。为了能够识别不同版本的汇编语言程序,形成了版本说明伪指令。举例如下。.8086;使用8086指令集. ;只能使用8086的16位指令集.80386;使用80386指令集. ;可以使用32位寄存器和80386新增指令,下一页,返回,上一页,任务4 汇编语言简述,.80586;使用80586指令集. ;可以使用Pentium微处理器新增的指令 如果没有指明使用的是哪一种微处理器,则默认为8086指令系统。对于不属于8086的指令,则在后续微处理器中给出错误警告。 3.存储方式定义 随着汇编程序的发展,MASM

20、 6. x不再提供默认的存储方式,而不同存储方式下的简化段定义对应不同的默认段名、默认定位边界、默认组合类型和类别名。因此,在简化段定义之前必须说明存储方式,汇编程序才能按相应的段名、定位边界、组合类型和类别名来组织各存储段以及段与段之间的联系。,下一页,返回,上一页,任务4 汇编语言简述,存储方式由伪指令.MODEL来定义,格式如下。 .MODEL TINY 其中,TINY是存储方式参数。常用的存储方式参数如表3-9所示。 例如: .MODELSMALL ;确定小型存储方式 .586 ;使用Pentium指令集 .STACK 100H ;定义堆栈段 .DATA ;定义数据段 4.其他常用伪指

21、令 USE16 ;使用16位地址方式,下一页,返回,上一页,表3-9汇编程序存储方式,返回,任务4 汇编语言简述,USE32 ;使用犯位地址方式 . STARTUP ;简化段定义时指出主程序开始 . EXIT ;程序结束后返回DOS操作系统 在使用.STARTUP表示程序开始时,可在程序中省略如下数据段地址定义语句。 MOV AX,DATA MOV DS,AX 在END语句的后面也不需要程序起始地址标号。 5.与保护方式程序接口,下一页,返回,上一页,任务4 汇编语言简述,在讲述80486控制寄存器CR,、和段描述符时,多次介绍由实地址方式进入保护方式的途径。而DOS中设有保护方式接口DPMI

22、,用户可通过DOS的功能调用进入保护方式。 在DOS多功能中断INT 2FH的处理程序中,提供了多种功能,例如,释放时间片、取MPU模式、取模式入口点、取API入口点等。用户可在汇编语言程序中使用中断指令INT 2FH,把运行环境切换到保护方式。举例如下。MOV AX,1687H ;通过入口1687 H取DPMI状态INT 2FH ;调用DOS多功能中断 通过指令INT 2FH的1687 H子功能查询DPMI是否存在。如果不存在,返回DOS;如果存在,将指令INT 2FH返回的DPMI的入口地址保存到用户定义的数据缓冲区。然后再用CALL指令实现由实地址方式到保护方式的切换。,下一页,返回,上一页,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报