微机原理与接口技术微机第三章_第1页
微机原理与接口技术微机第三章_第2页
微机原理与接口技术微机第三章_第3页
微机原理与接口技术微机第三章_第4页
微机原理与接口技术微机第三章_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术课件微机第三章第一页,共六十七页,2022年,8月28日主要内容8086指令系统8086的寻址方式指令的机器码表示方法第二页,共六十七页,2022年,8月28日3-18086的寻址方式寻址方式就是指令中用于说明操作数所在地址的方法MOVAX,1234H ;B83412MOVAX,[1234H] ;A13412操作码操作数第三页,共六十七页,2022年,8月28日一、8086的寻址方式说明1.有效地址EA(EffectiveAddress)当操作数在内存中时,指令的操作数给出所访问的内存单元的逻辑地址。在寻址方式中,逻辑地址的形成是由多个分量组合而成,该组合地址又叫有效地址。

2、MOV数据传送指令

其格式为: MOV目的操作数,源操作数目的操作数和源操作数均可采用不同的寻址方式,两个操作数的类型必需一致。第四页,共六十七页,2022年,8月28日二、寻址方式介绍1.立即寻址(Immediateaddressing)操作数就在指令中,紧跟在操作码后面,作为指令一部分存放在内存的代码段中,这种操作数称为立即数。例: MOVAX,34EAH;B8EA34 MOVBL,20H ;B320第五页,共六十七页,2022年,8月28日2、寄存器寻址(Registeraddressing) 操作数在寄存器中,指令中源操作数和目的操作数都可用这种寻址方式。 例: MOVAL,BL ;88D8 MOVAX,1234H ;B83412

MOVAL,AH ;88E0第六页,共六十七页,2022年,8月28日3、直接寻址(Directaddressing)当指令中的源操作数或目的操作数,采用直接给出被访问内存单元的逻辑地址时,这种寻址方式称直接寻址。 例: MOVAX,[3E4CH] ;A14C3E MOV[1234H],AL ;A23412第七页,共六十七页,2022年,8月28日两个概念段超越:MOVAX,[3E4CH] MOVAX,ES:[3E4CH] 符号地址:MOVAX,RESULT 第八页,共六十七页,2022年,8月28日如何区分RESULT是立即数还是符号地址?如果RESULTEQU3E4CH;立即数 MOVAX,RESULT如果RESULTDW3E4CH;符号地址 MOVAX,RESULT第九页,共六十七页,2022年,8月28日4、寄存器间接寻址(Registerindirectaddressing)

内存单元的逻辑偏移地址通过寄存器间接给出 例:MOVSI,61A8H

MOVDX,[SI]第十页,共六十七页,2022年,8月28日5、寄存器相对寻址(RegisterRelativeAddressing) 这种寻址方式中提出位移量的概念,即在寄存器间接寻址给出的偏移地址上,加一相对位移量。位移量是一带符号的16位二进制数。当使用BX或BP寄存器时,称基址寻址;使用SI或DI寄存器时,称变址寻址。例:MOVCX,36H[BX]MOV-20[BP],AL第十一页,共六十七页,2022年,8月28日6、基址加变址寻址(BasedIndexedaddressing)

它的EA是由三部分组成的,基址寄存器BX或BP的内容加上变址寄存器的内容再加位移量。物理地址由基址寄存器按规则选择段寄存器,也可以使用段超越。例:MOVAX,8AH[BX][SI]该例中EA=8AH+BX+SI物理地址=DS×10H+8AH+BX+SI第十二页,共六十七页,2022年,8月28日[]的使用规定立即数在[]中表示直接地址,如[1000H];[]有相加的意思,下面几种写法是等价的6[BX][SI],[BX+6][SI],[BX+SI+6];只有BX,BP,SI,DI可以出现在[]内,它们可以单独出现,也可以组合,但BX和BP不允许出现在同一个[],SI和DI也一样;若[]中含BP,则隐含使用SS来提供段基址,其它均隐含用DS。均可以段超越。第十三页,共六十七页,2022年,8月28日第十四页,共六十七页,2022年,8月28日7、其他A、隐含寻址

在指令中没有明显的标出,而指定寄存器参加操作,称之为“隐含寻址”。 DAA MULBL PUSHAXPOPCX . .

.

第十五页,共六十七页,2022年,8月28日第十六页,共六十七页,2022年,8月28日作业订正1.若CS=A000H,求当前代码段在存储器中的物理地址范围是什么?若数据段位于52000H到61FFFH的64K范围内,问DS=?2.若当前SS=3500H,SP=0800H,说明堆栈段在存储器中的物理地址,若此时入栈10个字节,SP内容是什么?若再出栈6个字节,SP为什么值?3.某程序数据段中存放了两个字1EE5H和2A8CH,已知(DS)=7850H,数据存放的偏移地址为3121H及285AH。试画图说明它们在存储器中的存放情况。若要读取这两个字,需要对存储器进行几次操作?第十七页,共六十七页,2022年,8月28日B、I/O(输入/输出)端口寻址(I/Oportaddressing)

当操作数在外部设备时,使用I/O指令。此时有两种不同的寻址方式访问I/O端口。(1)直接端口寻址方式(2)

采用DX寄存器间接寻址方式(3)

输入指令中目的操作数可为AL或AX;输出指令中源操作数可为AL或AX。

例: INAL,25H ;E525H MOVDX,3E4H OUTDX,AL ;EE

第十八页,共六十七页,2022年,8月28日三、8086的指令格式及数据类型指令由操作码和操作数(地址码)组成。8086的指令长度是可变的,一条指令一般由1-6个字节组成。

操作码操作数第十九页,共六十七页,2022年,8月28日1.指令中的操作数※单操作数指令指令助记符指令的16进制代码INCAX40HINCBX43H第二十页,共六十七页,2022年,8月28日※双操作数指令指令助记符指令的16进制代码MOVAL,04B004HMOVAX,04B80400※三个操作数指令

8086指令系统中,大多数指令中只有1-2个操作数,但也有少数指令中有3个操作数,不过有一操作数隐含在操作码中。例:ADCAX,BX该指令完成操作数AX、BX和CF位相加。第二十一页,共六十七页,2022年,8月28日2.指令中的数据类型无符号数

带符号数

ASCII码

BCD数(压缩BCD和非压缩BCD)

第二十二页,共六十七页,2022年,8月28日3-2指令的机器码表示方法一、机器语言指令的编码目的和特点目的:用二进制编码表示各种操作和寻址方式。特点:没有指令与机器语言的对照表,只有每种基本指令类型的编码格式。第二十三页,共六十七页,2022年,8月28日二、机器语言指令代码的编制1.寄存器之间或寄存器与存储器之间数据传送指令的编码格式R/MREGMOD100010D/p>

操作码0:数据从寄存器传出1:数据传至寄存器第二十四页,共六十七页,2022年,8月28日8086寄存器编码表REGW=1(字)W=0(字节)000011001010100111101110AXBXCXDXSPDIBPSIALBLCLDLAHBHCHDHREG段寄存器01110010CSDSESSSR/MREGMOD100010D/p>

操作码0:数据从寄存器传出1:数据传至寄存器第二十五页,共六十七页,2022年,8月28日MODR/M00000101001110010111011100011011[BX]+[SI][BX]+[DI][BP]+[SI][BP]+[DI][SI][DI]D16(直接地址)[BX][BX]+[SI]+D8[BX]+[DI]+D8[BP]+[SI]+D8[BP]+[DI]+D8[SI]+D8[DI]+D8[BP]+D8[BX]+D8[BX]+[SI]+D16[BX]+[DI]+D16[BP]+[SI]+D16[BP]+[DI]+D16[SI]+D16[DI]+D16[BP]+D16[BX]+D16W=0W=1ALAXCLCXDLDXBLBXAHSPCHBPDHSIBHDIR/MREGMOD100010D/p>

操作码0:数据从寄存器传出1:数据传至寄存器第二十六页,共六十七页,2022年,8月28日2.立即数寻址指令的编码3.包含段寄存器的指令的编码4.段超越前缀指令的编码第二十七页,共六十七页,2022年,8月28日3-38086的指令集8086指令系统按功能可分为6大类型:1、

数据传输类2、

算术运算类3、

逻辑运算和移位类4、

串操作类5、

控制转移类6、

处理器控制类第二十八页,共六十七页,2022年,8月28日一、数据传送指令数据传送指令又可以分成4种:l

通用数据传送l累加器专用传送指令l

目的地址传送l

标志寄存器转送第二十九页,共六十七页,2022年,8月28日指令的共同特点是:

1、除POP和SAHF指令外,这类指令的操作结果不会影响FR寄存器中的标志。

2、指令中有两个操作数,目的操作数和源操作数,其执行过程为:目的操作数源操作数,当指令中仅列出一个操作数时,另一操作数为隐含。第三十页,共六十七页,2022年,8月28日1、通用数据传送指令(1)MOV传送指令指令格式为:MOV目的

,源

功能:目的

存储器通用寄存器AX AHBX ALCX BHDX BLSI CHDI CLSP DHBP DL立即数段寄存器CS,DS,ES,SS第三十一页,共六十七页,2022年,8月28日(2)PUSH进栈指令

指令格式为:PUSH源(不能是立即数)其操作过程是: a、SP-2,指示堆栈中可以存放数据的位置 b、存源操作数,完成进栈操作。

(3)POP出栈指令

指令格式为:POP目的(不能是CS) 其操作过程是:a、将SS:SP所指示的栈顶处的两个字节的数据,弹到目的操作数中;b、SP+2,指示当前栈顶位置,完成出栈操作。第三十二页,共六十七页,2022年,8月28日4)XCHG交换指令

指令格式为:XCHG目的操作数,源操作数※操作数不能为立即数;※源和目的不能同时为存储单元;※段寄存器不能作为操作数。第三十三页,共六十七页,2022年,8月28日2、累加器专用传送指令

1)

IN输入指令 指令格式为: INAL,n INAX,n INAL,DX INAX,DX2)OUT输出指令

指令格式为: OUTn,AL OUTn,AX OUTDX,AL OUTDX,AX第三十四页,共六十七页,2022年,8月28日3)XLAT换码指令 指令格式为:XLAT功能[bx+al]->al 例:查表求n的平方。n:[0-9]1、将0-9的平方表建立在偏移地址为2000H的内存中,如图。2、查表

完成求5的平方指令序列为:MOVBX,2000H;指向平方表的首地址MOVAL,5;将5换码成5的平方值XLAT ;查表,平方值在AL中第三十五页,共六十七页,2022年,8月28日3、目标地址传送指令

这类指令有:1)LEA有效地址传送到寄存器2)LDS将双字指针送到寄存器和DS3)LES将双字指针送到寄存器和ESEg:LEABX,[1000H]LDSSI,[1000H]LESDI,[1000H]第三十六页,共六十七页,2022年,8月28日4、标志寄存器传送指令1)LAHFFR寄存器的低8位送AH2)SAHFAH送FR寄存器的低8位3)PUSHFFR寄存器推入堆栈4)POPF从栈顶中弹出存入FR寄存器第三十七页,共六十七页,2022年,8月28日二、算术运算指令

※1)

ADD算术加法 指令功能:目的目的操作数+源操作数※2)ADC带进位算术加法指令功能:目的目的操作数+源操作数+CF

1、算术加法指令两条指令的源操作数可以是寄存器、存储器或立即数;目的操作数只能是寄存器或存储单元。源和目的操作数不能同时为存储器且类型要一致。影响所有的标志位第三十八页,共六十七页,2022年,8月28日

※5)AAA对非压缩BCD数加法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整※3)INC加1指令指令功能:目的目的操作数+1目的操作数可以是通用寄存器或存储器。影响标志位,但CF除外。

※4)DAA对压缩BCD数加法操作的结果进行校正指令功能:对AL寄存器的内容进行十进制调整第三十九页,共六十七页,2022年,8月28日2、算术减法指令 1)

SUB算术减法 指令功能:目的目的操作数-源操作数 2)

SBB带进位算术减法 指令功能:目的目的操作数-源操作数-CF 3)DEC减1指令 指令功能:目的目的操作数-1 4)DAS对压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 5)AAS对非压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 6)CMP比较指令 指令功能:目的-源操作数 7)NEG取补指令 指令功能:0-目的操作数第四十页,共六十七页,2022年,8月28日

3)AAM非压缩BCD数乘法操作结果校正 指令功能:完成两个非压缩BCD数乘法结果的十进制数调整3、算术乘法指令1)

MUL无符号数乘法指令格式:MUL源指令功能:AXAL×源(DX,AX)AX×源

源操作数可以是寄存器,也可以是存储器,但不能是立即数。是存储器时,需指明类型。2)

IMUL带符号数乘法指令格式:IMUL源指令功能:AXAL×源

(DX,AX)AX×源第四十一页,共六十七页,2022年,8月28日另外还有:CBW带符号数字节扩展;CWD带符号数字扩展;AAD非压缩BCD数除法校正。4、算术除法指令1)DIV无符号数除法指令格式:DIV源指令功能:AX/源AL:商,AH:余数DXAX/源AX:商,DX:余数2)IDIV带符号数除法

指令格式:IDIV源指令功能:AX/源AL:商,AH:余数DXAX/源AX:商,DX:余数第四十二页,共六十七页,2022年,8月28日三、逻辑运算和移位指令(1)

可以按二进制位进行操作;(2)逻辑运算指令按逻辑门电路的运算规则;(3)

逻辑移位指令有左移和右移,移出的位都进入CF标志;(4)因移空位的补充方式不同有多种指令形式;(5)逻辑移位指令中,移动超过1次则用CL寄存器做计数器;(6)

执行逻辑操作指令,CF均被清0。属于位操作指令,其共同点是:第四十三页,共六十七页,2022年,8月28日1、逻辑运算指令1)NOT逻辑求反

指令功能:将8位、16位寄存器或存储器内容求反。2)AND逻辑与操作指令功能:将8位、16位寄存器或存储器内容和源操作数“与”

3)OR逻辑或操作指令功能:将8位、16位寄存器或存储器内容和源操作数“或”4)XOR逻辑异或操作指令功能:将8位、16位寄存器或存储器内容和源操作数“异或”

5)TEST测试指令指令功能:将8位、16位寄存器或存储器内容和源操作数“与”,不产生运算结果,仅影响状态标志第四十四页,共六十七页,2022年,8月28日AND可以使指定位为0OR可以使指定位为1XOR可以使指定位为非第四十五页,共六十七页,2022年,8月28日2、逻辑移位指令2)SAL算术左移指令功能:将8位、16位寄存器或存储器内容左移,移空的位补01)SHL逻辑左移指令功能:将8位、16位寄存器或存储器内容左移,移空的位补0。3)SHR逻辑右移

指令功能:将8位、16位寄存器或存储器内容右移,移空的位补04)SAR算术右移指令功能:将8位、16位寄存器或存储器内容右移,移空的位由最高位补充。第四十六页,共六十七页,2022年,8月28日5)ROL不带进位循环左移指令功能:将8位、16位寄存器或存储器内容左移,移空的位由移出位补充。6)ROR不带进位循环右移指令功能:将8位、16位寄存器或存储器内容右移,移空的位由移出位补充。7)RCL带进位循环左移指令功能:将8位、16位寄存器或存储器内容左移,移空的位由CF位补充。8)RCR带进位循环右移

指令功能:将8位、16位寄存器或存储器内容右移,移空的位由CF位补充。第四十七页,共六十七页,2022年,8月28日四、字符串处理指令源操作数指针DS:SI目的操作数指针ES:DI每操作一次SI,DI修改一次,方向由DF控制重复操作的退出CX控制条件控制(ZF标志)必须遵守的约定:第四十八页,共六十七页,2022年,8月28日1、串传送指令MOVSB/MOVSW2、串比较指令CMPSB/CMPSW3、串搜索指令SCASB/SCASW(AL/AX-目的串)4、串装入指令LODSB/LODSW(源串AL/AX)5、串存储指令STOSB/STOSW(AL/AX目的串)6、指令前缀 REP、REPZ/REPE、REPNZ/REPNE第四十九页,共六十七页,2022年,8月28日五、控制转移指令※转移指令※循环控制※过程调用※中断控制第五十页,共六十七页,2022年,8月28日2)短转移指令JMPLABELIP+CBW(位移量)->IP位移量(8bit)=LABEL指令地址-JMP地址-21)段内直接转移JMPLABELIP+位移量->IP位移量=LABEL指令地址-JMP地址-31、无条件转移指令JMP目标地址第五十一页,共六十七页,2022年,8月28日3)段内间接转移 JMP[SI] JMPWORDPTR[]5)段间间接转移JMPOPRD;OPRD:MEM offestOPRD->IPsegOPRD->cs JMPDWORDPTR[SI]4)段间直接转移JMPfarLABEL offestLABEL->IPsegLABEL->cs第五十二页,共六十七页,2022年,8月28日2、条件转移指令(段内短转移)1)单条件转移指令 ①

JC;CF标志为1,则转移 ②

JNC;CF标志为0,则转移 ③

JE/JZ;ZF标志为1,则转移 ④

JNE/JNZ;ZF标志为0,则转移 ⑤

JS;SF标志为1,则转移 ⑥

JNS;SF标志为0,则转移 ⑦

JO;OF标志为1,则转移 ⑧

JNO;OF标志为0,则转移 ⑨

JP/JPE;PF标志为1,则转移 ⑩

JNP/JPO;PF标志为0,则转移第五十三页,共六十七页,2022年,8月28日例3-87求AL和BL寄存器中的两数之和,若有进位,则AH置1,否则AH清0第五十四页,共六十七页,2022年,8月28日2)用于无符号数比较测试指令

JA/JNBE;高于/不低于等于转移,CF∨ZF=0 ②

JNA/JBE;不高于/低于等于转移,CF∨ZF=1 ③

JB/JNAE;低于/不高于等于转移,CF=1 ④

JNB/JAE;不低于/高于等于转移,CF=0第五十五页,共六十七页,2022年,8月28日P111例3-89设某个学生的英语成绩已存放在AL寄存器中,若低于60分,则打印F(FAIL);若高于或等于85分,则打印G(GOOD);当在60分和84分之间时,打印P(PASS)。 CMPAL,60 JBFAIL CMPAL,85 JAEGOOD MOVAL,’P’ JMPPRINTFAIL: MOVAL,’F’ JMPPRINTGOOD: MOVAL,’G’PRINT:…第五十六页,共六十七页,2022年,8月28日3)用于带符号数的比较测试指令

JG/JNLE ;大于/不小于等于转移,(SF∨OF)∨ZF=0 ②

JGE/JNL ;大于等于/不小于转移,(SF∨OF)=0 ③

JL/JNGE ;小于/不大于等于转移,(SF∨OF)=1 ④JLE/JNG ;小于等于/不大于转移,(SF∨OF)∨ZF=1

第五十七页,共六十七页,2022年,8月28日3、循环控制指令2)另外还有:LOOPZ/LOOPE指令、LOOPNZ/LOOPNE指令、JCXZ指令。

1)LOOP指令

指令格式:LOOP目标地址执行该指令,CX-1,若CX≠0,转移到目标地址,即:IP←IP+8位位移量(带符号扩展到16位)。由于指令自动对CX寄存器做减1操作,故使用LOOP指令前,需将循环操作次数值赋给CX寄存器。第五十八页,共六十七页,2022年,8月28日4、子程序调用和返回指令1)CALL指令段内直接调用

例:CALLLABLEa、IP->栈b、IP+位移量->IP段内间接调用 例:CALLWORDPTR[SI]段间直接调用 例:CALLFAR目标地址段间间接调用

例:CALLDWORDPTR[SI]第五十九页,共六十七页,2022年,8月28日2)、RET子程序返回指令

和调用指令CALL相对应的是返回指令RET。返回指令通常作为一个子程序或过程的最后一条指令,它用以返回到调用这个子程序的断点处。 关于RETn指令,这条指令称为带参数返回指令。

第六十页,共六十七页,2022年,8月28日5、中断指令(1)中断相关概念※什么是中断?※中断源及其分类※中断向量及中断向量表(2)中断指令※INTn※INTO溢出中断指令※IRET第六十一页,共六十七页,2022年,8月28日六、处理器控制指令1、标志控制指令

STC ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论