[工学]第3章指令系统课件.ppt

上传人(卖家):三亚风情 文档编号:3347788 上传时间:2022-08-22 格式:PPT 页数:106 大小:945.50KB
下载 相关 举报
[工学]第3章指令系统课件.ppt_第1页
第1页 / 共106页
[工学]第3章指令系统课件.ppt_第2页
第2页 / 共106页
[工学]第3章指令系统课件.ppt_第3页
第3页 / 共106页
[工学]第3章指令系统课件.ppt_第4页
第4页 / 共106页
[工学]第3章指令系统课件.ppt_第5页
第5页 / 共106页
点击查看更多>>
资源描述

1、1第1页,共106页。2第2页,共106页。3第3页,共106页。4第4页,共106页。5第5页,共106页。7 4 3 0 7 4 3 0 (a)(b)6第6页,共106页。7第7页,共106页。8第8页,共106页。9第9页,共106页。1.立即数寻址2.寄存器寻址3.直接寻址4.寄存器间接寻址5.(带位移的)基址寻址 6.(带位移的)间址寻址7.(带位移的)比例间址寻址8.基址加间址寻址9.基址加比例间址寻址10.带位移的基址加间址寻址11.带位移的基址加比例间址寻址10第10页,共106页。11第11页,共106页。12第12页,共106页。13第13页,共106页。14第14页,共1

2、06页。15第15页,共106页。16第16页,共106页。17第17页,共106页。18第18页,共106页。19第19页,共106页。20第20页,共106页。21第21页,共106页。前缀 操作码 寻址方式 位移量 立即数 字段 1 字段 2 3 4 5 6 0-4B 1-2B 0-2B 0-4B 0-4B 80 x86 指令的字段格式 一条指常由6个字段组成,字段1为前缀字段,字段26为基本字段。1.前缀字段前缀字段用于修改指令操作的某些属性,为可选字段。(1)段超越前缀:用于指明某个段寄存器取代指令中默认的段寄存器。(2)操作数宽度前缀:用于改变当前操作数的默认宽度值。(3)地址宽度

3、前缀:用于改变当前地址的默认宽度值。(4)重复前缀:用于重复串的操作。(5)总线锁定前缀:用于产生LOCK信号,防止其他设备中断CPU在总线上的操作。22第22页,共106页。2.操作码字段(OP Code)它规定了指令的操作性质。此字段不可省咯。3.寻址方式字段(mod r/m和s-i-b)此两个字段称为寻址方式说明符字段。mod r/m为主寻址字节,而s-i-b为第二寻址字节。4.位移量字段(Displ)当寻址方式中需要位移量时,指令中将出现此字段。其长度为1,2,4个字节,通常用带符号数(补码)表示。5.立即数字段(Data)当寻址方式是立即数寻址时需用此字段,其长度为I,2,4个字节,

4、立即效字段总是该指令的最后字段。操作码字段是必选字段,其它各字段可根据不同的寻址方式选用。23第23页,共106页。24第24页,共106页。25第25页,共106页。26第26页,共106页。27第27页,共106页。28第28页,共106页。29第29页,共106页。30第30页,共106页。31第31页,共106页。32第32页,共106页。33第33页,共106页。34第34页,共106页。35第35页,共106页。36第36页,共106页。37第37页,共106页。栈底栈底SPSP00H20H60H30H40H60H栈顶SSSS图A图B设:AX=6040H,BX=3060H,CX=2

5、000H 执行PUSH指令后,堆栈状态如图A,执行POP指令后,堆栈状态如图B。38第38页,共106页。已知(IP)=1000H,(SP)=2000H,(BX)=283FH,CALL WORD PTRBX指令的机器码是FF17H,试问执行该指令后,SS:1FFEH的值是多少?()(A)28H (B)3FH (C)00 (D)02H39第39页,共106页。40第40页,共106页。41第41页,共106页。42第42页,共106页。43第43页,共106页。44第44页,共106页。45第45页,共106页。46第46页,共106页。47第47页,共106页。48第48页,共106页。49第

6、49页,共106页。50第50页,共106页。51第51页,共106页。52第52页,共106页。第53页,共106页。54第54页,共106页。55第55页,共106页。56第56页,共106页。57第57页,共106页。58第58页,共106页。59第59页,共106页。第60页,共106页。DAA:若AL的低4位9AF=1,则:(AL)(AL)+6,AF1;若AL的高4位9CF=1,则:(AL)(AL)+60H,CF1。DAS:若AL的低4位9AF=1,则:AL(AL)-6,AF1;若AL的高4位9CF=1,则:AL(AL)-60H,CF1。61第61页,共106页。AAA:如果AL的低

7、4位9 或AF=1,则:AL(AL)+6,AH(AH)+1,AF1 AL(AL)0FH)CFAF 否则AL(AL)0FHAAS:如果AL的低4位9或AF=1,则:AL(AL)-6,AH(AH)-1,AF1 AL(AL)0FH CFAF否则AL(AL)0FH。62第62页,共106页。AAM:AH(AL)/0AH,AL(AL)%0AHAAD:AL(AH)10+(AL),AH063第63页,共106页。64第64页,共106页。第65页,共106页。第66页,共106页。67第67页,共106页。68第68页,共106页。69第69页,共106页。70第70页,共106页。71第71页,共106页

8、。72第72页,共106页。ROR73第73页,共106页。74第74页,共106页。75第75页,共106页。76第76页,共106页。77第77页,共106页。串输出指令格式:OUTSB ;输出字节串 OUTSW ;输出字串 OUTSD ;输出双字串功能:将 DS:SI(ESI)指定源串中的数据输出到由DX指定的端口,并自动修改源指针。重复前缀REP/REPZ/REPE/REPNE/REPNZ 在串操作指令前加上重复前缀,可使该指令重复执行。重复前缀的功能为:REP:CX (CX)-1,当(CX)0时重复。REPZ/REPE:相等时重复。即:CX (CX)-1,当(CX)0且ZF=1时重复

9、。REPNE/REPNZ:不相等时重复。即:CX (CX)-1,当(CX)0且ZF=0时重复。REP常与MOVS和STOS指令配合使用。REPZ/REPE 和REPNE/REPNZ常与CMPS和SCAS指令配合使用。78第78页,共106页。79第79页,共106页。80第80页,共106页。81第81页,共106页。82第82页,共106页。83第83页,共106页。84第84页,共106页。单标志位条件转移:单标志位条件转移:85第85页,共106页。无符号数条件转移指令:无符号数条件转移指令:86第86页,共106页。自然丢失自然丢失A-BA-B补补=0 01101100B 110110

10、0B,A-BA-B的真值的真值=+1101100B=+108=+1101100B=+108此时,此时,SF=0,OF=0SF=0,OF=0,差值为正,无溢出,差值为正,无溢出,A A B B1,01,0 1 1 0 1 1 0 0 1 1 0 1 1 0 0正确结果正确结果解:解:AA补补=01111000=01111000,BB补补=00001100,-B=00001100,-B补补=11110100=11110100 AA补补 =0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 +-B +-B补补 =1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 0 87第87页

11、,共106页。(2 2)A A=12=12,B=120B=120,求,求A-B=A-B=?A-BA-B补补=1 10010100B 0010100B,A-BA-B原原=1 11101100B 1101100B,A-B=-108A-B=-108此时,此时,SF=1,OF=0SF=1,OF=0,差值为负,无溢出,差值为负,无溢出,AAB B1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0综合(综合(1 1)()(2 2)得结论)得结论:当当OF=0(OF=0(无溢出无溢出)时,时,SF=0,SF=0,则则A A B B ;SF=1SF=1,则,则ABAB正确结果正确结果 AA补补 =

12、0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 +-B +-B补补 =1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0解:解:AA补补=00001100=00001100,BB补补=01111000,-B=01111000,-B补补=10001000=10001000 88第88页,共106页。(3 3)A A=-12=-12,B=120B=120,求,求A-B=A-B=?解:解:AA补补=11110100=11110100,BB补补=01111000,-B=01111000,-B补补=10001000=10001000 A A补补 =1 1 1 1 1 0 1

13、0 0 1 1 1 0 1 0 0 +-B +-B补补 =1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0A-BA-B补补=0 01111100B 1111100B,A-B=+124A-B=+124此时,此时,SF=0,OF=1SF=0,OF=1,差值为正,有溢出(负溢),差值为正,有溢出(负溢),AAB B1 1,0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0错误结果错误结果自然丢失自然丢失89第89页,共106页。(4 4)A A=12=12,B=-120B=-120,求,求A-B=A-B=?解:解:AA补补=00001100=00001100,BB补补=10

14、001000,-B=10001000,-B补补=01111000=01111000 A A补补 =0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 +-B +-B补补 =0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0A-BA-B补补=1 10000100B 0000100B,A-BA-B原原=1 11111100B 1111100B,A-B=-124A-B=-124此时,此时,SF=1,OF=1SF=1,OF=1,差值为负,有溢出(正溢),差值为负,有溢出(正溢),A A B B1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0错误结果错误结果综合(综

15、合(3 3)()(4 4)得结论)得结论:当当OF=1(OF=1(溢出溢出)时,时,SF=0,SF=0,则则AB AB;SF=1SF=1,则,则A A B B90第90页,共106页。有符号数条件转移指令:有符号数条件转移指令:综合(综合(1)()(2)()(3)()(4)得)得结论结论:测试条件满足测试条件满足:SFOF=1时,时,AB测试条件满足测试条件满足:SFOF=0时,时,A B 91第91页,共106页。92第92页,共106页。93第93页,共106页。1)段内直接调用)段内直接调用 CALLnear_proc 或或CALLNEARPTRnear_proc其中,near_proc

16、是一个段内(近)过程的符号地址,该过程与CALL指令在同一个代码段内。“NEAR PTR”为类型说明,说明near_proc是一个近过程。“NEAR PTR”为默认值,可省略。本指令执行时,首先将其下一条指令的偏移地址压入堆栈,然后计算出所调用过程的入口偏移地址送入IP。执行过程表示如下:SP(SP)-2,SS:SPIPIP过程入口的偏移地址例如:例如:CALLSTRLEN94第94页,共106页。2)段内间接调用)段内间接调用 CALLreg16/mem16或或CALLWORDPTRmem16;若操作数为存储器若操作数为存储器本指令实现段内过程的间接调用。本指令执行时,首先将其下一条指令的偏

17、移地址压入堆栈,若指令中的操作数是一个16位寄存器,则将寄存器的内容送IP;若指令中的操作数是存储器,则将从指定地址开始的连续两个单元的内容送IP。执行过程表示如下:SP(SP)-2,(SS:SP)IPif 操作数是reg,then IP(reg16),elseIP(mem16)指令中的操作数是存储器时,通常在地址表达式前加上“WORD PTR”,以表示要传送到IP的内容是一个16位的段内偏移量(即要访问的是一个字存储单元)。例如:例如:CALLBX;IP(BX),过程的入口偏移地址由,过程的入口偏移地址由BX给出给出CALLWORDPTRBX;IP(BX)字字),过程的入口偏移地址由,过程的

18、入口偏移地址由BX所指向的字存所指向的字存储单元的内容给出储单元的内容给出95第95页,共106页。3)段间直接调用)段间直接调用CALLFARPTRfar_proc或或CALL段基地址:偏移地址段基地址:偏移地址;直接给出过程的地址直接给出过程的地址其中,far_proc是一个远过程的符号地址,该过程与CALL指令在不同的代码段中。“FAR PTR”为类型说明,说明far_proc是一个远过程。本指令实现段外过程的直接调用。本指令执行时,首先将其下一条指令的地址,即CS和IP的内容压入堆栈,然后将指令中给出的所调用过程的段地址和偏移地址分别送到CS和IP。执行过程表示如下:SP(SP)-2,

19、(SS:SP)CS SP(SP)-2,(SS:SP)IP CS指令中给出的过程的段基地址 IP指令中给出的过程的偏移地址例如:例如:CALLFARprintfCALL3000H:1200H96第96页,共106页。4)段间间接调用)段间间接调用CALLDWORDPTRmem32其中,mem32为32位存储器单元,其内容为所调用过程的入口段基地址和偏移地址。“DWORD PTR”为类型说明,说明存储器单元是一个包括段和偏移量的32位地址,该地址将传送到CS和IP。本指令实现段外过程的间接调用。本指令执行时,首先将其下一条指令的地址,即CS和IP的内容压入堆栈,然后将从指定地址开始的连续四个单元的

20、内容分别送CS和IP(高字送CS,低字送IP)。执行过程表示如下:SP(SP)-2,(SS:SP)CS SP(SP)-2,(SS:SP)IP CS(mem32+2),IP(mem32)例如:例如:CALLDW0RDPTRSI97第97页,共106页。RET;无参数段内返回:无参数段内返回:;IPSS:SP,SPSP+2RETimm16;有参数段内返回:有参数段内返回:;IPSS:SP,SPSP+2,SPSP+imm16RET;无参数段间返回:无参数段间返回:;IPSS:SP,SPSP+2,CSSS:SP,SPSP+2RETimm16;有参数段间返回:有参数段间返回:;IPSS:SP,SPSP+

21、2,CSSS:SP,SPSP+2,SPSP+imm1698第98页,共106页。99第99页,共106页。执行执行INT指令时,指令时,CPU首先把断点(首先把断点(FLAGS、CS、IP)压入堆)压入堆栈保存,然后根据栈保存,然后根据n的值计算出与的值计算出与n相对应的中断向量的存放地相对应的中断向量的存放地址,接着从该地址处取出中断向量送到址,接着从该地址处取出中断向量送到CS和和IP,这样就实现了,这样就实现了中断服务程序的调用。中断向量地址的计算方法是将中断类型中断服务程序的调用。中断向量地址的计算方法是将中断类型号号n乘乘4。INT指令的主要操作步骤如下(实模式):指令的主要操作步骤

22、如下(实模式):(1)SP(SP)-2,(SP)FLAGS;把标志寄存器的内容压把标志寄存器的内容压入堆栈入堆栈(2)TF0,IF0;清除清除IF和和TF,以保证进入中断服务程,以保证进入中断服务程序时不会被再次中断,并且也不会响应单步中断序时不会被再次中断,并且也不会响应单步中断(3)SP(SP)-2,(SP)CS;把断点压入堆栈把断点压入堆栈SP(SP)-2,(SP)IP(4)IP(0:n4);中断处理子程序的入口地址中断处理子程序的入口地址CS(0:n4+2)CS:IP就指向中断服务程序的第一条指令,并开始执行中断服就指向中断服务程序的第一条指令,并开始执行中断服务子程序。务子程序。10

23、0第100页,共106页。CALL指令根据操作数指定的地址来获得子程序的入口地址,而INT指令根据中断类型号获得中断服务程序的入口地址。CALL指令执行时将CS和IP的内容压栈,而INT指令除了要将CS和IP压栈外,还要将标志寄存器FLAGS的内容压栈。CALL指令不影响任何标志,而INT指令要影响IF和TF标志。中断向量放在内存的固定位置,通过中断类型号来获取。而CALL指令可任意指定子程序入口地址的存放位置,通过指令的操作数来获取。101第101页,共106页。102第102页,共106页。103第103页,共106页。104第104页,共106页。105第105页,共106页。106第106页,共106页。

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文([工学]第3章指令系统课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|