工信版(中职)计算机原理模块三教学课件.ppt
《工信版(中职)计算机原理模块三教学课件.ppt》由会员分享,可在线阅读,更多相关《工信版(中职)计算机原理模块三教学课件.ppt(202页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Y CF(中职)计算机原理模块三教学课件模块3 指令系统 任务1 指令格式3.1.1 指令前缀3.1.2 指令中各字段的意义 任务2 8086 寻址方式3.2.1 数据类型3.2.2 寻址方式 任务3 8086 指令系统3.3.1 数据传送类指令下一页模块3 指令系统3.3.2 地址传送指令3.3.3 算术运算类指令3.3.4 控制转移类指令3.3.5 处理器控制类指令3.3.6 逻辑运算与移位类指令 任务4 汇编语言简述3.4.1 汇编语言及语句格式3.4.2 汇编语言程序结构下一页 上一页模块3 指令系统3.4.3 常用伪指令3.4.4 宏指令3.4.5 条件汇编3.4.6 保护方式编程指
2、令3.4.7 与保护方式程序接口3.4.8 汇编语言程序上机过程3.4.9 顺序程序3.4.10 循环程序3.4.11 分支程序设计下一页 上一页模块3 指令系统3.4.12 子程序设计3.4.13 DOS 调用程序设计上一页模块3 指令系统 从科学发展的角度,对Intel 新增加的指令也进行了介绍。从每一条指令的功能和操作,可以进一步领会微机硬件的操作过程。模块3 将以Intel 指令系统为背景对指令格式、指令功能进行描述,对从8086 到Pentium 的指令系统中的常用的一些指令有选择地、分门别类地进行了说明。本模块的重点是指令格式和指令的操作。返回任务1 指令格式 指令由许多部分组成。
3、在构成指令的这几部分中,只有操作码部分是必须存在的,其余各部分则要根据指令操作所涉及的操作数类型以及操作数存放在何处等因素来决定取舍。任何一条机器指令都是由一组二进制代码构成的,通常又被进一步分成操作码部分和地址码部分,一般的指令格式如图3-1 所示。Intel 从8086 到Pentium 系列微处理器的指令都是由多字节组成的,一条指令可以由多个字节构成。指令的操作码表示指令所执行的操作,通常用指令的第一个字节表示。但由于一个字节所能表示的指令的条数有限,因此还会在指令的第二个字节中占用3 位用作操作码。在一条指令中,除操作码之外的那些字节则被用来表示操作数的地址码。从8086 到80286
4、 都是16 位的微处理器,所以,它们的指令格式是16 位的,如图3-2 所示。下一页 返回任务1 指令格式 Intel 从80386 以后的各高档微处理器都是32 位的微处理器,它们所用的指令格式为如图3-3 所示的32 位的指令格式。初看起来,从8086 到Pentium 的指令格式不尽相同,且比较复杂。但这些指令却是很有规律的,而且16 位的指令格式与32 位的指令格式在80386 以上的高档微处理器上是兼容的。如果Intel 的32 位微处理器运行的是16 位程序,则像32 位的指令格式那样,必须带有指令前缀,且在实模式下进行操作,在32 位的微处理器上按16 位的指令格式运行。Pent
5、ium 微处理器指令的一般格式如图3-3 所示,Pentium 微处理器的所有指令都是如图3-3 所示的指令格式的子集。由图3-3 可知,一条指令由可任选的指令前缀(可以是任何的次序),一个或两个原操作码字节,有可能要用的地址说明符(由Mod R/M 字节和按比例变址基地址SIB 字节构成),一个偏移量(根据需要)和一个立即操作数数据字段(如果需要)等元素组成。下一页 返回 上一页任务1 指令格式 3.1.1 指令前缀 指令前缀是置于指令前面的一个或多个字节,它的作用是用来修改指令的操作。下面所列出的这4 个指令前缀就是供应用程序使用的。1.指令前缀 指令前缀并不经常出现,若出现,则由锁定前缀
6、(LOCK)或一个重复前缀组成。2.段的超前前缀 段的超前前缀用于显式地指定本条指令将使用CS,SS,DS,ES,FS,GS 这6 个段寄存器中的哪一个。用于代替Pentium 微处理器为本指令生成默认的段寄存器。3.操作数大小前缀 指令默认的操作数大小是16 位或32 位的,操作数大小前缀用来在32 位和16 位操作数之间进行切换。下一页 返回 上一页任务1 指令格式 4.地址大小前缀 在对存储器进行寻址操作时,微处理器既可以使用16 位地址,也可以使用犯位的地址。地址的大小决定了指令格式中偏移量的大小以及在计算有效地址时生成的偏移量的大小。3.1.2 指令中各字段的意义 1.操作码字段 操
7、作码字段占用1 个或2 个字节。由操作码字段规定指令的操作性质,如操作数的类型(是字节、字、还是双字)、操作数的传送方向(是取自存储器,还是存入存储器)以及寄存器编码或符号扩展等。下一页 返回 上一页任务1 指令格式 2.Mod R/M 字段 Mod R/M 字段和SIB 字段是寻址方式说明字段。Mod R/M 是主寻址字节,由这个字节指定操作数是寄存器操作数还是存储器操作数。若是存储器操作数,则用这个字节中的一个字段来说明将要采用的寻址方式。其实,ModR/M 字节由Mod 字段(2 位)、Reg/OPcode 字段(3 位)和R/M 字段(3 位)这样3 个字段组成。Mod 字段(2 位)
8、和R/M 字段(3 位)这5 位可以构造成32 个不同的值。具体地,它们可分别用于指示8 个寄存器和24 种变址方式;Reg/OPcode 字段(3 位)用来指定8 个寄存器中的一个,或者用来作为操作码信息的3 个补充位;R/M 字段(3 位)用来指定一个寄存器,指示出操作数的位置,或者用来作为寻址方式的一个组成部分,与Mod 字段组合起来进行编码。下一页 返回 上一页任务1 指令格式 3.SIB 字段 SIB 字段又被进一步分成3 个字段,分别是SS 字段(2 位),Index 字段(3 位)和Base 字段(3 位)。SS 字段在进行按比例变址操作时用来当比例因子,Index 字段用来指示
9、使用的是哪一个变址寄存器,而用Base 字段则指示基地址寄存器。4.偏移量 寻址方式一经确定,偏移量也就随之确定了,一个用8 位、16 位或32 位的带符号的整数表示的偏移量也就被放入了指令之中。5.立即数 立即数就是包括在指令中的一个8 位、16 位或32 位的操作数。返回 上一页任务2 8086 寻址方式 在指令中,操作数或操作数的地址可用多种方式来表示,统称为寻址方式。同一条指令可有不同的寻址方式,以说明不同的操作对象。3.2.1 数据类型 在计算机中,数据有多种类型。一种是指令处理的对象,称为操作数;另一种表示指令,称为指令字;第三种是存储器单元的序号,称为地址。其中,操作数又分为两种
10、,一种是参加运算或由计算机处理的对象,称为数据操作数,简称为数据;另一种用来表示转移指令的目标地址,称为转移地址操作数,简称为转移地址。下一页 返回任务2 8086 寻址方式 1.数据操作数 根据操作数存放的位置或者存放方式,常见的数据操作数有3种,一种是在指令中直接给出,称为立即数;另一种存放在寄存器中,称为寄存器数据;第三种存放在存储器中,称为存储器数据。2.转移地址操作数 转移地址操作数用来表示转移指令的目标地址。其表示方式可以在转移指令中直接给出,也可以根据某一寻址方式经计算后求得。3.2.2 寻址方式 根据操作数的两大类型,8086 微处理器的寻址方式也可分为两大类型,即数据寻址方式
11、和转移地址寻址方式。下一页 返回 上一页任务2 8086 寻址方式 1.数据寻址方式 数据寻址方式有以下7 种类型。1)立即数寻址 立即数是指令操作数域直接给出参加运算或者进行某种操作的数据,又称即时数。它跟在操作码之后作为指令的一部分直接存放在代码段中,有8 位、16 位等形式。对于16 位数据,低字节在先,高字节在后。举例如下。MOV AL,5 执行后(AL)=O5H,其示意如图3-4(a)所示。又如,指令 MOV AX,2790H 执行后(AX)=2790H,其示意如图3-4(b)所示。下一页 返回 上一页任务2 8086 寻址方式 立即数只能是源操作数,不能是目的操作数。这种寻址方式执
12、行速度快,但是灵活性差,主要用来对寄存器或存储器赋值。2)寄存器寻址 寄存器寻址是指令操作数域给出存放操作数的寄存器。对于8位操作数,寄存器可以是AL,AH,BL,BH,CL,CH,DL,DH;对于16 位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP,BP。举例如下。MOV BX,AX 其示意如图3-5 所示。由于操作数在寄存器中,因此与存储器寻址相比,执行速度快。下一页 返回 上一页任务2 8086 寻址方式 3)直接寻址 直接寻址是指令操作数域给出存放操作数地址的偏移量,也称为有效地址,常用EA 表示。如果操作数存放在数据段以外的其他段中,应在指令中指定段寄存器。直接寻址示
13、意如图3-6 所示。举例如下。MOV BX,2000 H 设执行前(DS)=4000 H,EA=2000 H,(42000 H)=1 FH,(42001 H)=75 H,则执行后(BX)=751FH,其示意如图3-7 所示。在汇编语言中,也可以使用符号地址代替数值地址。举例如下。MOV AX,VALUE 其中,VALUE 表示存放操作数单元的符号地址。符号地址出现在指令中时,可省略方括号,例如,MOV AX,DATA。下一页 返回 上一页任务2 8086 寻址方式 4)寄存器间接寻址 寄存器间接寻址是指令操作数域给出存放操作数地址偏移量的寄存器。其寄存器主要有BX,BP,SI 和DI。如果没有
14、特别说明,使用寄存器BX,SI,DI 寻址时默认操作数在数据段中,即段寄存器DS。使用BP 寻址时,默认操作数在堆栈段中,即段寄存器SS。物理地址的生成如图3-8 所示。举例如下。MOV AX,BX 设执行前(DS)=3000H,(BX)=3000H,则执行后(AX)=2C7DH,其示意如图3-9 所示。又如,指令MOV AX,ES:SI,其段寄存器为ES,表示数据在附加段中。下一页 返回 上一页任务2 8086 寻址方式 5)寄存器相对寻址 寄存器相对寻址是指令操作数域给出存放基地址的基址寄存器和一个偏移量,基地址与偏移量相加,作为操作数地址的偏移地址,即有效地址EA。段地址左移4 位,与有
15、效地址相加,生成20 位的物理地址,如图3-10 所示。举例如下。MOV AX,DATADI 设执行前(DS)=3000H,(DI)=2000H,DATA=300H,则执行后(AX)=201AH,其意如图3-11 所示。6)基址加变址寻址 基址加变址寻址是指令操作数域给出一个存放基地址的基址寄存器和一个存放变址基值的变址寄存器,两个寄存器中的数据相加,作为操作数的偏移地址,即有效地址EA。基址寄存器主要有BX,BP,变址寄存器主要有SI 和DI。其中,基址寄存器BX 默认段寄存器DS 基址寄存器BP 默认段寄存器SS,允许使用段跨越,其示意如图3-12 所示。下一页 返回 上一页任务2 808
16、6 寻址方式 举例如下。MOV AX,BXDI 或MOV AX,BX+DI 设执行前(DS)=2100H,(BX)=0158H,(DI)=10A5H,则执行后(AX)=1234H,其示意如图3-13 所示。7)相对基址加变址寻址 相对基址加变址寻址是指令操作数域给出的是一个存放基地址的基址寄存器、一个存放变址基值的变址寄存器和一个偏移量,两个寄存器中的数据及偏移量相加,作为操作数的偏移地址,即有效地址EA。基址寄存器主要有BX,BP,变址寄存器主要有SI 和DI。其中,基址寄存器BX 默认段寄存器DS,基址寄存器BP 默认段寄存器SS。举例如下。下一页 返回 上一页任务2 8086 寻址方式
17、MOV AX,MASKBXDI MOV AX,MASKBX+DI MOV AX,MASK+BX+DI 设执行前(DS)=3000H,(BX)=2000H,(DI)=1000H,MASK=0250H,则执行后(AX)=4675 H,其示意如图3-14 所示。这种寻址方式为数组、表格及堆栈的访问提供了很大的方便。2.转移地址寻址方式 这种寻址方式主要用来确定转移指令和子程序调用指令CALL 的目标地址,其目标地址可能在当前代码段内,也可能在当前代码段外,故有4 种方式。下一页 返回 上一页任务2 8086 寻址方式 1)段内相对寻址 段内相对寻址是指程序的转移地址由指令指针IP 的当前值与指令中给
18、出的8 位或16 位偏移量相加而生成。偏移量是一个带符号的数,用补码表示。其中8 位偏移量称为段内短转移SHORT,转移范围为-128+127;16 位偏移量称为段内近转移NEAR,转移范围为-32768+32767。其示意如图3-15 所示。段内相对寻址的特点是代码段寄存器CS 的值保持不变,偏移量可以是8 位或者16 位。指令格式如下。JMP SHORT OPR;IP(IP)+8 位偏移量 JMP NEAR PTR OPR;IP(IP)+16 位偏移量下一页 返回 上一页任务2 8086 寻址方式 2)段内间接寻址 段内间接寻址是指转移指令的偏移地址存放在一个16 位的寄存器或存储器单元中
19、,用来取代IP 中的当前值。这个寄存器或存储器单元可由数据寻址方式中除立即数之外的任何一种方式得到。其示意如图3-16 所示。段内间接寻址的特点仍是CS 的值不变,IP 的值由一个16 位寄存器或存储器单元提供的数所取代。举例如下。JMP BX;把寄存器BX 中的数送入指令指针IP 中 JMP WORD PTRBXSI;按照基址加变址的方式获取操作数,送入IP 中下一页 返回 上一页任务2 8086 寻址方式 3)段间直接寻址 段间直接寻址是在指令中直接给出转移的16 位段地址和16位偏移地址,分别送入代码段寄存器CS 和指令指针寄存器IP中。举例如下。JMP FAR PTR NEXTSUB
20、段间寻址由FAR 来说明,其中NEXTSUB 是符号地址,在指令中直接给出,包括转移目标的偏移地址和段地址。4)段间间接寻址 在段间间接寻址方式中,转移地址存放在存储器中的两个连续字单元中,其中第一个字是偏移地址,第二个字是段地址。存储器单元地址可用数据寻址方式中除立即数和寄存器直接寻址以外的任何一种寻址方式来确定,如图3-17 所示。举例如下。下一页 返回 上一页任务2 8086 寻址方式 JMP DWORD PTRBX;由寄存器BX 确定连续两个存储器单元,取出其中的数据分别送入IP 和CS 中 JMP DWORD PTRBP+SI+100 H;由BP+SI+100H 确定连续两个存储器单
21、元,取出其中的数据分别送入IP 和CS 中返回 上一页任务3 8086 指令系统 8086 指令系统是80X86/Pentium 的基本指令集。指令的操作数可以是8 位或16 位操作数,偏移地址是16 位地址。8086 指令系统按功能可分为如下6 大类指令。(1)数据传送类指令。(2)算术运算类指令。(3)逻辑运算与移位类指令。(4)串操作类指令。(5)控制转移类指令。(6)处理器控制类指令。学习指令时要注意掌握各类指令的书写格式、指令功能、寻址方式、指令对标志位的影响等方面。全面准确地理解每条指令的功能和用法是编写程序的关键。下一页 返回任务3 8086 指令系统 3.3.1 数据传送类指令
22、 数据传送类指令是计算机中最基本、最重要,也是最常用的一种指令,其功能是把数据、地址或立即数传送到寄存器或存储单元。此类指令除了SAHF 和POPF 外均不影响标志寄存器的内容。按照传送的内容和功能的不同,可将数据传送指令分为3 组,如表3-1 所示。其中dst 表示目的操作数,src 表示源操作数。1.MOV 指令 MOV 指令的源操作数可以是存储器、通用寄存器、段寄存器以及立即数,目的操作数可以是存储器、通用寄存器与段寄存器。图3-18 描绘了MOV 指令可以传送的路径。下一页 返回 上一页任务3 8086 指令系统 表3-2 列出了常用的MOV 指令类型。表中使用了以下含义的通用符号。(
23、1)imm 表示立即数。(2)reg 表示通用寄存器。(3)r/m 表示寄存器或者存储器。(4)sreg 表示段寄存器。以上符号也适用于IA 通用指令集中的其他指令。由图3-18和表3-2 中可以看出必须注意以下几点问题。存储器之间不能互相传送,即源与目的两个操作数不能同时为存储器。段寄存器之间不能互相传送,即源与目的两个操作数不能同时为段寄存器。下一页 返回 上一页任务3 8086 指令系统 立即数不能直接传送给段寄存器,必须借助通用寄存器实现。例如,将55 H 装入DS 段寄存器就应使用以下2 条指令。MOV AX,55H MOV DS,AX 在汇编语言编程的基本规则中必须保持源与目的两个
24、操作数的类型一致,即两者都是16 位,或者都是32 位。由于常数是不带类型的,因而当CPU 已知目的操作数的类型时就会自动扩展常数的长度。例如,MOV AX,68 是合法的,此时AH 中装0。但当CPU 不能确定目的操作数类型时就无法处理常数,例如,MOV BX,68 是非法的。此时的目的操作数只知是由BX 指定了首地址的存储器数据,然而是字节还是字或者其他数据类型都未确定,因此必须在指令的目的操作数前加入类型前缀。举例如下。下一页 返回 上一页任务3 8086 指令系统 MOV WORD PTRBX,68;(BX)68,(BX+1)00 MOV DWORD PTRBX,68;(BX)68,(
25、BX+1/2/3)00 表3-2 中的3 条串操作指令:MOVSB 是字节类型串操作;MOVSIV 是字类型串操作;MOVSD 是双字类型串操作。它们均是专门针对数据块的传送而设计的,执行该指令时CPU将自动发生以下一系列操作。将由DS:SI 指定的源存储器数据传送到由ES;DI 指定的目的存储器中。源地址指向下一个单元,对于MOVSB 是SI 1 SI,对于MOVSW 是SI 2 SI,对于MOVSD 是SI 4 SI,具体为加法还是减法则取决于标志寄存器中的方向标志位D。D=0 时做加法,地址递增;D=1 时做减法,地址递减。下一页 返回 上一页任务3 8086 指令系统 目的地址指向下一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工信版 计算机 原理 模块 三教 课件
限制150内