微机原理课件第3章.ppt

上传人:小飞机 文档编号:6284496 上传时间:2023-10-13 格式:PPT 页数:60 大小:368KB
返回 下载 相关 举报
微机原理课件第3章.ppt_第1页
第1页 / 共60页
微机原理课件第3章.ppt_第2页
第2页 / 共60页
微机原理课件第3章.ppt_第3页
第3页 / 共60页
微机原理课件第3章.ppt_第4页
第4页 / 共60页
微机原理课件第3章.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《微机原理课件第3章.ppt》由会员分享,可在线阅读,更多相关《微机原理课件第3章.ppt(60页珍藏版)》请在三一办公上搜索。

1、本教案内容,第3章 8086CPU指令系统汇编语言指令8086指令分类数据与转移地址的寻址方式数据传送类指令算术运算类指令逻辑运算类指令移位类指令标志位操作指令,转移指令循环控制指令子程序调用返回指令中断调用返回指令字符串操作指令I/O输入输出指令其它指令宏指令,3.2 8086指令分类,指令系统 是指CPU能完成的所有指令的集合,它是在CPU设计时就确定了的。所以,对不同的CPU,其指令系统中所包含的具体指令将是各不相同的。但8088/8086 CPU的指令系统是完全一样的。,8088/8086 CPU的指令系统可分成下面13类:,(1)数据传送指令;(2)算术运算指令;(3)逻辑运算指令;

2、(4)移位指令;,3.2 8086指令分类,(5)标志位操作指令;(6)转移指令(7)循环控制指令;(8)子程序调用和返回指令;(9)中断调用和返回指令;(10)字符串操作指令;,3.2 8086指令分类,(11)输入、输出指令;(12)其它指令(13)宏指令,3.2 8086指令分类,数据的寻址方式(共8种):立即寻址(Immediate Addressing)寄存器寻址(Register Addressing)存储器寻址(Memory Addressing)(5种):直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和基址变址且相对寻址隐含寻址(Hidden Addressing),数

3、据的寻址方式就是告诉CPU存/取数据的地方。,3.3 数据寻址方式,操作数直接存放在指令中,紧跟在操作码之后,作为指令的一部分,存放在代码段里,这种操作数称为立即数。如:MOV AL,12H MOV AX,1234H,3.3 数据寻址方式,A H,A L,A X,操作码,存储器,例:MOV AX,1234H,B8H,34H,12H,(AX)=1234H,3.3 数据寻址方式,立即寻址主要用来给REG或M赋初值。注意:只能用于源操作数字段,不能用于目的操作数字段。如:MOV 12H,AL(语法错误),3.3 数据寻址方式,数据放在指令规定的寄存器中,对16位数据,REG可以是AX、BX、CX、D

4、X、SI、DI、SP、BP以及段寄存器,而对于8位数据,REG可以是AH、AL、BH、BL、CH、CL、DH、DL。,3.3 数据寻址方式,例:MOV AX,BX,若(AX)=1234H,(BX)=5678H,则CPU执行上条指令后,(AX)=5678H,而(BX)不变。,又如:MOV CX,DL,(语法错误),错误原因:类型不一致。,3.3 数据寻址方式,在程序设计中,一般存放数据时,寄存器选择通用寄存器,而存放结果时尽可能的使用AX累加器,因为使用AX累加器要比用其它寄存器存放结果,指令执行时间要短一些。寄存器寻址既可以作DST,也可以作SRC。,3.3 数据寻址方式,这类寻址方式,操作数

5、在存储器中,而存储器单元的地址由以下五种寻址方式的任何一种均可以找到。但在指令中给出的只是要寻找的操作数所在单元的段内偏移地址,而操作数所在单元的段地址除非指令中用段前缀特别指明,否则是默认的DS。,3.3 数据寻址方式,PA(段寄存器)16+指令中给出的偏移地址,指令中直接给出了要寻找操作数所在单元的16位偏移地址。,操作数所在单元的物理地址:PA(段寄存器)16+指令中给出的偏移地址,直接寻址(Direct Addressing),指令中直接给出的操作数所在单元的16位偏移地址,默认在数据段。也可以通过增加段前缀来改变操作数所在的段地址。,3.3 数据寻址方式,A X,CS段,操作码,例1

6、:MOV AX,2000H若DS为3000H,则:,A H,A L,32000H,32001H,3 0 0 0 0 H,+,DS,存储器,20H,00H,A1H,2 0 0 0 H,PA=3 2 0 0 0 H,3.3 数据寻址方式,34H,12H,(AX)=1234H,CS段,操作码,例2:MOV 2000H,AL若DS为3000H,则:,A L,32000H,3 0 0 0 0 H,+,DS,存储器,20H,00H,2 0 0 0 H,PA=3 2 0 0 0 H,3.3 数据寻址方式,CS段,操作码,例3:MOV ES:2000H,AL若ES为2050H,则:,A L,22500H,2

7、0 5 0 0 H,+,ES,存储器,20H,00H,2 0 0 0 H,PA=2 2 5 0 0 H,前缀码,3.3 数据寻址方式,在实际的汇编语言程序设计中,如果程序比较复杂,而用到的存放数据的单元又很多,那么在直接寻址方式当中,用户就要记住存放数据的每个单元的地址,同时还要记住该地址单元存放的数据的意义,这样对设计程序带来了很大的困难。如:MOV ES:2000H,AL,3.3 数据寻址方式,所以在实际的汇编语言程序设计中,常常采用给存放数据的单元,定义一个符号地址名,即变量名/变量。如:COUNT DB 20H这样,在程序设计中就可以用这个变量名代替原来的存储器单元的实际地址。,3.3

8、 数据寻址方式,例4:若(DS)=1500H,TABLE为在DS段定义的一个字变量,且偏移地址为0004H。则CPU执行 MOV AX,TABLE 指令完成的操作如下:,1 5 0 0 0 H,+,DS,存储器,数据段,0 0 0 4 H,PA=1 5 0 0 4 H,A H,A L,15004H,15005H,TABLE,3.3 数据寻址方式,例5:若VAR1为字变量,VAR2和VAR3为字节变量,判断下列指令的书写格式是否正确,正确的说出SRC和DST的寻址方式,不正确说出错误原因。,MOV AX,VAR1 SRC为直接寻址 DST为寄存器寻址 MOV AX,VAR2 类型不一致 MOV

9、VAR2,VAR3 两存储器单元之间不 能直接传送数据 MOV 0200H,12H 类型不明确,3.3 数据寻址方式,例6:将例5中语法不正确的语句改对。,MOV AX,VAR2 类型不一致 改:MOV AL,VAR2 MOV VAR2,VAR3 两存储器单元之间不 改:MOV AL,VAR3 能直接传送数据 MOV VAR2,AL MOV 0200H,12H 类型不明确 改:MOV BYTE PTR 0200H,12H 或者:MOV WORD PTR 0200H,12H,注:PTR为临时属性修改符。,3.3 数据寻址方式,这种寻址方式,要寻找的操作数在某存储器单元中,该存储器单元地址的段内1

10、6位偏移地址在指令中以BX、SI、DI某一个寄存器给出。其段地址默认在DS段。,SI,DI,BX,EA=,寄存器间接寻址Register Indirect Addressing,3.3 数据寻址方式,例1:MOV AX,BX 其SRC为寄存器间接寻址;DST为寄存器寻址;指令完成的功能为:AX(DS:(BX)若:DS=3000H,BX=1050H 则:SRC所在单元的物理地址为:,PA=(DS)16+(BX)=30000H+1050H=31050H,3.3 数据寻址方式,操作码,A H,A L,31050H,31051H,存储器,A X,8BH,07H,3 0 0 0 0 H,DS:,+,1

11、0 5 0 H,3 1 0 5 0 H,BX:,PA:,3.3 数据寻址方式,MOV AX,BX,例2:MOV ES:SI,AL 指令完成的功能为:(ES:(SI)(AL)若:ES=4000H,SI=1234H,(AL)=23H 则:DST所在单元的物理地址为:PA=(ES)16+(SI)=40000H+1234H=41234H 指令执行后(41234H)=23H.,3.3 数据寻址方式,例3:判断下列指令的书写格式是否正确,正确的说出SRC和DST的寻址方式,不正确说出错误原因,并改正。MOV BX,SI 两存储器单元之间不 能直接传送数据;类型也 不明确。改正:MOV AL,SI MOV

12、BX,AL,3.3 数据寻址方式,MOV DI,12H 类型不明确 改正:MOV WORD PTR DI,12H,MOV SI,CX DST为寄存器间接寻址 SRC为寄存器寻址,3.3 数据寻址方式,要寻找的操作数在某存储器单元之中,该单元的有效地址的一部分在 中,另一部分为一个 DISP。,寄存器相对寻址Register Relative Addressing,其中,DISP,相对位移量,3.3 数据寻址方式,EA=,+,在DISP为常数时,操作数所在单元的段地址以寄存器为准,若寄存器为BX、SI、DI,操作数默认在DS段中。若寄存器为BP,操作数默认在SS段中。在DISP为变量时,操作数所

13、在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地址。,3.3 数据寻址方式,例1:MOV AX,BX+05H 其中,SRC也可以写成:若:DS=2000H,BX=0008H,存放操作数单元的物理地址为:,PA=(DS)16+(BX)+05H=20000H+0008H+05H=2000DH,BX+05H,05HBX,05H+BX,3.3 数据寻址方式,A H,A L,2000DH,2000EH,+,存储器,AX,8BH,47H,05H,2 0 0 0 0 H,0 0 0 8 H,2 0 0 0 D H,0 0 0 5 H,3.3 数据寻址方式,MOV AX,BX+05H,例2:MOV

14、 AX,BP 若:SS=1050H,BP=0050H,存放操作数的存储单元的物理地址为:,PA=(SS)16+(BP)+00H=10500H+0050H+00H=10550H,3.3 数据寻址方式,A H,A L,10550H,10551H,+,存储器,相对偏移量DISP为0,这里特别指出,BP寄存器无间接寻址,只不过在相对寻址时,DISP为0。,1 0 5 5 0 H,0 0 5 0 H,1 0 5 0 0 H,3.3 数据寻址方式,MOV AX,BP,例3:若(DS)=1500H,TABLE为在DS段定义的一个字变量,且偏移地址为0004H,(BP)=0003H。MOV AX,TABLE

15、BPSRC的寻址方式为寄存器相对寻址。指令完成的操作为:(AX)(DS:OFFSET TABLE+(BP),3.3 数据寻址方式,要寻找的操作数在某存储器单元之中,该单元有效地址的一部分在 中,另一部分在 中。,基址变址寻址Based Indexed Addressing,EA=,+,该单元的段地址以基址寄存器为准,若基址寄存器为BX,则段地址默认在DS中,若基址寄存器为BP,则段地址默认在SS中。,3.3 数据寻址方式,例1:MOV AX,BXSI(AX)(DS:(BX+SI)例2:MOV AX,BPSI(AX)(SS:(BX+SI)例3:MOV BPDI,AL(SS:(BP+DI)(AL)

16、,3.3 数据寻址方式,它是基址变址寻址的扩充,操作数仍在存储器中,存储器单元的有效地址为:,同样,如果用BX作为基地址,操作数默认在DS段中;如果用BP作为基地址,则在SS段中。在DISP为变量时,操作数所在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地址。,基址变址且相对寻址Based Indexed Relative Addressing,3.3 数据寻址方式,例1:MOV AX,BXDI04(AX)(DS:(BX+DI+04H)例2:MOV AX,BPDI04(AX)(SS:(BP+DI+04H)例3:MOV DS:BPDI+04H,AL(DS:(BP+DI+04H)(AL

17、),3.3 数据寻址方式,有些指令的指令码中不包含指明操作数地址的部分,而其操作码本身隐含的指明了操作数地址。如:乘除法指令、字符串操作类指令等。,3.3 数据寻址方式,例1.若(BX)=0158H,(DI)=10A5H,(DS)=2100H,DISP=1B57H,(BP)=0100H,(SS)=1100H,段寄存器按默认段寄存器,则相对于各种寻址方式的EA的求法如下:,3.3 数据寻址方式,MOV AX,DISP,例1.若(BX)=0158H,(DI)=10A5H,(DS)=2100H,DISP=1B57H,(BP)=0100H,(SS)=1100H,段寄存器按默认段寄存器,则相对于各种寻址

18、方式的EA的求法如下:,3.3 数据寻址方式,MOV AX,BX,例1.若(BX)=0158H,(DI)=10A5H,(DS)=2100H,DISP=1B57H,(BP)=0100H,(SS)=1100H,段寄存器按默认段寄存器,则相对于各种寻址方式的EA的求法如下:,3.3 数据寻址方式,MOV AX,DISPBP,例1.若(BX)=0158H,(DI)=10A5H,(DS)=2100H,DISP=1B57H,(BP)=0100H,(SS)=1100H,段寄存器按默认段寄存器,则相对于各种寻址方式的EA的求法如下:,3.3 数据寻址方式,MOV AX,BXDI,例1.若(BX)=0158H,

19、(DI)=10A5H,(DS)=2100H,DISP=1B57H,(BP)=0100H,(SS)=1100H,段寄存器按默认段寄存器,则相对于各种寻址方式的EA的求法如下:,3.3 数据寻址方式,MOV AX,DISPBPDI,例2:判断下列指令的书写格式是否正确,正确的说出SRC和DST的寻址方式,不正确说出错误原因。,MOV AX,BXSI SRC为基址变址寻址 DST为寄存器寻址 MOV AX,BL 类型不一致 MOV BP,DI+01H 两存储器单元之间 不能直接传送数据 MOV BXDI+02H,12H 类型不明确,3.3 数据寻址方式,寻找的操作数指定的地址,赋给IP或CS:IP,

20、从而实现程序的转移。如果程序转移后只有IP发生了改变,则称为段内转移或者称为近程转移(也称为NEAR型转移)。如果程序转移后CS、IP均发生了改变,则称为段间转移或者称为远程转移(也称为FAR型转移)。,3.3 转移地址的寻址方式,先介绍无条件转移指令JMP:JMP OPR程序转移到由OPR指定的位置执行。,8086指令系统中的转移指令有两大类:,无条件转移指令:有JMP、CALL、RET、IRET,条件转移指令:如JZ、JC、JCXZ、LOOP等。,3.3 转移地址的寻址方式,3.3 转移地址的寻址方式,转移地址的寻址方式有下列4种:,段内寻址表示转移在本段内完成,段间寻址表示转移在不同段之

21、间完成。,1.段内直接寻址(Direct addressing within same segment)(也叫段内相对寻址),3.3 转移地址的寻址方式,段内直接寻址是指直接在指令中给出转移目的地址(16位偏移地址),转移在同一个段内完成。指令中用JMP 表示,当然这里的标号与该指令处在同一个段。例如:JMP LABEL;程序转移到标号LABEL处执行,操作码,16位DISP,L1:,间隔的字节数称为相对位移量DISP,当前IP,-32768,+32767,?H,?H,转移目的地的IP=当前(IP)+16位DISP,JMP L1;JMP NEAR PTR L1,XXH,3.3 转移地址的寻址方

22、式,2.段内间接寻址(Indirect addressing within same segment),3.3 转移地址的寻址方式,段内间接寻址是指转移目的地址(16位偏移地址)保存在寄存器或存储单元,转移也在同一个段内完成,在指令中指出所使用的寄存器或存储单元的偏移地址,当采用存储单元保存转移地址时,可以采用以上介绍的5种存储器寻址方式。例如:JMP BX;程序转移的目的地址为BX的内容JMP VAR1;程序转移的目的地址为字型变量 VAR1的内容JMP VAR1SI;目的地址保存在存储器,其有效 地址为(SI)OFFSET VAR1,例:若(DS)=2000H,(BX)=0100H,(SI

23、)=0002H,(20100H)=1200H,(20102H)=1250H,则CPU执行:JMP BX 指令后,(IP)=0100H JMP WORD PTR BX指令后,(IP)=1200H JMP WORD PTR BXSI指令后,(IP)=1250H,3.3 转移地址的寻址方式,1.段间直接寻址Direct addressing between different segments,段间转移地址的寻址方式(CS、IP均发生改变),只适合于无条件转移指令,3.3 转移地址的寻址方式,段间直接寻址是指直接在指令中给出转移目的地址(16位偏移地址和16位段地址),转移在不同段之间完成。指令中用

24、JMP 表示,当然这里的标号与该指令处在不同的段。例如:JMP LABEL;程序转移到标号LABEL处执行(LABEL 不在本段中),操作码,SEG LABEL,LABEL:,?H,?H,JMP FAR PTR LABEL,*H,代码段,*H,XXH,OFFSET LABEL,1,代码段,2,;,?:*H,3.3 转移地址的寻址方式,2.段间间接寻址Indirect addressing between different segments,3.3 转移地址的寻址方式,段间间接寻址是指转移目的地址(32位地址)保存在存储单元中,转移在不同的段之间完成,在指令中指出存储单元的偏移地址,可以采用以

25、上介绍的5种存储器寻址方式。存储单元必须是双字型变量,第一个字用于存放目的地址的段内偏移地址,第二个字用于存放目的地址的段地址。例如:JMP VAR3;程序转移的目的地址为双字型变量 VAR3的内容JMP VAR1BX;目的地址保存在存储器,其有效 地址为(BX)OFFSET VAR3,存储器,3.3 转移地址的寻址方式,若(DS)=3000H,(BX)=1000H,(DI)=2000H,则:,33000H,82000H,80H,3.3 转移地址的寻址方式,3.3 转移地址的寻址方式,综上所述,转移地址的4种寻址方式也可以从指令形式加以区分,即:,作业,指出第3题(1)(2)(3)(6)(11)(13)源操作数的寻址方式第5题,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号