ImageVerifierCode 换一换
格式:PPT , 页数:106 ,大小:492KB ,
文档编号:5102320      下载积分:29 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5102320.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

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

1、1234567 4 3 0 7 4 3 0 (a)(b)789101.立即数寻址2.寄存器寻址3.直接寻址4.寄存器间接寻址5.(带位移的)基址寻址 6.(带位移的)间址寻址7.(带位移的)比例间址寻址8.基址加间址寻址9.基址加比例间址寻址10.带位移的基址加间址寻址11.带位移的基址加比例间址寻址111213141516171819202122 前缀 操作码 寻址方式 位移量 立即数 字段 1 字段 2 3 4 5 6 0-4B 1-2B 0-2B 0-4B 0-4B 80 x86 指令的字段格式 一条指常由6个字段组成,字段1为前缀字段,字段26为基本字段。1.前缀字段前缀字段用于修改指

2、令操作的某些属性,为可选字段。(1)段超越前缀:用于指明某个段寄存器取代指令中默认的段寄存器。(2)操作数宽度前缀:用于改变当前操作数的默认宽度值。(3)地址宽度前缀:用于改变当前地址的默认宽度值。(4)重复前缀:用于重复串的操作。(5)总线锁定前缀:用于产生LOCK信号,防止其他设备中断CPU在总线上的操作。232.操作码字段(OP Code)它规定了指令的操作性质。此字段不可省咯。3.寻址方式字段(mod r/m和s-i-b)此两个字段称为寻址方式说明符字段。mod r/m为主寻址字节,而s-i-b为第二寻址字节。4.位移量字段(Displ)当寻址方式中需要位移量时,指令中将出现此字段。其

3、长度为1,2,4个字节,通常用带符号数(补码)表示。5.立即数字段(Data)当寻址方式是立即数寻址时需用此字段,其长度为I,2,4个字节,立即效字段总是该指令的最后字段。操作码字段是必选字段,其它各字段可根据不同的寻址方式选用。242526272829303132333435363738栈底栈底SPSP00H20H60H30H40H60H栈顶SSSS图A图B设:AX=6040H,BX=3060H,CX=2000H 执行PUSH指令后,堆栈状态如图A,执行POP指令后,堆栈状态如图B。39已知(IP)=1000H,(SP)=2000H,(BX)=283FH,CALL WORD PTRBX指令的

4、机器码是FF17H,试问执行该指令后,SS:1FFEH的值是多少?()(A)28H (B)3FH (C)00 (D)02H4041424344454647484950515254555657585961DAA:若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。62AAA:如果AL的低4位9 或AF=1,则:AL(AL)+6,AH(AH)+1,AF1 AL(AL)0FH)CFAF 否则AL(AL)0F

5、HAAS:如果AL的低4位9或AF=1,则:AL(AL)-6,AH(AH)-1,AF1 AL(AL)0FH CFAF否则AL(AL)0FH。63AAM:AH(AL)/0AH,AL(AL)%0AHAAD:AL(AH)10+(AL),AH06467686970717273ROR7475767778串输出指令格式:OUTSB ;输出字节串 OUTSW ;输出字串 OUTSD ;输出双字串功能:将 DS:SI(ESI)指定源串中的数据输出到由DX指定的端口,并自动修改源指针。重复前缀REP/REPZ/REPE/REPNE/REPNZ 在串操作指令前加上重复前缀,可使该指令重复执行。重复前缀的功能为:R

6、EP:CX (CX)-1,当(CX)0时重复。REPZ/REPE:相等时重复。即:CX (CX)-1,当(CX)0且ZF=1时重复。REPNE/REPNZ:不相等时重复。即:CX (CX)-1,当(CX)0且ZF=0时重复。REP常与MOVS和STOS指令配合使用。REPZ/REPE 和REPNE/REPNZ常与CMPS和SCAS指令配合使用。79808182 838485单标志位条件转移:单标志位条件转移:86无符号数条件转移指令:无符号数条件转移指令:87自然丢失自然丢失A-BA-B补补=0 01101100B 1101100B,A-BA-B的真值的真值=+=+1101100B=+1081

7、101100B=+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 88(2 2)A A=12=12,B=120B=120,求,求A-BA-B=?

8、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补补 =0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 +-B +-B补补 =1

9、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 89(3 3)A A=-12=-12,B=120B=120,求,求A-BA-B=?解:解:AA补补=11110100=11110100 ,BB补补=01111000,-B=01111000,-B补补=10001000=10001000 A A补补 =1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 0 +-B +-B补补 =1 1 0 0 0 1 0 0 0 0 0 0 1

10、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错误结果错误结果自然丢失自然丢失90(4 4)A A=12=12,B=-120B=-120,求,求A-BA-B=?解:解:AA补补=00001100=00001100 ,BB补补=10001000,-B=10001000,-B补补=01111000=01111000 A A补补 =0 0 0 0 0 1 1 0 0

11、 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错误结果错误结果综合(综合(3 3)()(4 4)得结论)得结论:当当OF=1(OF=1(溢出溢出)时,时,SF=0,SF=0,则则AB AB;SF=1SF

12、=1,则,则A A B B91有符号数条件转移指令:有符号数条件转移指令:综合(综合(1)()(2)()(3)()(4)得)得结论结论:测试条件满足测试条件满足:SFOF=1时,时,AB测试条件满足测试条件满足:SFOF=0时,时,A B 9293941)段内直接调用)段内直接调用 CALLnear_proc 或或CALLNEARPTRnear_proc其中,near_proc是一个段内(近)过程的符号地址,该过程与CALL指令在同一个代码段内。“NEAR PTR”为类型说明,说明near_proc是一个近过程。“NEAR PTR”为默认值,可省略。本指令执行时,首先将其下一条指令的偏移地址压

13、入堆栈,然后计算出所调用过程的入口偏移地址送入IP。执行过程表示如下:SP(SP)-2,SS:SPIPIP过程入口的偏移地址例如:例如:CALLSTRLEN952)段内间接调用)段内间接调用 CALLreg16/mem16或或CALLWORDPTRmem16;若操作数为存储器若操作数为存储器本指令实现段内过程的间接调用。本指令执行时,首先将其下一条指令的偏移地址压入堆栈,若指令中的操作数是一个16位寄存器,则将寄存器的内容送IP;若指令中的操作数是存储器,则将从指定地址开始的连续两个单元的内容送IP。执行过程表示如下:SP(SP)-2,(SS:SP)IPif 操作数是reg,then IP(r

14、eg16),elseIP(mem16)指令中的操作数是存储器时,通常在地址表达式前加上“WORD PTR”,以表示要传送到IP的内容是一个16位的段内偏移量(即要访问的是一个字存储单元)。例如:例如:CALLBX;IP(BX),过程的入口偏移地址由,过程的入口偏移地址由BX给出给出CALLWORDPTRBX;IP(BX)字字),过程的入口偏移地址由,过程的入口偏移地址由BX所指所指向的字存储单元的内容给出向的字存储单元的内容给出963)段间直接调用)段间直接调用CALLFARPTRfar_proc或或CALL段基地址:偏移地址段基地址:偏移地址;直接给出过程的地址直接给出过程的地址其中,far

15、_proc是一个远过程的符号地址,该过程与CALL指令在不同的代码段中。“FAR PTR”为类型说明,说明far_proc是一个远过程。本指令实现段外过程的直接调用。本指令执行时,首先将其下一条指令的地址,即CS和IP的内容压入堆栈,然后将指令中给出的所调用过程的段地址和偏移地址分别送到CS和IP。执行过程表示如下:SP(SP)-2,(SS:SP)CS SP(SP)-2,(SS:SP)IP CS指令中给出的过程的段基地址 IP指令中给出的过程的偏移地址例如:例如:CALLFARprintfCALL3000H:1200H974)段间间接调用)段间间接调用CALLDWORDPTRmem32其中,m

16、em32为32位存储器单元,其内容为所调用过程的入口段基地址和偏移地址。“DWORD PTR”为类型说明,说明存储器单元是一个包括段和偏移量的32位地址,该地址将传送到CS和IP。本指令实现段外过程的间接调用。本指令执行时,首先将其下一条指令的地址,即CS和IP的内容压入堆栈,然后将从指定地址开始的连续四个单元的内容分别送CS和IP(高字送CS,低字送IP)。执行过程表示如下:SP(SP)-2,(SS:SP)CS SP(SP)-2,(SS:SP)IP CS(mem32+2),IP(mem32)例如:例如:CALLDW0RDPTRSI98RET;无参数段内返回:无参数段内返回:;IPSS:SP,

17、SPSP+2RETimm16;有参数段内返回:有参数段内返回:;IPSS:SP,SPSP+2,SPSP+imm16RET;无参数段间返回:无参数段间返回:;IPSS:SP,SPSP+2,CSSS:SP,SPSP+2RETimm16;有参数段间返回:有参数段间返回:;IPSS:SP,SPSP+2,CSSS:SP,SPSP+2,SPSP+imm1699100执行执行INT指令时,指令时,CPU首先把断点(首先把断点(FLAGS、CS、IP)压入堆)压入堆栈保存,然后根据栈保存,然后根据n的值计算出与的值计算出与n相对应的中断向量的存放地相对应的中断向量的存放地址,接着从该地址处取出中断向量送到址,

18、接着从该地址处取出中断向量送到CS和和IP,这样就实现了,这样就实现了中断服务程序的调用。中断向量地址的计算方法是将中断类型中断服务程序的调用。中断向量地址的计算方法是将中断类型号号n乘乘4。INT指令的主要操作步骤如下(实模式):指令的主要操作步骤如下(实模式):(1)SP(SP)-2,(SP)FLAGS;把标志寄存器的内容压把标志寄存器的内容压入堆栈入堆栈(2)TF0,IF0;清除清除IF和和TF,以保证进入中断服务程,以保证进入中断服务程序时不会被再次中断,并且也不会响应单步中断序时不会被再次中断,并且也不会响应单步中断(3)SP(SP)-2,(SP)CS;把断点压入堆栈把断点压入堆栈S

19、P(SP)-2,(SP)IP(4)IP(0:n4);中断处理子程序的入口地址中断处理子程序的入口地址CS(0:n4+2)CS:IP就指向中断服务程序的第一条指令,并开始执行中断服就指向中断服务程序的第一条指令,并开始执行中断服务子程序。务子程序。101 CALL指令根据操作数指定的地址来获得子程序的入口地址,而INT指令根据中断类型号获得中断服务程序的入口地址。CALL指令执行时将CS和IP的内容压栈,而INT指令除了要将CS和IP压栈外,还要将标志寄存器FLAGS的内容压栈。CALL指令不影响任何标志,而INT指令要影响IF和TF标志。中断向量放在内存的固定位置,通过中断类型号来获取。而CALL指令可任意指定子程序入口地址的存放位置,通过指令的操作数来获取。102103104105106

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

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


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