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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

8086指令系统2.docx

1、8086指令系统23.1.14 串操作指令 字符串传送指令 字符串比较指令 字符串检索指令 取字符串指令 存字符串指令 1.字符串传送指令 字符串传送指令 MOVSB/MOVSW MOVSB用于字节传送 MOVSW用于字传送。特点:指令前面常加重复前缀REP 如:MOV SI,1000H ;源地址为1000HMOV DI,2000H ;目的地址为2000HMOV CX,100 ;字符串长100个字节CLD ;方向标志清0,使指针 ;按增量方向修改REP MOVSB ;将源地址开始的100个 ;字节传送到目的地址 MOVSB指令注意点: 源地址用SI寄存器指出 目的地址用DI寄存器指出 CX中为

2、字节数或字数。 若DF为0,则用MOVSB时,每传送一次,SI和DI自动增1;用MOVSW时,每传送一次,SI和DI自动增2。DF=1,则SI,DI变化方向?2. 字符串比较指令 字符串比较指令 CMPSB/CMPSW功能:把DS段由SI所指的字节或者字和ES段由DI所指的字节或者字相比较。设置标志位 CMPSB/CMPSW指令注意点: 预先将:源字符串的首址设置到DS段和SI中 目的字符串的首址设置到ES段和DI中 比较的字节数或字数设置到CX中 设置方向标志 在DF为0或为1,影响比较SI和DI的修改方向。 CMPSB/CMPSW指令通常加前缀 REPNZ/REPNE REPZ/REPE3

3、. 字符串检索指令 SCASB或者SCASW 功能:将AL中的字节或者AX中的字与位于ES段由DI寄存器所指的内存单元的字节或字相比较。4. 取字符串指令 LODSB/LODSW 功能:将位于DS段由SI所指的存储单元的内容取到AL或AX中。 LODSW取字,DF=1时地址作减量修改 DF=0时地址作增量修改 5. 存字符串指令 STOSB/STOSW 功能:把AL或AX中的数据存到ES段DI寄存器所指的内存单元。3.1.15 控制转移指令 控制转移指令中包括5类指令,即子程序调用和返回指令 无条件转移和条件转移指令 循环控制指令 中断指令 处理器控制指令 关于转移指令和调用指令的寻址 段内直

4、接转移;段内间接转移;段间直接转移;段间间接转移 1 子程序调用和返回指令 子程序调用指令: 段内直接调用指令 段内间接调用指令 段间直接调用指令 段间间接调用指令。例:CALL 1000H ;段内调用地址在指令中给出CALL AX ;段内间接调用地址由AX给出 CALL 2500H:3600H ;段间直接调用,段地址 ;和偏移量由指令给出CALL DWORD PTR DI;段间间接调用,调用;地址在DI、DI+1、;DI+2、DI+3所指单元RET功能:返回高一层的程序。特点:可带参数RET n n为0FFFFH范围中的偶数。2 无条件转移指令和条件转移指令 (1) 无条件转移指令有四种形式

5、如:JMP 1000H JMP CX JMP 2000H:0100H JMP DWORD PTR ST条件转移指令特点:都是相对转移形式的 根据比较结果决定是否转移 大部分转移指令有两种不同的助记符(2) 条件转移指令的形式:JE/JZ ;结果为0,则转移JNE/JNZ ;结果不为0,则转移JG/JNLE ;大于不小于且不等于则转移JNG/JLE ;不大于即小于或等于则转移JL/JNGE ;小于,即不大于且不等于则转移JNL/JGE ;不小于,即大于或者等于则转移JB/JNAE ;低于,即不高于且不等于则转移JNB/JAE ;不低于,即高于或者等于则转移JA/JNBE ;高于,即不低于且不等于

6、则转移JNA/JBE ;不高于,即低于或者等于则转移 JS ;符号标志SF为1则转移JNS ;符号标志SF为0则转移JO ;溢出标志OF为1则转移JNO ;溢出标志OF为0则转移JP ;奇偶标志PF为1则转移JNP ;奇偶标志PF为0则转移 3 循环控制指令 (1) LOOP指令功能:将CX的内容减1,CX如不为0,则继续循环,为0,则退出循环。 如: MOV CX,0100H ;设置循环次数KKK: LOOP KKK ;CX减1,如不为0则循环 (2) LOOPZ/LOOPE功能:将CX减1,如CX为0或者ZF为0则退出循环,在ZF=1且CX0时继续循环。注意:CX中的值为0时,并不会影响标

7、志位ZF。(3) LOOPNZ/LOOPNECX减1,如CX0且ZF=0,则继续循环;如CX=0,或ZF=1,则退出循环。 4 中断指令和中断返回指令 软件中断指令INT n 中断返回指令IRET五个内部中断:类型为0的中断除数为0的中断 类型为1的中断单步中断类型为2的中断非屏蔽中断NMI。类型为3的中断断点中断 类型为4的中断溢出中断5 处理器控制指令 1) 暂停指令HLT 功能:CS和IP指向HLT后面的一条指令的地址,而CPU暂停工作 (2) 标志操作指令STC、CLC和CMC STD和CLD STI和CLI 3) 交权指令和等待指令交权指令ESC:CPU调用协处理器工作。 等待指令W

8、AIT:CPU测试TEST引脚上的信号,直到有停止信号为止。 (4) 总线封锁指令 LOCK 功能:对总线实行封锁。 3.2 Pentium 的寻址方式具有8086的全部寻址方式1. 立即寻址 指令所需要的一部分操作数就包含在指令中。MOV AL, 80HMOV AX, 1090HMOV EBX, 12345678H注意:(1)立即数源操作数(2)一般用于给寄存器赋值(3)寄存器可以使用32位的寄存器EAX ,EBX ,ECX ,EDX 2. 寄存器寻址 操作数在寄存器中,或者操作结果存放在寄存器中。INC CXROL AH,1MOV ECX, EAXMOV EDX,87654321H3. I

9、O端口寻址CPU与外部设备交换数据(1)I/O直接寻址 IN AL,80H OUT 60H,AX IN EAX, 70H(2)I/O间接寻址 IN AL,DX OUT DX, AX OUT DX, EAX操作数在存储器的寻址指令中给出的是一个段内偏移地址。它又叫做有效地址,用符号EA表示。线性地址=段基地址+EA段基地址的获取与Pentium的工作方式有关(1)在实模式下从段寄存器获得(2)在保护模式下段寄存器作为段选择子,它从特定的描述符表中选择一个段描述符段描述符中存放32位的段基地址。4. 直接寻址操作数在内存中,指令直接给出存储器的地址(偏移值)。 比如: MOV AX,1070H M

10、OV EAX,ES:1000H 注意:段基地址的获取与运行方式有关(1)在实模式下,与8086一样,段基地址通过段寄存器获得(2)在保护模式下,段基地址通过段描述符获得,线性地址=段基地址+偏移地址 偏移地址又叫做有效地址EA5. 寄存器间接寻址操作数在内存中,指令中给出的是存放存储器地址的寄存器名,寄存器的内容才是存储器的地址。MOV AX,BX MOV EAX,EBX 6. 寄存器相对寻址操作数存放在存储器中。指令给出存放操作数地址的寄存器,以及一个常数偏移量,存储器的有效地址为 该寄存器的内容+给定的常数偏移量。 比如: MOV AX,SI+100H 常数:可以是 8位,16位,32位带

11、符号数。7. 基址+变址寻址操作数存放在存储器中。指令中给出:基地址寄存器、变址寄存器存储器的地址: (基址寄存器)+(变址寄存器)基址寄存器: EBX、EBP、BX、BP变址寄存器:ESI、EDI、SI、DIMOV AX,BX+SI MOV EDX,EBX+ESIMOV EDX,EBX ESI 8 相对的基址+变址寻址在基址+变址的基础上,增加一个常数偏移量。例如:MOV AX,BP+SI+0050 新增的寻址方式3种。在 变址寻址 基址+变址寻址 相对的基址+变址寻址的基础上,对变址寄存器增加了一个比例因子9. 相对的带比例因子的变址寻址IMUL EBX,ESI*4710 基址+比例因子的

12、变址寻址MOV EAX,EBXESI*4MOV ECX,EDI*8EAX11相对的基址+比例因子的变址寻址MOV EAX,EDI*4EBP+803.3 Pentium指令系统Pentium的指令分为如下几类: 传送指令; 串操作指令; 算术运算指令; 逻辑运算和移位指令; 转移和调用指令; 标志操作和处理器指令; 控制指令; 条件测试和字节设置指令; 系统管理指令; 支持高级语言的指令。3.2.1 传送指令包括 通用数据传送指令 堆栈操作指令 交换指令 输入/输出指令 换码指令 地址传送指令 标志位传送指令1. 通用传送指令将源操作数传送到目的操作数。注意以下几点:(1)可以是8位、16位、3

13、2位,具体有寄存器字长确定,或由存储器的字长前最符约定(2)目的操作数不能是立即数、CS、IP、EIP(3)源操作数可以是任何寻址方式的操作数(4)两个内存单元之间不能直接传送(5)段寄存器之间不能直接传送(6)注意默认的段寄存器, BX、SI、DI、EBX、ESI、 EDIDS BP、EBP、SPSS(7)对SS的赋值指令自动关闭中断。传送完毕又自动恢复执行该指令前的中断开放状态(8)通用数据传送指令不改变标志位。(1)两个操作数的数位相同的传送指令MOV MOV AL,BL MOV ES,DX MOV AX,BX MOV DI,AX MOV CX,1000 MOV WORD PTR SI,

14、6070H MOV DX,5040H MOV EAX,EBX+ECX*2+1000H MOV CRn,EAX MOV DRn,EAX (2)两个操作数的数位不相同的传送指令MOVZX/MOVSX MOVZX EAX,BL ;0扩充MOVSX EAX,BL ;符号扩充2. 堆栈操作指令(1)普通堆栈操作指令PUSH/POP 压栈指令 PUSH EAX PUSH CS PUSH BX+DI PUSH 0870H PUSH DWORD PTR EBX+ESI 弹出指令 POP BX POP ES POP EAX (2)堆栈成组操作指令PUSHA将 8个16位寄存器(AX,CX,DX,BX,SP,BP

15、,SI,DI)按顺序压入堆栈。PUSHAD将 8个32位寄存器(EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI)按顺序压入堆栈。注:压入堆栈中的SP(ESP)的内容是执行该指令前的SP(ESP)的值。POPA成组弹出8个16位寄存器,顺序与PUSHA相反POPAD成组弹出8个32位寄存器,顺序与PUSHAD相反每推入一个字,SP-2,低字节在低地址。在中断服务程序、子程序中保护现场是用压栈方式将寄存器的内容压入堆栈,而在中断返回、子程序返回前,再将被压入的值送回对应的寄存器恢复现场。 PUSH EAX PUSH EBX PUSH EDI PUSH ESI则子程序返回前,应如下恢

16、复寄存器的值: POP ESI POP EDI POP EBX POP EAX3.交换指令XCHG/BSWAP(1) 字节、字和双字交换指令XCHG XCHG AL,BL XCHG BX,CX XCHG 2530,CX XCHG EAX,EDI XCHG ESI,EBX (2)BSWAP寄存器内部双字交换指令。4个字节交换。四个字节最高字节最低字节,次高字节次低字节例如:EAX=01 23 45 67H,执行指令BSWAP EAX,使 EAX=67 45 23 01H4 输入/输出指令IN/OUT (1)直接的I/O指令比如: IN AL,50H IN AX,70H IN EAX,70H OU

17、T 80H,AX(2) 间接的I/O指令 IN AL,DX IN AX,DX IN EAX,DX OUT DX,AX OUT DX,EAX5 换码指令实际上是查表。在内存中有一个数据表,换码指令就是从内存表中,取出与表基地址相距=累加器AL内容的值累加器AL。(1) XLAT BX内容为表首地址,AL为偏移量(2) XLATB EBX内容为表首地址,AL为偏移量指令执行完毕,AL内容改变。教材上给出了一个例BCD格雷码转换格雷码编码规则如下:011000 100011200101 300110401001 501010601100 710001810010 910100格雷码表首地址:1000

18、0HMOV BX, 1000HMOV AL, 05HXTAL程序执行后,(AL)=00001010B6 地址传送指令(1)取有效地址指令LEA将内存的有效地址送目的寄存器。比如:LEA AX,2728 ;(AX)=2728LEA BX,BP+SI LEA ESI,EBX+ECX+2530H LEA EDI,BX+1946H注意:是有效地址,而不是该地址存放的内容送目的寄存器。(2)取段码和偏移量的指令LDS/LES/LSS/LFS/LGS将内存的段码和偏移量分别送两个寄存器, 比如: LDS DI,2530H ;段码送DS,偏移量送DI LES EDI,1000H;段码送ES,偏移量送EDI

19、LSS ESP,EDX ;段码送SS,偏移量送ESP LFS EDX,EDX ;段码送FS,偏移量送EDX LGS ESI,EDX ;段码送GS,偏移量送ESI注:()目的寄存器存放偏移量有,传送的字节数与寄存器长度匹配;()段寄存器由指令操作符确定7 标志传送指令标志传送指令功能:读出标志寄存器的内容,对其进行修改,写回标志寄存器标志寄存器比较重要,不能随意改写,为避免误写造成错误,故用特殊方法、特殊指令。()读取和设置标志寄存器低位LAHF将标志寄存器低位在AH中可以按需要修改SAHF将AH内容写入标志寄存器低8位 修改好后,再写回。(2)标志寄存器压栈与弹出PUSHF16位标志寄存器压栈

20、POPF 弹出16位到标志寄存器PUSHFD32位标志寄存器压栈POPFD 弹出4字节到标志寄存器3.2.2 算术运算指令无符号数和有符号数采用同一套加法及减法指令有两个条件: 同为无符号数或有符号数 用不同的方法检测无符号数或有符号数的运算结果是否溢出1 加法类指令(1)不带进位位的加法指令ADD 比如: ADD CX,1000H ADD DI,SI ADD BX+DI,AX ADD EAX,BX+2000H(2)带进位位的加法指令ADC 比如: ADC AX,SI ADC DX,SI ADC BX,3000H (3)字交换加法指令XADD通过交换将目的操作数送入源操作数处 源操作数+目的操

21、作数目的操作数比如:AX=1234H,BX=1111H,执行指令 XADD AX,BXAX=2345,BX=1234它与一般加法指令的区别?比如:EAX=20000002H,而1000H开始的内存单元中为30000003H,执行指令 XADD 1000H,EAX 后1000H = ? EAX = ?(4)增量指令INC指令的功能:比如: INC AL INC ECX INC BYTE PTRBX+DI+5002 减法类指令(1) 不考虑借位的减法指令SUB,比如: SUB EBX,ECX SUB BP+2,CL SUB SI,5010H SUB WORD PTR DI,1000H(2)考虑借位

22、的减法指令SBB SBB AX,2530H SBB WORD PTREDI+2,1000H(3) 减量指令DEC比如: DEC EBX DEC AX DEC BYTE PTRDI+2 (4) 求补指令NEG比如: NEG EAX NEG ECX (5)比较指令CMP比如: CMP AX,2000H CMP EAX,EBX+EDI+100 CMP EDX,EDI (6) 比较并交换指令CMPXCHG格式: CMPXCHG 目的操作数, 源操作数功能:目的操作数与累加器比较,依据比较结果不同执行不同的传送操作ZF=1(相等),源操作数送目的操作数ZF=0(不等),目的操作数送累加器比如:AL=11

23、H,BL=24H,1000H=22H,执行指令CMPXCHG1000H,BL又如:EBX=76543210H,ECX=01234567H,EAX=01234567H,则执行指令CMPXCHG ECX,EBX7) 8字节比较指令CMPXCHG8B与(6)相似,只是他执行 EDX:EAX中8字节与存储器中的8个字节比较。比如:EAX=11111111H,EBX=22222222H,ECX=33333333H,EDX=44444444H,设DS段1000H所指单元开始的8字节为4444444411111111H,执行指令CMPXCHG8B 1000H3 乘法指令MUL/IMUL (1)无符号数的乘法

24、指令MUL MUL CX MUL BYTE PTR DI MUL WORD PTR SI (2)有符号数的乘法指令IMUL IMUL CL IMUL BX,100 IMUL BYTE PTR BX IMUL WORD PTR DI (3)有符号数乘法指令的扩充形式第一组指令: IMUL BX,CX IMUL EDX,ECX IMUL DI,MEM_WORD IMUL EDX,MEM_DWORD第二组指令: IMUL DX,BX,300 IMUL CX,23 IMUL EBP,200 IMUL ECX,EDX,2000 IMUL BX,MEM_WORD,300 IMUL EDX,MEM_DWOR

25、D,20 4 除法指令(1)无符号数的除法指令DIV DIV CL DIV WORD PTR DI (2)有符号数的除法指令IDIV IDIV BX IDIV BYTE PTRDI 5 类型转换指令CBW CWD CWDE CDQ6 BCD码相关指令两类BCD码 组合的BCD码 非组合的BCD码BCD码指令AAA/DAA、AAS/DAS、AAM和AAD BCD码的加法十进制调整指令AAA/DAA BCD码的减法十进制调整指令AAS/DAS BCD码的乘法十进制调整指令AAM BCD码的除法十进制调整指令AAD3.2.3 逻辑运算和移位指令逻辑指令分为两类: 逻辑运算指令 移位指令1. 逻辑运算

26、指令逻辑运算指令AND/OR/NOT/XOR/TEST 比如: AND AX,1000H AND EAX,EBX AND EDX,EBX+ESI OR AX,00F0H XOR AL,0FH XOR EAX,EAX XOR ECX,100 XOR ECX,10000000H TEST EAX,80000000H TEST AL,01 NOT AL NOT EBX NOT WORD PTR 1000H 2 移位指令1) 非循环移位指令SAL/SAR/SHL/SHRSAL EDX,8 SAL EAX,CL SAL AL,1可以用立即数给出移位次数(131),也可以用CL给出。操作数8,16,32,可以数寄存器,或存储器操作数

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

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