微机原理课件第03章.ppt
- 文档编号:18889797
- 上传时间:2024-02-08
- 格式:PPT
- 页数:230
- 大小:5.28MB
微机原理课件第03章.ppt
《微机原理课件第03章.ppt》由会员分享,可在线阅读,更多相关《微机原理课件第03章.ppt(230页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术李宝平计算机学院通信工程系80x86指令系统指令系统主要内容:
主要内容:
l指令系统的指令系统的一般概念一般概念l操作数的操作数的寻址方式寻址方式l六大类指令六大类指令的操作原理的操作原理操作码的含义操作码的含义指令对操作数的要求指令对操作数的要求指令执行的结果指令执行的结果80x86指令系统指令系统3.13.13.13.1概述概述概述概述指令指令控制计算机完成指定操作的命令控制计算机完成指定操作的命令机器指令机器指令指令的二进制代码形式。
例如:
指令的二进制代码形式。
例如:
CD21H汇编指令汇编指令助记符形式的指令。
例如:
助记符形式的指令。
例如:
INT21H指令系统指令系统CPU所有指令及其使用规则的集合所有指令及其使用规则的集合8088/8086指令系统:
(1)指令向后兼容(x86系列)
(2)应用广泛,资料易于寻找80x86指令系统指令系统指令指令指令指令按功能分为六大类按功能分为六大类按功能分为六大类按功能分为六大类(92929292种)种)种)种)参见附录18086/8088指令系统P458
(1)数据传送类;)数据传送类;
(2)算术运算类;)算术运算类;(3)逻辑运算和移位;)逻辑运算和移位;(4)串操作;)串操作;(5)控制转移类;)控制转移类;(6)处理器控制。
)处理器控制。
80x86指令系统指令系统3.1.13.1.1指令的基本构成指令的基本构成指令的基本构成指令的基本构成说明说明要执行的是要执行的是什么操作什么操作操作对象,可以有操作对象,可以有0个、个、1个或个或2个个目的目的源源80x86指令系统指令系统指令举例:
ADDAX,SI+6MOVAX,BX操作码操作数INCBXHLT80x86指令系统指令系统部分部分8088/8086常用指令常用指令指令类型指令类型指令类型指令类型助记符助记符助记符助记符数数数数据据据据传传传传送送送送数据传送数据传送数据传送数据传送MOVMOV,PUSH/POPPUSH/POP,XCHGXCHG等等等等地址传送地址传送地址传送地址传送LEALEA,LDSLDS,LESLES输入输出输入输出输入输出输入输出ININ,OUTOUT算算算算术术术术运运运运算算算算加法加法加法加法ADDADD,ADCADC,INCINC减法减法减法减法SUBSUB,SBBSBB,DECDEC,NEGNEG,CMPCMP乘乘乘乘/除法除法除法除法MULMUL,IMULIMUL,DIVDIV,IDIVIDIV逻辑逻辑逻辑逻辑ANDAND,OROR,NOTNOT,XORXOR,TESTTEST移位移位移位移位SHL/SHR/SARSHL/SHR/SAR,ROL/RORROL/ROR,RCL/RCRRCL/RCR串操作串操作串操作串操作MOVSMOVS,CMPSCMPS,SCASSCAS,LODSLODS,STOSSTOS控制转移控制转移控制转移控制转移JMPJMP,JXXJXX,LOOPLOOP,CALL/RETCALL/RET,INT/IRETINT/IRET80x86指令系统指令系统8088/8086的操作数分为的操作数分为4类类11、立即数(常数)源操作数就是参加操作的数据本身,它源操作数就是参加操作的数据本身,它源操作数就是参加操作的数据本身,它源操作数就是参加操作的数据本身,它们可以是们可以是们可以是们可以是88位或位或位或位或1616位。
位。
位。
位。
取值范围如下表:
取值范围如下表:
取值范围如下表:
取值范围如下表:
88位位位位1616位位位位无符号数无符号数无符号数无符号数00H-FFH(0-255)00H-FFH(0-255)0000H-FFFFH(0-65535)0000H-FFFFH(0-65535)带符号数带符号数带符号数带符号数80H-7FH(-128127)80H-7FH(-128127)8000H-7FFFH(-3276832767)8000H-7FFFH(-3276832767)MOVAX,0FA00H;正确正确MOV8000H,DX;错误错误操作数操作数数据(立即数)数据(立即数)地址地址:
寄存器寄存器(名称名称)、存储器单元(地址)、存储器单元(地址)I/O接口的端口(地址)接口的端口(地址)80x86指令系统指令系统2、寄存器操作数放在放在8个个通用寄存器通用寄存器或或4个个段寄存器段寄存器中的操作数中的操作数表示参加运算的数存放在指令给出的寄存器中,可以是表示参加运算的数存放在指令给出的寄存器中,可以是16位或位或8位。
位。
80x86指令系统指令系统只能存放字操作数只能存放字操作数段寄存器存放段寄存器存放当前操作数的当前操作数的段基地址段基地址可可作为源或目的操作数作为源或目的操作数(但但CS不作为目的操作数不作为目的操作数),不允许将不允许将立即数传送到段寄存器立即数传送到段寄存器,可通过某个通用寄存器传递改变可通过某个通用寄存器传递改变SIDIBPSPCSDSESSS80x86指令系统指令系统3、存储器操作数存储器操作数存储器操作数字节字节字字双字双字124类型类型存储单元个数存储单元个数一般一般不允许不允许两个两个操作数同时为存储器操作数操作数同时为存储器操作数Flags标志寄存器:
仅有个别指令可用它作为操作数IP不能用指令指针寄存器:
它作为操作数,顺序执行时它自动加1,跳转执行时自动会跳转表示当前参加运算的数存放在存储器的某表示当前参加运算的数存放在存储器的某1/2/4个单元中个单元中80x86指令系统指令系统存储存储单元的单元的物理地址物理地址=段基地址段基地址16+偏移地址偏移地址若指令中没有指明所涉及的段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。
表表3.3段寄存器使用的一些基本约定段寄存器使用的一些基本约定80868086规定了访问存储器段的规则:
规定了访问存储器段的规则:
规定了访问存储器段的规则:
规定了访问存储器段的规则:
此规则定义了段地址寄存器和偏移地址寄存器的组合此规则定义了段地址寄存器和偏移地址寄存器的组合此规则定义了段地址寄存器和偏移地址寄存器的组合此规则定义了段地址寄存器和偏移地址寄存器的组合方式,其默认规则如下表:
方式,其默认规则如下表:
方式,其默认规则如下表:
方式,其默认规则如下表:
默认段地址默认段地址默认段地址默认段地址偏移地址偏移地址偏移地址偏移地址用于访问用于访问用于访问用于访问CSCSIPIP指令指令指令指令SSSSSPSP、BPBP堆栈中的数据堆栈中的数据堆栈中的数据堆栈中的数据DS(DS(可超越可超越可超越可超越)BXBX、DIDI、SISI、88位或位或位或位或1616位数位数位数位数数据段中的数据数据段中的数据数据段中的数据数据段中的数据ESES串指令的串指令的串指令的串指令的DIDI目标串操作数目标串操作数目标串操作数目标串操作数80x86指令系统指令系统存储器操作数的存储器操作数的偏移地址偏移地址(也称(也称有效地址有效地址EA)要要用用“EA”方方括号括起来括号括起来,它它可以通过不同的寻址方式由指令给出可以通过不同的寻址方式由指令给出;存储器操作数的存储器操作数的段基地址段基地址(也称也称段段头地址头地址)一般省去,按隐含规一般省去,按隐含规则确定它们,也可直接给出进行段超越。
则确定它们,也可直接给出进行段超越。
例如例如若若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,则以下指令的结果是一样的:
则以下指令的结果是一样的:
MOVAL,2A00H;隐含段头为隐含段头为DS,直接寻址,直接寻址MOVAL,BX+0A00H;隐含段头为隐含段头为DS,寄存器相对寻址,寄存器相对寻址MOVAL,BXSI;隐含段头为隐含段头为DS,基址,基址-变址寻址变址寻址MOVAL,DI;隐含段头为隐含段头为DS,寄存器间接寻址,寄存器间接寻址但但MOVAL,ES:
2A00H;段超越,段头为段超越,段头为ES,与前,与前4条不同条不同存储存储单元的单元的物理地址物理地址=段基地址段基地址16+偏移地址偏移地址注意:
注意:
存储器数据表示形式:
存储器数据表示形式:
地址值或寄存器地址值或寄存器80x86指令系统指令系统、I/OI/O接口操作数接口操作数I/O接口操作数接口操作数字节字节字字12类型类型存储单元个数存储单元个数一般一般不允许不允许两个两个操作数同时为操作数同时为I/O接口接口操作数操作数I/O接口地址为接口地址为16位位,一般采用,一般采用DX寄存器间接寻址给出;有时寄存器间接寻址给出;有时I/O接口地址仅用接口地址仅用8位位,这时可采用直接寻址。
,这时可采用直接寻址。
例如:
INAL,DX;括号习惯都省去写为INAL,DXOUT80H,AL;括号习惯都省去写为OUT80H,AL注意:
注意:
不要理解为:
MOVAL,DX和MOV80H,AL,它们完全不同。
表示当前参加运算的数存放在表示当前参加运算的数存放在I/O接口的某接口的某1/2个端口中个端口中80x86指令系统指令系统一条指令的执行时间一条指令的执行时间=3.1.23.1.2指令的执行时间指令的执行时间指令的执行时间指令的执行时间取指令取指令取操作数取操作数执行指令执行指令传送结果传送结果单位用时钟周期数单位用时钟周期数T表示表示常用指令执行时间常用指令执行时间P458P458计算偏移地址计算偏移地址EAEA所需时间所需时间结论:
结论:
1)尽量使用寄存器作为操作数)尽量使用寄存器作为操作数2)若有可能,用移位代替乘除法)若有可能,用移位代替乘除法3)尽量使用简单的寻址方式)尽量使用简单的寻址方式执行执行80x86指令系统指令系统寻址方式寻找操作数的方法ll寻找寻找寻找寻找操作数操作数操作数操作数的的的的地址地址地址地址(一般指源操作数)(一般指源操作数)(一般指源操作数)(一般指源操作数)ll寻找要执行的下一条寻找要执行的下一条寻找要执行的下一条寻找要执行的下一条指令指令指令指令的的的的地址地址地址地址在在在在80868086指令系统中,指令系统中,指令系统中,指令系统中,操作数所在地址的寻址方式可操作数所在地址的寻址方式可操作数所在地址的寻址方式可操作数所在地址的寻址方式可分为分为分为分为88种种种种:
立即寻址立即寻址立即寻址立即寻址寄存器相对寻址寄存器相对寻址寄存器相对寻址寄存器相对寻址直接寻址直接寻址直接寻址直接寻址基址基址基址基址-变址寻址变址寻址变址寻址变址寻址寄存器寻址寄存器寻址寄存器寻址寄存器寻址相对的基址相对的基址相对的基址相对的基址-变址寻址变址寻址变址寻址变址寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址隐含寻址隐含寻址隐含寻址隐含寻址3.23.280868086的的寻址方式寻址方式80x86指令系统指令系统l操作数操作数(为一常数为一常数)直接直接由指令给出由指令给出(此操作数称为此操作数称为立即数立即数)l立即寻址只能用于源操作数立即寻址只能用于源操作数l例:
例:
MOVAX,1C8FHMOVBYTEPTR2A00H,8FH错误例:
错误例:
MOV2A00H,AX;错误!
错误!
3.1.23.1.2立即寻址立即寻址立即寻址立即寻址80x86指令系统指令系统立立即即数数操作码操作码低低8位位高高8位位存储器存储器MOV操作码操作码02H31HAHAL代码段代码段立即寻址指令在存立即寻址指令在存储器中的存放形式储器中的存放形式AX指令操作例:
指令操作例:
MOVAX,3102H;AX3102H执行后,执行后,(AH)=31H,(AL)=02H用途:
用途:
直接给出操作数据,立即数存放在内存的代码段中80x86指令系统指令系统3.2.33.2.3寄存器寻址寄存器寻址寄存器寻址寄存器寻址l操作数放在某个寄存器中操作数放在某个寄存器中l源操作数与目的操作数字长要相同源操作数与目的操作数字长要相同l寄存器寻址与段地址无关寄存器寻址与段地址无关l例:
例:
MOVAX,BXMOV3F00H,AXMOVCL,AL错误例:
错误例:
MOVAX,BL;字长不同字长不同MOVES:
AX,DX;寄存器与段无关寄存器与段无关80x86指令系统指令系统AXSI2233H2233H指令操作例:
指令操作例:
MOVSI,AX;SI(AX)指令执行前:
(AX)=2233H指令执行后:
(AX)=2233H,(SI)=2233H用途:
用途:
操作数存放在寄存器中,根据寄存器名称寻找寄存器里面的数据。
80x86指令系统指令系统3.2.23.2.2直接寻址直接寻址直接寻址直接寻址l指令指令中直接给出中直接给出存储器操作数的存储器操作数的16位位偏移地址偏移地址或或I/O接口接口仅仅8位端口地址位端口地址存储器偏移地址也称为存储器偏移地址也称为有效地址有效地址(EA,EffectiveAddress)l存储器存储器默认默认的段寄存器为的段寄存器为DS,但也可以显式地指定其他段寄存器但也可以显式地指定其他段寄存器称为称为段超越段超越前缀前缀l存储器偏移地址也可用存储器偏移地址也可用符号地址符号地址来表示,如来表示,如ADDR、VARl例:
例:
MOVAX,2A00H;段头隐含为段头隐含为DSMOVDX,ES:
2A00H;段超越;段超越MOVSI,TABLE_PTR;段头隐含为段头隐含为DS还有:
还有:
INAL,90H;括号可以省去;括号可以省去OUT85H,AL;括号可以省去;括号可以省去80x86指令系统指令系统例:
例:
MOVAX,3102H;AL(3102H),AH(3103H)如果(DS)=2000H,(23102H)=CDH,(23103H)=ABH则操作数的物理地址为:
20000H+3102H=23102H指令执行后:
(AX)=ABCDHMOV操作码操作码02H31HAHAL23102HCDHABH存储器存储器代码段数据段.23103H用途:
用途:
用于操作数存放在存储器单元中或I/O接口地址仅为8位的的端口中80x86指令系统指令系统3.2.43.2.4寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址ll操作数操作数的的偏移地址偏移地址(有效地址有效地址EAEA)放在放在寄存器寄存器中中ll只有只有SISI、DIDI、BXBX和和BPBP可作间址寄存器可作间址寄存器ll例:
例:
MOVAX,BXMOVAX,BXMOVCL,CS:
DIMOVCL,CS:
DIINALINAL,DXDX;括号可省去;括号可省去OUTOUTDXDX,ALAL;括号可省去;括号可省去错误例错误例:
MOVAX,DXMOVAX,DXMOVCL,AXMOVCL,AXEA=(BX)(BP)(SI)(DI)80x86指令系统指令系统指令操作例:
指令操作例:
MOVAXMOVAX,SISI若若(DS)=6000H,DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H(SI)=1200H,(61200H)=44H,(61201H)=33H则指令执行后,则指令执行后,(AX)=3344H(AX)=3344H。
44H33H60001200DSSI600006120061200HAX存储器存储器数据段+)120044H33H用途:
用途:
操作数存放在存储器或I/O接口地址为16位的的寻址80x86指令系统指令系统3.2.53.2.5寄存器相对寻址寄存器相对寻址寄存器相对寻址寄存器相对寻址lEA=间址寄存器的内容间址寄存器的内容+8/16位的位移量位的位移量寄存器相对寻址寄存器相对寻址常用于存取表格或一维数组中的常用于存取表格或一维数组中的元素元素把把表格的起始地址作为位移量表格的起始地址作为位移量,元素的下元素的下标值放在间址寄存器中标值放在间址寄存器中(或反之)或反之)EA=(BX)(BP)(SI)(DI)+8位16位位移量80x86指令系统指令系统ll例:
例:
MOVAX,BX+8MOVAX,BX+8MOVCX,TABLESIMOVCX,TABLESIMOVAX,BP+1000H;MOVAX,BP+1000H;默认段寄存器为默认段寄存器为SSSSll指令操作例:
指令操作例:
MOVAXMOVAX,DATABXDATABX若若(DS)=6000H,(BX)=1000H,DATA=2A00H,(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H(63A00H)=66H,(63A01H)=55H则物理地址则物理地址=60000H+1000H+2A00H=63A00H=60000H+1000H+2A00H=63A00H指令执行后指令执行后:
(AXAX)=5566H=5566H(见下页图示)见下页图示)80x86指令系统指令系统操作码操作码00偏移量低2A偏移量高DS60000BX1000+DATA2A0063A0063A00HAHALAX代码段数据段.66H55HMOVAX,DATABX用途:
用途:
操作数存放在存储器地址指定的单元中80x86指令系统指令系统3.2.63.2.6基址基址基址基址-变址寻址变址寻址变址寻址变址寻址l若操作数的偏移地址:
若操作数的偏移地址:
由由基址寄存器基址寄存器(BXBX或或BPBP)给出给出基址寻址方式基址寻址方式由由变址寄存器变址寄存器(SISI或或DIDI)给出给出变址寻址方式变址寻址方式l由一个基址寄存器由一个基址寄存器的内容和一个变址寄存器的内容和一个变址寄存器的内的内容相加而形成操作数的偏移地址容相加而形成操作数的偏移地址,称为称为基址基址-变址寻变址寻址址。
EA=(BX)(BP)+(SI)(DI)l同一组内的寄存器不能同时出现同一组内的寄存器不能同时出现。
基址寄存器基址寄存器变址寄存器变址寄存器80x86指令系统指令系统例:
例:
MOVAX,BXSIMOVAX,BXSIMOVAX,BX+SIMOVAX,BX+SIMOVAX,DS:
BPDIMOVAX,DS:
BPDI错误例:
错误例:
MOVAX,BXBPMOVAX,BXBPMOVAX,DISIMOVAX,DISI用途:
用途:
操作数存放在存储器地址指定的单元中80x86指令系统指令系统83000操作码操作码DS80000BX2000+SI100083000HAHALAX代码段数据段.YYXX指令操作例:
指令操作例:
MOVAX,BXSI假定:
假定:
(DS)=8000H,(BX)=2000H,SI=1000H则物理地址则物理地址=80000H+2000H+1000H=83000H=80000H+2000H+1000H=83000H指令执行后指令执行后:
(:
(AL)AL)=83000H83000H(AH)AH)=83001H83001H80x86指令系统指令系统3.2.73.2.7相对的基址相对的基址相对的基址相对的基址-变址寻址变址寻址变址寻址变址寻址l在在基址基址-变址寻址的基础上再加上一个相对位变址寻址的基础上再加上一个相对位移量移量l注意事项同注意事项同基址基址-变址寻址变址寻址EA=(BX)(BP)+(SI)(DI)+8位16位位移量l例:
例:
MOVAX,BASESIBXMOVAX,BX+BASESIMOVAX,BX+SI+BASEMOVAX,BXBASESIMOVAX,BX+SIBASE基址基址变址变址用途:
用途:
操作数存放在存储器地址指定的单元中80x86指令系统指令系统指令指令操作例:
操作例:
MOVAX,DATADIBX若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H则指令执行后(AH)=83021H,(AL)=83020H8320083200HAHALAX+DATA0200操作码操作码代码段数据段.YYXXDS80000BX2000DI100080x86指令系统指令系统使用相对的基址使用相对的基址-变址寻址方式可以很方便地访变址寻址方式可以很方便地访问二维数组问二维数组。
基址寄存器基址寄存器数组首地址数组首地址变址寄存器变址寄存器数组元素数组元素行行址址位移量位移量数组元素数组元素列列址址(偏移地址)偏移地址)二维数组例:
内存图示(按行存储)二维数组例:
内存图示(按行存储)(行位移地址)(行位移地址)(行内元素下标)(行内元素下标)183252409A=80x86指令系统指令系统这种寻址方式为这种寻址方式为386386以上处理器采用:
以上处理器采用:
将第二个寄存器与比例因子相乘,比例因子可以是将第二个寄存器与比例因子相乘,比例因子可以是11、22、44、88。
分别对应字节、字、双字、四字数组。
分别对应字节、字、双字、四字数组。
例如:
例如:
MOVEAX+2*EDI+100H,CXMOVEAX+2*EDI+100H,CXMOVAL,EBP+2*EDI-2MOVAL,EBP+2*EDI-2MOVEAX,ARRAY4*ECXMOVEAX,ARRAY4*ECX3.2.83.2.8比例变址寻址比例变址寻址比例变址寻址比例变址寻址80x86指令系统指令系统3.2.93.2.9隐含寻址隐含寻址隐含寻址隐含寻址l指令操作数是隐含的,在指令中未显式地指明。
指令操作数是隐含的,在指令中未显式地指明。
l例:
例:
MULBL指令隐含了被乘数指令隐含了被乘数AL及乘积及乘积AXl类似的指令还有:
类似的指令还有:
XLAT、DIV、CBW、MOVS等等(AL)(BL)AX用途:
用途:
操作数存放在寄存器或存储器地址指定的单元中80x86指令系统指令系统如何寻找如何寻找如何寻找如何寻找指令指令指令指令的的的的地址地址地址地址呢?
呢?
呢?
呢?
(11)程序中将要执行的指令的地址由程序中将要执行的指令的地址由程序中将要执行的指令的地址由程序中将要执行的指令的地址由CSCS:
IPIP指向;指向;指向;指向;(22)程序的第一条指令的地址(首地址)由操作系统程序的第一条指令的地址(首地址)由操作系统程序的第一条指令的地址(首地址)由操作系统程序的第一条指令的地址(首地址)由操作系统OSOS分分分分配产生;配产生;配产生;配产生;(33)一般程序是一条接着一条的顺序执行的,所以一般程序是一条接着一条的顺序执行的,所以一般程序是一条接着一条的顺序执行的,所以一般程序是一条接着一条的顺序执行的,所以CSCS:
IPIP自动加自动加自动加自动加11即可实现。
即可实现。
即可实现。
即可实现。
(44)当程序跳转执行时,当程序跳转执行时,当程序跳转执行时,当程序跳转执行时,CSCS:
IPIP采用直接方式或间接方式采用直接方式或间接方式采用直接方式或间接方式采用直接方式或间接方式改为跳转到的指令地址。
改为跳转到的指令地址。
改为跳转到的指令地址。
改为跳转到的指令地址。
3.3程序转移地址寻址方式程序转移地址寻址方式80x86指令系统指令系统第四章第四章80X8680X86的寻址方式和指令系统的寻址方式和指令系统的寻址方式和指令系统的寻址方式和指令系统段内转移只需改变段内转移只需改变段内转移只需改变段内转移只需改变(IPIP)段内转移包括两种寻址方式:
直接段内转移包括两种寻址方式:
直接,间接。
,间接。
段间转移改变(段间转移改变(段间转移改变(段间转移改变(CS)CS)(IPIP)段间转移包括两种寻址方式:
段间转移包括两种寻址方式:
直接直接,间接。
,间接。
功能:
功能:
用来确定转移指令及用来确定转移指令及CALLCALL指令的转移地
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课件 03