微机原理第三章.ppt
《微机原理第三章.ppt》由会员分享,可在线阅读,更多相关《微机原理第三章.ppt(174页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 指令系统和寻址方式指令系统和寻址方式u3.1 8086/8088CPU的的概述概述及寻址方式及寻址方式u 3.2 8086/8088CPU的指令系统的指令系统3.1 3.1 指令系统的概述及寻址方式指令系统的概述及寻址方式 一条指令需要指出两部分内容:一条指令需要指出两部分内容:1 1、要进行什么操作(由操作码指出)、要进行什么操作(由操作码指出)2 2、指令所涉及的操作数和操作结果存放的位置、指令所涉及的操作数和操作结果存放的位置3.1 3.1 指令系统的概述指令系统的概述 指令组成:指令组成:操作码和操作数(地址码)两部分构成操作码和操作数(地址码)两部分构成操作码:操作码:表
2、示该指令所要完成的操作表示该指令所要完成的操作操作数:操作数:表示该指令的操作对象表示该指令的操作对象 指令中可以直接给出所使用的操作数本身,指令中可以直接给出所使用的操作数本身,或者只给出操作数所在的寄存器编号、存储器或或者只给出操作数所在的寄存器编号、存储器或I/OI/O端口的地址或地址的信息。端口的地址或地址的信息。数据寻址数据寻址 指令中关于如何计算操作数有效地址的方法指令中关于如何计算操作数有效地址的方法称为寻址方式。称为寻址方式。计算机中按照指令给出的寻址方式计算机中按照指令给出的寻址方式求出操作数的有效地址和存取操作数的过程称为寻址求出操作数的有效地址和存取操作数的过程称为寻址操
3、作操作指令地址寻址指令地址寻址数据寻址数据寻址-获取操作数的存放地址及操作结果获取操作数的存放地址及操作结果 的存放地址的存放地址确定下一条指令的地址的方法确定下一条指令的地址的方法数据寻址有以下三种:数据寻址有以下三种:1.1.立即寻址方式立即寻址方式2.2.寄存器寻址方式寄存器寻址方式3.3.存储器寻址方式(存储器寻址方式(5 5种)种)1.1.立即寻址方式立即寻址方式指令中直接给出操作数指令中直接给出操作数例如:例如:MOV CL,05 ;(CL)=05MOV CL,05 ;(CL)=05MOV AX,1234H ;(AX)=1234HMOV AX,1234H ;(AX)=1234HMO
4、V AL,PORT1MOV AL,PORT1MOV AL,10010011B AND 0FEHMOV AL,10010011B AND 0FEH格式格式:操作码操作码 数字表达式数字表达式说明:说明:1)1)立即数可为立即数可为8 8位,可为位,可为1616位;位;2)2)只能为整数只能为整数 3)3)只能做源操作数只能做源操作数 4)4)不能用于单操作数不能用于单操作数2.2.寄存器寻址方式寄存器寻址方式 操作数在操作数在CPUCPU内部的某个寄存器中,指令中内部的某个寄存器中,指令中只给出寄存器名只给出寄存器名例如:例如:MOV AX,BX ;MOV AX,BX ;将将BXBX内容传送到内
5、容传送到AXAX中中格式:格式:操作码操作码 寄存器名寄存器名MOV AL,BL ;MOV AL,BL ;将将BLBL内容传送到内容传送到ALAL中中 1)161)16位寄存器为位寄存器为AX,BX,CX,DX,SI,DI,SP,BPAX,BX,CX,DX,SI,DI,SP,BP;2)8 2)8位寄存器为位寄存器为AH,AL,BH,BL,CH,CL,DH,DLAH,AL,BH,BL,CH,CL,DH,DL;3)3)源操作数,目的操作数都(同时)可以使用源操作数,目的操作数都(同时)可以使用 寄存器寻址寄存器寻址说明:说明:例:例:MOV SS,AXMOV SS,AX指令执行前指令执行前(AX)
6、=3064H(AX)=3064H (SS)=1234H (SS)=1234H指令执行后指令执行后(SS)=3064H(SS)=3064H (AX)(AX)保持不变保持不变3.3.存储器寻址方式存储器寻址方式1 1)直接寻址方式)直接寻址方式 操作数在存储器中,存储单元的地址由操作数在存储器中,存储单元的地址由指令直接给出指令直接给出格式:格式:操作码操作码 地址表达式或地址表达式或 地址表达式地址表达式 或或 数字表达式数字表达式 例:例:MOV AL,TABLEMOV AL,TABLE MOV AL,TABLE MOV AL,TABLE MOV AL,1000H MOV AL,1000HTA
7、BLE TABLE 是在数据段定义的一个字节数组的首地址标号是在数据段定义的一个字节数组的首地址标号(变量名),其偏移地址为(变量名),其偏移地址为1000H1000H例如:例如:MOV AX,1000HMOV AX,1000H指令执行前指令执行前:(DS)=3000H:(DS)=3000H,(31000)=12H,(31000)=12H,(31001)=34H (31001)=34H3412H3412H指令执行后指令执行后:(AX)=?:(AX)=?31000H31000H31001H31001H12H12H34H34HAXAX 默认的段寄存器位默认的段寄存器位DSDS,如果不是,如果不是D
8、SDS,则需要,则需要用前缀说明用前缀说明说明:说明:MOV AX,ES:1000HMOV AX,ES:1000H将将ESES段中段中1000H1000H和和1001H1001H两个单元的内容送到两个单元的内容送到BXBX中中MOV AX,1000HMOV AX,1000H 基址寄存器:基址寄存器:BX,BPBX,BP;变址寄存器:;变址寄存器:SI,DISI,DI操作数在存储器中,存储单元的有效地址在寄存器中。操作数在存储器中,存储单元的有效地址在寄存器中。2 2)寄存器间接寻址方式)寄存器间接寻址方式格式:格式:操作码操作码 基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 例:例
9、:MOV AX,BX MOV AX,BX MOV AX,SI MOV AX,SI例如:例如:MOV AX,BXMOV AX,BX假设指令执行前假设指令执行前:(DS)=3000H(DS)=3000H,(BX)=1010H,(BX)=1010H,(31010)=12H(31010)=12H(31011)=24H(31011)=24H2412H2412H指令执行后指令执行后:(AX)=?:(AX)=?AXAX31010H31010H31011H31011H12H12H24H24H存储器存储器 若指令中指定的寄存器是若指令中指定的寄存器是BX,SI,DIBX,SI,DI,则操作数,则操作数默认在数据
10、段中,即在默认在数据段中,即在DSDS中为段基址;中为段基址;若指令中指出寄存器为若指令中指出寄存器为BPBP,则操作数默认在堆栈段,则操作数默认在堆栈段,即在即在SSSS中为段基址中为段基址说明:说明:1)1)以以SI,DI,BXSI,DI,BX为寄存器间接寻址为寄存器间接寻址默认段寄存器为默认段寄存器为DSDS如使用其它段寄存器需要加前缀说明如使用其它段寄存器需要加前缀说明MOV AX,ES:BXMOV AX,ES:BX2)2)以以BPBP为寄存器间接寻址为寄存器间接寻址默认段寄存器为默认段寄存器为SSSS如使用其它段寄存器需要加前缀说明如使用其它段寄存器需要加前缀说明MOV AX,ES:
11、BPMOV AX,ES:BP3 3)寄存器相对寻址方式)寄存器相对寻址方式 操作数在存储器中,存储单元的有效地址是寄存器操作数在存储器中,存储单元的有效地址是寄存器的值与一个的值与一个整数整数之和。之和。格式:格式:操作码操作码 变量名变量名 基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 变量名变量名+基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 符号名符号名 基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 变量名变量名+基址寄存器名或者变址寄存器名基址寄存器名或者变址寄存器名 操作码操作码 数字表达式数字表达式基址寄
12、存器名或者变址寄存器名基址寄存器名或者变址寄存器名 例:例:TABLE TABLE 是在数据段定义的一个字节数组的是在数据段定义的一个字节数组的首地址标号(也成变量名)则:首地址标号(也成变量名)则:MOV SI,5 MOV SI,5 MOV AL,TABLESI MOV AL,TABLESI或者或者 MOV AL,TABLE+SI MOV AL,TABLE+SI 若指令中指定的寄存器是若指令中指定的寄存器是BX,SI,DIBX,SI,DI,则操作数,则操作数默认在数据段中,即在默认在数据段中,即在DSDS中为段基址;中为段基址;若指令中指出寄存器为若指令中指出寄存器为BPBP,则操作数默认在
13、附加,则操作数默认在附加数据段中,即在数据段中,即在ESES中为段基址中为段基址说明:说明:4 4)基址变址寻址方式)基址变址寻址方式MOV AX,BXSIMOV AX,BXSI或或MOV AX,BX+SIMOV AX,BX+SI操作数的偏移地址是两个指定寄存器之和操作数的偏移地址是两个指定寄存器之和格式:格式:操作码操作码 基址寄存器名基址寄存器名变址寄存器名变址寄存器名 操作码操作码 基址寄存器名基址寄存器名+变址寄存器名变址寄存器名 例:例:MOV AX,BXSIMOV AX,BXSI用途:用途:5 5)相对基址变址寻址方式)相对基址变址寻址方式 操作数偏移地址在指定寄存器的值和相对操作
14、数偏移地址在指定寄存器的值和相对偏移量之和偏移量之和格式:格式:操作码操作码 变量名变量名 基址寄存器名基址寄存器名变址寄存器名变址寄存器名 操作码操作码 变量名变量名+基址寄存器名基址寄存器名+变址寄存器名变址寄存器名-MOV AX,MASKBXSIMOV AX,MASKBXSI或或MOV AX,MASKBX+SIMOV AX,MASKBX+SI或或MOV AX,MASK+BX+SIMOV AX,MASK+BX+SI例:例:MOV AX,MASKBXDIMOV AX,MASKBXDI 若指令中指定的基址寄存器是若指令中指定的基址寄存器是BXBX,则操作数,则操作数默认在数据段中,即在默认在数
15、据段中,即在DSDS中为段基址;中为段基址;若指令中指定的基址寄存器为若指令中指定的基址寄存器为BPBP,则操作数默认在,则操作数默认在附加数据段中,即在附加数据段中,即在ESES中为段基址中为段基址说明:说明:用途:用途:小结小结综观综观8086/80888086/8088寻址方式,其操作数有三种类型:寻址方式,其操作数有三种类型:立即操作数立即操作数寄存器操作数寄存器操作数存储器操作数存储器操作数指令寻址有以下四种:指令寻址有以下四种:1.1.段内直接寻址段内直接寻址2.2.段间寻址方式段间寻址方式3.3.段内间接寻址段内间接寻址4.4.段间间接寻址段间间接寻址确定下一条要执行指令的地址的
16、方法确定下一条要执行指令的地址的方法1.1.段内直接寻址段内直接寻址格式:格式:指令名指令名 SHORT SHORT 转移目标地址标号转移目标地址标号指令名指令名 转移目标地址标号转移目标地址标号指令名指令名 NEAR PTR NEAR PTR转移目标地址标号转移目标地址标号JMP SHORT NEXTJMP SHORT NEXT这种指令只改变这种指令只改变IPIP寄存器的值,而不改变寄存器的值,而不改变CSCS的值的值位移量位移量指令指令IPIP寄存器寄存器IPIP寄存器寄存器段内寻址示意图段内寻址示意图2.2.段间直接寻址段间直接寻址格式:格式:指令名指令名 FAR PTR FAR PTR
17、 转移目标地址标号转移目标地址标号指令名指令名 段地址段地址:段内偏移量段内偏移量JMP FAR PTR NEXT1JMP FAR PTR NEXT1这种指令不仅改变这种指令不仅改变IPIP寄存器的值,而且改变寄存器的值,而且改变CSCS的值的值地址地址指令指令段间寻址示意图段间寻址示意图段地址段地址IPIP寄存器寄存器CSCS寄存器寄存器3.3.段内间接寻址段内间接寻址格式:格式:指令名指令名 16 16寄存寄名寄存寄名指令名指令名 WORD PTR WORD PTR 存储器寻址方式存储器寻址方式JMP WORD PTR TABLEBXJMP WORD PTR TABLEBX这种指令只改变这
18、种指令只改变IPIP寄存器的值,而不改变寄存器的值,而不改变CSCS的值的值寄存器编号寄存器编号指令指令段内间接寻址示意图段内间接寻址示意图IPIP寄存器寄存器转移目标地址转移目标地址的偏移地址的偏移地址1616位寄位寄存器存器存储器寻址方存储器寻址方式式指令指令IPIP寄存器寄存器转移目标地址转移目标地址的偏移地址的偏移地址存储器存储器计算物理地址计算物理地址4.4.段间间接寻址段间间接寻址格式:格式:指令名指令名 DWORD PTR DWORD PTR 存储器寻址方式存储器寻址方式JMP DWORD PTR TABLEBXJMP DWORD PTR TABLEBX这种指令不仅改变这种指令不
19、仅改变IPIP寄存器的值,而且改变寄存器的值,而且改变CSCS的值的值段间间接寻址示意图段间间接寻址示意图存储器寻存储器寻址方式址方式指令指令IPIP寄存器寄存器转移目标地址转移目标地址的偏移地址的偏移地址存储器存储器计算物理地址计算物理地址CSCS寄存器寄存器3.2 8086/8088CPU3.2 8086/8088CPU的指令系统的指令系统3.2.1 3.2.1 数据传送指令数据传送指令3.2.2 3.2.2 算术运算指令算术运算指令3.2.3 3.2.3 逻辑运算和移位指令逻辑运算和移位指令3.2.4 3.2.4 串操作指令串操作指令3.2.5 3.2.5 控制转移指令控制转移指令3.2
20、.6 3.2.6 处理器控制指令处理器控制指令3.2.1 3.2.1 数据传送指令数据传送指令u通用传送指令通用传送指令u累加器传送指令累加器传送指令u地址传送指令地址传送指令u标志传送指令标志传送指令1.1.通用传送指令通用传送指令1)1)最基本的传送指令最基本的传送指令MOVMOV格式:格式:MOV MOV 目的操作数目的操作数 源操作数源操作数功能功能:将源操作数存入目的操作数的寄存器或存储单元:将源操作数存入目的操作数的寄存器或存储单元 寄存器寄存器内存内存实现实现:寄存器:寄存器寄存器寄存器 内存内存/寄存器寄存器立即数立即数 寄存器寄存器段寄存器段寄存器 内存内存段寄存器段寄存器例
21、:例:MOV AX,BX MOV AX,BX MOV AX,1010H MOV AX,1010H 说明:说明:1 1、目的操作数不能是立即数、目的操作数不能是立即数2 2、不能在两个内存单元之间直接传送数据、不能在两个内存单元之间直接传送数据3 3、不能将立即操作数送给段寄存器、不能将立即操作数送给段寄存器4 4、段寄存器之间不能相互传送数据、段寄存器之间不能相互传送数据5 5、CS,IP,PSWCS,IP,PSW不能作为目的操作数,但可以作为不能作为目的操作数,但可以作为 源操作数源操作数6 6、源操作数和目的操作数字长必须相等、源操作数和目的操作数字长必须相等7 7、MOVMOV指令不影响
22、标志位指令不影响标志位1.MOV MEM2,MEM11.MOV MEM2,MEM1修改为:修改为:MOV AX,MEM1 MOV AX,MEM1 MOV MEM2,AX MOV MEM2,AX2.MOV DS,2000H2.MOV DS,2000H修改为:修改为:MOV AX,2000H MOV AX,2000H MOV DS,AX MOV DS,AX3.MOV ES,DS3.MOV ES,DS修改为:修改为:MOV AX,DS MOV AX,DS MOV ES,AX MOV ES,AX例题:例题:2)2)数据进栈指令数据进栈指令PUSHPUSH和出栈指令和出栈指令POPPOP 堆栈是一段内存
23、区域,可以用于保护中间数据、堆栈是一段内存区域,可以用于保护中间数据、运算结果或某些寄存器的值,需要时可以从堆栈中运算结果或某些寄存器的值,需要时可以从堆栈中将数据取出来。将数据取出来。堆栈按照先进后出的原则来保存数据堆栈按照先进后出的原则来保存数据 微机一般把内存的一段区间作为堆栈使用,即微机一般把内存的一段区间作为堆栈使用,即堆栈段堆栈段SSSS。段内物理地址由。段内物理地址由SSSS和和SPSP决定,决定,SPSP始终指始终指向栈顶。对于数据的的保存和恢复需要有由堆栈指向栈顶。对于数据的的保存和恢复需要有由堆栈指令来完成令来完成格式:格式:PUSH PUSH 操作数操作数 POP POP
24、 操作数操作数假设假设(SSSS)=9000H=9000H,堆栈段位堆栈段位64KB64KB(SP)=0E200H(SP)=0E200H则:则:整个堆栈段的物理地址整个堆栈段的物理地址范围为:范围为:90000H9FFFFH堆栈物理地址为:堆栈物理地址为:9E200H9E200H举例:举例:PUSH AX;PUSH AX;将将AXAX内容压入堆栈内容压入堆栈POP BX;POP BX;将堆顶内容弹出到将堆顶内容弹出到BXBX(1)(1)(2)(2)说明:说明:1 1、80868086的堆栈操作总是按字进行的;的堆栈操作总是按字进行的;2 2、每推入一个字,、每推入一个字,SPSP减减2 2,一
25、个字的高字节放,一个字的高字节放在堆栈的较高地址,低字节放在较低地址;弹在堆栈的较高地址,低字节放在较低地址;弹出一个字,出一个字,SPSP加加2 2;3 3、堆栈的内容按先进后出的原则;、堆栈的内容按先进后出的原则;4 4、不能使用立即寻址方式;、不能使用立即寻址方式;5 5、PUSHPUSH和和POPPOP指令不影响标志位;指令不影响标志位;6 6、CSCS可以压入堆栈,但栈中的值出断点的之可以压入堆栈,但栈中的值出断点的之外外 不能弹入到不能弹入到CSCS3)3)标志进栈指令标志进栈指令PUSHFPUSHF和出栈指令和出栈指令POPFPOPF将将1616位堆栈数据压入或弹出到位堆栈数据压
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 第三
限制150内