ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:27.43KB ,
资源ID:16979866      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16979866.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(经典的80x86指令系统Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

经典的80x86指令系统Word文档格式.docx

1、(SP)+1),(SP)32位指令:(ESP)(ESP)-4(ESP)+3),(ESP)+2),(ESP)+1)(ESP)(5)POP出栈指令POP DST(SP)+1),(SP)(SP)+2(ESP)+3),(ESP)+2),(ESP)+1)(ESP)(ESP)+4堆栈是一种“后进先出”方式工作的一个存储区,它必须存在于堆栈段中,因而其段地址存放于SS寄存器中。它只有一个出入口,所以只有一个堆栈指针寄存器。当堆栈地址长度为16位时用SP寄存器,堆栈地址长度为32位时用ESP,SP或ESP的内容在任何时候都指向当前的栈顶,所以POP和PUSH指令都必须根据当前SP或ESP的内容来确定进栈或出栈

2、的存储单元,而且必须及时修改指针,以保证SP或ESP指向当前的栈顶。PUSH和POP指令均不影响标志位(5)XCHG交换指令XCHG OPR1 OPR2(OPR1)(OPR2)该指令不影响标志位1.2、累加器专用传送指令IN 输入OUT 输出XLAT 换码这组指令只限于使用累加器EAX,AX或AL传送信息(1)IN输入指令长格式为:IN AL,PORT(字节)IN AX,PORT(字)IN EAX,PORT(双字)执行的操作:(AL)(PORT)(字节)(AX)(PORT+1,PORT)(字)(EAX)(PORT+3,PORT+2,PORT+1,PORT)(双字)短格式为:IN AL,DX(字

3、节)IN AX,DX(字)IN EAX,DX(双字)(DX)(字节)(DX)+1,(DX)(字)(DX)+3,(DX)+2,(DX)+1,(DX)(双字)(2)OUT输出指令OUT PORT,AL(字节)OUT PORT,AX(字)OUT PORT,EAX(双字)(PORT)(AL)(字节)(PORT+1,PORT)(AX)(字)(PORT+3,PORT+2,PORT+1,PORT)(EAX)(双字)OUT DX,AL(字节)OUT DX,AX(字)OUT DX,EAX(双字)(DX)(DX)+1,(DX)(DX)+3,(DX)+2,(DX)+1,(DX)在80x86里,所有I/O端口与CPU

4、之间的通信都由IN和OUT指令来完成。其中,IN完成从I/O到CPU的信息传送,而OUT则完成从CPU到I/O的信息传送。CPU只能用累加器(AL,AX,EAX)接收或发送信息。外部设备最多可有65536个I/O端口,端口号为0000FFFFH。其中的前256个端口可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用两个字节表示,第二个字节就是端口号。当端口号大于等于256时,只能用短格式,此时必须先把端口号放到DX寄存器中,然后再用IN或OUT指令来传送信息。输入、输出指令不影响标志位(3)XLAT换码指令XALT OPR(BX)+(AL)(EBX)+(AL)经常需要把一种代码转换

5、为另一种代码。在使用这条指令之前,应先建立一个字节表格,表格的首地址提前存入BX或EBX寄存器,需要转化的代码应该是相对于表格首地址的位移量也提前存放在AL寄存器中,表格的内容则是所要换取的代码,该指令执行后就可在AL中得到转换后的代码1.3、地址传送指令LEA 有效地址送寄存器LDS 指针送寄存器和DSLES 指针送寄存器和ESLFS 指针送寄存器和FSLGS 指针送寄存器和GSLSS 指针送寄存器和SS这一组指令完成把地址送到指定寄存器的功能(1)LEA有效地址送寄存器指令LEA REG,SRC(REG)SRC指令把源操作数的有效地址送到指定的寄存器中(2)LDS、LES、LFS、LGS和

6、LSS指针送寄存器和段寄存器指令LDS REG,SRC(SREG)(SRC+2)或(SREG)(SRC+4)该组指令的源操作数只能用于存储器寻址方式,根据任一种存储器寻址方式找到一个存储单元的地址,当指令指定的寄存器是16位寄存器时,把该存储单元中存放的16位偏移地址装入该寄存器中,然后把(SRC+2)中的16位数装入指令指定的段寄存器中;当指令指定的是32位寄存器时,把该存储单元中存放的32位偏移地址装入该寄存器中,然后把(SRC+4)中的16位数装入到指定的段寄存器中本组指令不影响标志位1.4、标志寄存器传送指令LAHF 标志送AHSAHF AH送标志寄存器PUSHF:标志进栈POPF:标

7、志出栈(1)LAHF标志送AH指令SAHF(AH)(FLAGS的低字节)(2)SAHF AH送标志寄存器(FLAGS的低字节)(AH)1.5、类型转换指令CBW 字节转换成字CWD 字转换成双字CDQ 双字转换为4字BSWAP 字节交换(1)CBW字节转换为字指令格式:CBWAL的内容符号扩展到AH,形成AX中的字(2)CWD字转换为双字指令CWDAX的内容符号扩展到DX,形成DX:AX中的双字(3)CDQ双字转换为4字指令CDQEAX的内容符号扩展到EDX,形成EDX:EAX中的4字(4)BSWAP字节交换指令BSWAP r32使指令指定的32位寄存器的字节次序变反2、算术指令80x86的算

8、术运算指令包括二进制运算和十进制运算指令2.1、加法指令ADD 加法ADC 带进位加法INC 加1XADD 交换并相加(1)ADD加法指令ADD DST,SRC(SRC)+(DST)(2)ADC带进位加法指令ADC DST,SRCDST)(SRC)+(DST)+CF(3)INC加1指令INC OPR(OPR)(OPR)+1(4)XADD DST,SRCXADD交换并相加指令TEMP(SRC)(DST)TEMP除INC不影响CF标志外,本组指令都影响条件标志位2.2、减法指令SUB 减法SBB 带借位减法DEC 减1NEG 求补CMP 比较CMPXCHG 比较并交换CMPXCHG8B 比较并交换

9、8字节(1)SUB减法指令SUB DST,SRC(DST)-(SRC)(2)SBB带借位减法SBB DST,SRC(DST)-(SRC)-CF(3)DEC减一指令DEC OPR(OPR)-1(4)NEG求补指令NEG OPR0FFFFH-(OPR)+1(5)CMP比较指令CMP OPR1,OPR2(OPR1)-(OPR2)该指令与SUB指令一样执行减法,但它不保存结果,只是根据结果设置条件标志位。CMP指令后往往跟着一条条件转移指令,根据比较结果产生不同的程序分支2.3、乘法指令MUL 无符号数乘法IMUL 带符号数乘法(1)MUL无符号数乘法指令MUL SRC字节操作数:(AL)*(SRC)

10、字操作数:(DX,AX)(AX)*(SRC)双字操作数:(EDX,EAX)(EAX)*(SRC)(1)IMUL带符号数乘法指令IMUL SRC与MUL相同,但必须是带符号数,而MUL是无符号数在乘法指令里,目的操作数必须是累加器,字运算为AX,字节运算为AL。对于MUL指令,如果乘积的高一半为0,即字节操作的(AH)或字操作的(DX)或双字操作的(EDX)为0,则CF位和OF位均为0;否则,则CF位和OF位均为1。这样的条件码设置可以用来检查字节相乘的结果是字节还是字,或者可以检查字相乘的结果是字还是双字,双字相乘的结果是双字还是4字。对于IMUL指令,如果乘积的高一半是低一半的符号扩展,则C

11、F位和OF位均为0;否则,则CF位和OF位均为12.4、除法指令DIV 无符号数除法IDIV 带符号数除法(1)DIV无符号数除法DIV SRC字节操作:16位被除数在AX中,8位除数为源操作数,结果的8位商在AL中,8位余数在AH中。表示为:(AX)/(SRC)的商(AX)/(SRC)的余数字操作:32位被除数在DX,AX中。其中,DX为高位字,16位除数为源操作数,结果的16位商在AX中,16位余数在DX中。(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数双字操作:64位被除数在EDX,EAX中。其中,EDX为高位字,32位除数为源操作数,结果的32位商在EAX中,3

12、2位余数在EDX中。(EDX,EAX)/(SRC)的商(EDX)(EDX,EAX)/(SRC)的余数商和余数均为无符号数(2)IDIV带符号数除法IDIV SRC与DIV相同,但操作数必须是带符号数,商和余数也是带符号数2.5、十进制运算指令 二-十进制(BCD)是一种用二进制编码的十进制数。它是用4位2进制数表示一个十进制数码的,由于这4位二进制数的权为8421,所以BCD码又成为8421码。可以用压缩的BCD码和非压缩的BCD两种格式来表示一个十进制数。压缩的BCD码用4位二进制数表示一个十进制数位,整个十进制数形成为一个顺序的以4位为一组的数串。非压缩的BCD码则以8位表示一个十进制数位

13、,8位中的低4位是以8421码表示的十进制数位,而高4位则没有意义3、逻辑指令3.1、逻辑运算指令AND 逻辑与OR 逻辑或NOT 逻辑非XOR 异或TEST 测试(1)AND逻辑与指令AND DST,SRC(DST)与(SRC)(2)OR逻辑或指令OR DST,SRC(DST)或(SRC)(3)NOT逻辑非指令NOT OPR非(OPR)(4)XOR异或指令XOR DST,SRC(DST)异或(SRC)(5)TEST测试指令TEST OPR1,OPR2(OPR1)与(OPR2)两个操作数相与的结果不保存,只根据其条件置条件码NOT指令不影响标志位,其他4种指令将使CF和OF位为0,AF位无定义

14、,而SF、ZF、PF位则根据运算结果设置3.2、位测试BT 位测试BTS 位测试并置1BTR 位测试并置0BTC 位测试并变反(1)BT位测试指令BT DST,SRC把目的操作中由源操作数所指定的值送往标志位CF(2)BTS位测试并置1指令BTS DST,SRC把目的操作数中由源操作数所指定的值送往标志位CF,并将目的操作数中该位置13.3、位扫描指令BSF 正向扫描指令BSR 反向扫描指令(1)BSF正向位扫描指令BSF REG,SRC指令从位0开始自右向左扫描源操作数,目的是检索第一个为1的位。如遇到第一个为1的位则将ZF置0,并将该位的位位置装入目的寄存器中;如源操作数为0,则将ZF位置

15、1,目的寄存器无定义3.4、移位指令SHL 逻辑左移SAL 算术左移SHR 逻辑右移SAR 算术右移ROL 循环左移RPR 循环右移RCL 带进位循环左移RCR 带进位循环右移SHLD 双精度左移SHRD 双精度右移4、串处理指令MOVS 串传送CMPS 串比较SCAS 串扫描LODS 从串取STOS 存入串INS 串输入OUTS 串输出与上述基本指令配合使用的前缀有:REP 重复REPE/REPZ 相等/为零则重复REPNE/REPNZ 不相等/不为零则重复4.1、与REP相配合工作的MOVS,STOS,LODS,INC和OUTS指令(1)REP重复串操作直到计数寄存器Count Reg的内

16、容为0为止REP string primitive其中,string primitive可为MOVS,STOS,LODS,INC和OUTS指令如(Count Reg)=0,则退出REP,否则往下执行(Count Reg)(Count Reg)-1执行其后的串指令重复上述操作其中,地址长度为16位时,用CX作为Count Reg;地址长度为32位时,用ECX作为Count Reg(2)MOVS串传送指令MOVS DST,SRCMOVSB (字节)MOVSW (字)MOVSD (双字)其中后三种格式明确注明是传送字节、字或双字,第一种格式则应在操作数中表明是双字、字还是字节操作,例如:MOVS E

17、S:BYTE PTRDI,DS:SI(Destination-index)(Source-index)(Source-index)(Source-index)+-1(Destination -index)(Destination -index)+-1(Source-index)+-2(Destination -index)+-2(Source-index)+-4(Destination -index)+-4上述操作中,当方向标志DF=0时用+,DF=1时用-其中,Source-index为源变址寄存器,当地址长度为16时用SI寄存器,当地址长度为32时用ESI寄存器;Destination i

18、ndex为目的变址寄存器,当地址长度为16时用DI寄存器,当地址长度为32时用EDI寄存器该指令不影响条件码MOVS指令可以把源变址寄存器指向的数据段中的一个字(或双字,字节)传送到由目的寄存器指向的附加段中的一个字(或双字,字节)中去,同时根据方向标志及数据格式对源变址寄存器和目的变址寄存器进行修改。当该指令与前缀REP联用时,则可将数据段中的整串数据传送到附加段中去(3)STOS存入串指令STOS DSTSTOSB (字节)STOSW (字)STOSD (双字)(AL)(Destination-index)(Destination-index)+-1(AX)(Destination-ind

19、ex)+-2(EAX)(Destination-index)+-4该指令把AL、AX、EAX的内容存入由目的变址寄存器指向的附加段的某单元中,并根据DF的值及数据类型修改目的变址寄存器的内容。当它与REP联用时,可把AL、AX或EAX的内容存入一个长度为(Count Reg)的缓冲区中(4)LODS从串取指令LODS SRCLODSB (字节)LODSW (字)LODSD (双字)(Source-index),(Source-index)该指令把由源变址寄存器指向的数据段中某单元的内容送到AL、AX或EAX中,并根据方向标志和数据类型修改源变址寄存器。(5)串输入指令INS DST,DXINS

20、BINSWINSD(DX)(字)(DX)(双字)该指令把端口号在DX寄存器中的I/O空间的字节、字或双字送到附加段中的由目的变址寄存器所指向的存储单元中,并根据DF的值和数据类型修改目的变址寄存器的内容。当它与REP联用时,可以把成组的字节、字或双字输入到长度为(Count Reg)的缓冲区中(6)OUTS串输出指令OUTS DX,SRCOUTSB (字节)OUTSW (字)OUTSD (双字)(Source-index)(字节)(Source-index)(字)该指令把由源变址寄存器所指向的存储器中的字节、字或双字传送到端口号在DX寄存器中的I/O端口中去,并根据DF的值和数据类型修改源变址

21、寄存器的内容。当它与REP联用时,可以把存储器中长度为(Count Reg)的字节、字或双字成组地传送到I/O空间4.2、与REPE/REPZ和REPNE/REPNZ联合工作的CMPS和SCAS指令(1)REPE/REPZ当相等/为零时重复串操作REPE/REPZ String Primitive其中,String Primitive可为CMPS或SCAS指令如(Count Reg)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行与REP相比,除满足(Count Reg)=0的条件可结束操作外,还增加了ZF=0的条件。也就是说,只要两数相等就可继续比较,如果遇到两数不等时可提前结束操作(2)REPNE/REPNZ当不相等/不为零时重复串操作REPNE/REPNZ String Primitive如(Count Reg)=0或ZF=1(即某次比较的结果两个操作数相等)时退出,否则往下执行(3)CMPS串比较指令CMPS SRC,DSTCMPSB (字节)CMPSW (字)CMPSD (双字)(Source-index)-(Destination-index)指令把由源变址寄存器指向的数据段中的一个字节、字或双字于由目的变址寄存器所指向的附加段中的一个字节、字或双字相减,但不保存结果,只根据结果置条件码(4)SCAS串扫描指令SCAS DSTSCASB (

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1