资源描述:
《微机原理第三章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章指令系统和寻址方式3.18086/8088CPU的概述及寻址方式3.28086/8088CPU的指令系统3.1指令系统的概述及寻址方式一条指令需要指出两部分内容:1、要进行什么操作(由操作码指出)2、指令所涉及的操作数和操作结果存放的位置3.1指令系统的概述指令组成:操作码和操作数(地址码)两部分构成操作码:表示该指令所要完成的操作操作数:表示该指令的操作对象指令中可以直接给出所使用的操作数本身,或者只给出操作数所在的寄存器编号、存储器或I/O端口的地址或地址的信息。数据寻址指令中关于如何计算操作数有
2、效地址的方法称为寻址方式。计算机中按照指令给出的寻址方式求出操作数的有效地址和存取操作数的过程称为寻址操作指令地址寻址数据寻址----获取操作数的存放地址及操作结果的存放地址确定下一条指令的地址的方法数据寻址有以下三种:1.立即寻址方式2.寄存器寻址方式3.存储器寻址方式(5种)1.立即寻址方式指令中直接给出操作数例如:MOVCL,05;(CL)=05MOVAX,1234H;(AX)=1234HMOVAL,PORT1MOVAL,10010011BAND0FEH格式:操作码数字表达式说明:1)立即数可为8位,
3、可为16位;2)只能为整数3)只能做源操作数4)不能用于单操作数2.寄存器寻址方式操作数在CPU内部的某个寄存器中,指令中只给出寄存器名例如:MOVAX,BX;将BX内容传送到AX中格式:操作码寄存器名MOVAL,BL;将BL内容传送到AL中1)16位寄存器为AX,BX,CX,DX,SI,DI,SP,BP;2)8位寄存器为AH,AL,BH,BL,CH,CL,DH,DL;3)源操作数,目的操作数都(同时)可以使用寄存器寻址说明:例:MOVSS,AX指令执行前(AX)=3064H(SS)=1234H指令执行后(
4、SS)=3064H(AX)保持不变3.存储器寻址方式1)直接寻址方式操作数在存储器中,存储单元的地址由指令直接给出格式:操作码地址表达式或[地址表达式]或[数字表达式]例:MOVAL,TABLEMOVAL,[TABLE]MOVAL,[1000H]TABLE是在数据段定义的一个字节数组的首地址标号(变量名),其偏移地址为1000H例如:MOVAX,[1000H]指令执行前:(DS)=3000H,(31000)=12H,(31001)=34H3412H指令执行后:(AX)=?31000H31001H12H34H
5、AX默认的段寄存器位DS,如果不是DS,则需要用前缀说明说明:MOVAX,ES:[1000H]将ES段中1000H和1001H两个单元的内容送到BX中MOVAX,[1000H]基址寄存器:BX,BP;变址寄存器:SI,DI操作数在存储器中,存储单元的有效地址在寄存器中。2)寄存器间接寻址方式格式:操作码[基址寄存器名或者变址寄存器名]例:MOVAX,[BX]MOVAX,[SI]例如:MOVAX,[BX]假设指令执行前:(DS)=3000H,(BX)=1010H,(31010)=12H(31011)=24H2
6、412H指令执行后:(AX)=?AX31010H31011H12H24H存储器若指令中指定的寄存器是BX,SI,DI,则操作数默认在数据段中,即在DS中为段基址;若指令中指出寄存器为BP,则操作数默认在堆栈段,即在SS中为段基址说明:1)以SI,DI,BX为寄存器间接寻址默认段寄存器为DS如使用其它段寄存器需要加前缀说明MOVAX,ES:[BX]2)以BP为寄存器间接寻址默认段寄存器为SS如使用其它段寄存器需要加前缀说明MOVAX,ES:[BP]3)寄存器相对寻址方式操作数在存储器中,存储单元的有效地址是寄
7、存器的值与一个整数之和。格式:操作码变量名[基址寄存器名或者变址寄存器名]操作码[变量名+基址寄存器名或者变址寄存器名]操作码符号名[基址寄存器名或者变址寄存器名]操作码[变量名+基址寄存器名或者变址寄存器名]操作码[数字表达式±基址寄存器名或者变址寄存器名]例:TABLE是在数据段定义的一个字节数组的首地址标号(也成变量名)则:MOVSI,5MOVAL,TABLE[SI]或者MOVAL,[TABLE+SI]若指令中指定的寄存器是BX,SI,DI,则操作数默认在数据段中,即在DS中为段基址;若指令中指出寄存
8、器为BP,则操作数默认在附加数据段中,即在ES中为段基址说明:4)基址变址寻址方式MOVAX,[BX][SI]或MOVAX,[BX+SI]操作数的偏移地址是两个指定寄存器之和格式:操作码[基址寄存器名][变址寄存器名]操作码[基址寄存器名+变址寄存器名]例:MOVAX,[BX][SI]用途:5)相对基址变址寻址方式操作数偏移地址在指定寄存器的值和相对偏移量之和格式:操作码变量名[基址寄存器名][变址寄存器名]操作