1 / 41

第二章 微型机指令系统

第二章 微型机指令系统. 第一节 寻址方式 第二节 8086/8088 指令系统 第三节 80286/80386 扩充与增加的指令. 第一节 寻址方式 一、立即寻址 二、寄存器寻址 三、直接寻址 四、寄存器间接寻址 五、变址寻址 六、基址寻址 七、基址 - 变址寻址. 二、寄存器寻址 特点:操作数位于 CPU 的 寄存器 当中。 例如: MOV CL , AL MOV SS , AX 用途:通过寄存器传送数据,传送速度快。. 一、立即寻址 特点:操作数位于指令当中。 例如: MOV CL , 05

gavin-hale
Download Presentation

第二章 微型机指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 微型机指令系统

  2. 第一节 寻址方式 第二节 8086/8088指令系统 第三节 80286/80386扩充与增加的指令

  3. 第一节 寻址方式 一、立即寻址 二、寄存器寻址 三、直接寻址 四、寄存器间接寻址 五、变址寻址 六、基址寻址 七、基址-变址寻址

  4. 二、寄存器寻址 特点:操作数位于CPU的寄存器当中。 例如:MOVCL,AL MOV SS,AX 用途:通过寄存器传送数据,传送速度快。

  5. 一、立即寻址 特点:操作数位于指令当中。 例如:MOVCL,05 MOV AX,3100H 用途:给寄存器或存储单元赋初值。

  6. 三、直接寻址 特点:指令的操作码后面直接给出操作数 的16位偏移地址。 例如:MOVAX,[3100H] 设此时数据段寄存器DS=6000H, 则该内存单元的物理地址为: 6000H×10H+3100H = 63100H 61300H中的内容 AL 61301H中的内容 AH

  7. 四、寄存器间接寻址 特点:操作数在内存单元中,操作数的内存 单元地址在指令的寄存器中。 1、SI、DI、BX作为间址寄存器 例如:MOVAX,[DI] 设此时数据段寄存器DS=6000H, DI=2000H,则该内存单元的物理地址为: 6000H×10H+2000H = 62000H 2、BP作为间址寄存器 例如:MOV[BP],AX 设此时堆栈段寄存器SS=5000H, BP=1000H,则AX中的内容送入内存单元(?)

  8. 五、变址寻址 特点:操作数的有效地址为指令中的变址 寄存器的内容加上位移量的内容。 例如:MOV BX,[SI+1100H] 设此时数据段寄存器DS=6000H, SI=2000H则该内存单元的物理地址为: 6000H×10H+2000H+1100H = 63100H

  9. 六、基址寻址 特点:操作数的有效地址为指令中的基址 寄存器(BX或BP)中的内容。 例如:MOVBLOCK[BP],AX 设此时堆栈段寄存器SS=6000H, BP=2000H,BLOCK=2500H,则该内存单元的物理地址为: 6000H×10H+2000H+2500H = 64500H

  10. 七、基址-变址寻址 特点:操作数的有效地址为指令中的基址 寄存器(BX或BP)和变址寄存器(SI或DI)以及8位或16位偏移量的和。 例如:MOVAX ,BLOCK[BX][SI] 设此时数据段寄存器DS=6000H, BX=2000H,SI=5000H,BLOCK=2500H,则该内存单元的物理地址为: 6000H×10H+2000H+5000H+2500H = 69500H

  11. 操作数三种类型: 1、立即数操作数 2、寄存器操作数 3、存储器操作数

  12. 第二节 8086/8088的指令系统

  13. 指令系统的分类: 一、数据传送指令 二、算术运算指令 三、逻辑指令 四、串处理指令 五、控制转移指令 六、处理器控制指令

  14. 一、数据传送指令

  15. 二、算术运算指令

  16. 三、逻辑指令

  17. 四、串处理指令 五、处理器控制指令

  18. 六、控制转移指令

  19. 1、通用数据传送指令 1)一般传送指令(MOV) 格式: MOV 目标操作数,源操作数 举例: MOV SI,BX MOV DS,AX MOV AX,CS MOV AL,5 MOV MEM,5 MOV MEM,AX MOV DS,MEM MOV [BX],6 MOV AX,DISP[BX][SI]

  20. 例程: … … MOV SI,OFFSET BUFFER1 MOV DI,OFFSET BUFFER2 MOV CX,200 NEXT:MOV AL,[SI] MOV [DI],AL INC SI INC DI DEC CX JNZ NEXT ……

  21. 2)堆栈指令(PUSH和POP) PUSH 源操作数; POP 目的操作数(寄存器、段寄存器或存储器); 例:MOV SP,0E200H MOV SS,9000H;此时栈顶位置为:9E200H PUSH AX; POP BX; AX 堆栈段 11 22 9E1FEH 9E1FFH 9E200H BX 11 22

  22. 3)交换指令 (XCHG) XCHG 目的操作数,源操作数 例:XCHG BL,DL XCHG AX,SI 4)查表指令(XLAT) XLAT 表地址 指令执行前,应将表首地址送至BX, 元素的序号送至AL。 例:MOV BX,OFFSET Hex-table;(BX) 表首址 MOV AL,0AH ;(AL) 序号 XLAT Hex-table ;查表转换

  23. 2、输入输出指令(2条) 1)IN AX(AL),端口地址2)OUT 端口地址,AX(AL) 例:IN AL,data8 例:OUT data8,AL IN AX,data8 OUT data8,ax IN AL,DX OUT DX,AL IN AX,DX OUT DX,AX 例:IN AL,61H OR AL,10000000B OUT 61H,AL

  24. 3、目标地址传送指令(3条) 1)LEA reg16,mem16;将一个近地址指针写入一个指定的 通用寄存器。 2)LDS reg16,mem32;传送一个32位的远地址指针, 其中的16位偏移地址写入一个指定的通用寄存器 16位段地址写入数据段寄存器DS。 3)LES reg16,mem32;同上。 16位段地址写入附加段寄存器ES。 例如:MOV BX,BUFFER LEA BX,BUFFER = MOV BX,OFFSET BUFFER

  25. 4、标志传送指令(4条) 1)LAHF ;将FLAGS中的SF、ZF、AF、PF和CF 传送至AH的对应位。 2)SAHF ;将AH中的7、6、4、2、0位传送至 FLAGS中的对应位。 3)PUSHF ;SP=SP-2,然后将FLAGS送入堆栈。 4)POPF ;将堆栈中内容送至FLAGS,然后 SP=SP+2。

  26. 1、加法运算指令(5条) 1)ADD 目的操作数,源操作数; 2)ADC 目的操作数,源操作数; 3)INC 目的操作数 ; 4)AAA ;ASCII码调整指令 5)DAA ;十进制调整指令

  27. 2、减法运算指令(5条) 1)SUB 目的操作数,源操作数; 2)SBB 目的操作数,源操作数; 3)DEC 目的操作数 ; 4)AAS ;ASCII码调整指令 5)DAS ;十进制调整指令 6)NEG 目的操作数 ; 7)CMP 目的操作数,源操作数;

  28. 3、乘法指令(3条) 1)MUL 源操作数; 2)IMUL 源操作数; 3)AAM ;ASCII码调整指令 4、除法指令(5条) 1)DIV 源操作数; 2)IDIV 源操作数; 3)AAD ;ASCII码调整指令

  29. 5、转换指令(2条) 1)CBW ; 2)CWD ;

  30. 1、逻辑运算指令(5条) 1)AND 目的操作数,源操作数; 2)TEST 目的操作数,源操作数; 3)OR 目的操作数,源操作数; 4)XOR 目的操作数,源操作数; 5)NOT 目的操作数;

  31. 2、移位指令(3条) 1)SHL(SAL) 目的操作数,1;左移1位 SHL(SAL) 目的操作数,CL;左移CL中指定的位数。 2)SHR 目的操作数, 1;右移1位 SHR 目的操作数,CL;右移CL中指定的位数。 3)SAR 目的操作数, 1;右移1位 SAR 目的操作数,CL;右移CL中指定的位数。

  32. 3、循环移位指令(4条) 1)ROL 目的操作数,1;向左循环移动1位。 ROL 目的操作数,CL;向左循环移动CL中指定的位数。 2)ROR 目的操作数, 1;向右循环移动1位。 ROR 目的操作数,CL;向右循环移动CL中指定的位数。 3)RCL 目的操作数, 1;向左循环移动1位。 RCL 目的操作数,CL;向左循环移动CL中指定的位数。 4)RCR 目的操作数, 1;向右循环移动1位。 RCR 目的操作数,CL;向右循环移动CL中指定的位数。

  33. 四、串操作指令(5条) 1、MOVS;字符串传送指令 2、CMPS;字符串比较指令 3、SCAS;字符串扫描指令 4、LODS;字符串装入指令 5、STOS;字符串送存指令

  34. 例:将数据段中首地址为BUFFER1的200个字节 传送到附加段首地址为BUFFER2的内存区中。 LEA SI,BUFFER1 LEA DI,BUFFER2 MOV CX,200 CLD REP MOVSB

  35. 例:比较两个20字节长,首地址分别为STRING1和 STRING2的字节串,找出其中第一个不相等字符的 地址。如果两字符串完全相同,则转到ALL进行处 理。 LEA SI,STRING1 LEA DI,STRING2 MOV CX,20 CLD REPE CMPSB JCXZ ALL DEC SI DEC DI JMP DONE ALL: MOV SI,0 MOV DI,0 DONE: ……

  36. 1、转移指令 1)无条件转移指令JMP 功能:无条件转移至指令中规定的目标地址。 JMP near_lable; JMP short_lable; JMP reg16; JMP mem16; JMP far_lable; JMP mem32; 2)条件转移指令 表

  37. 2、循环控制指令 1)LOOP short_lable 功能:将CX-1,若结果为0,则执行下一条指令; 若结果不为0,则跳转到short_lable标号处。 2) LOOPE/LOOPZ short_lable 功能:将CX-1,若结果不为0,且ZF=1,则跳转到short_lable标号处。 3) LOOPNE/LOOPNZ short_lable 功能:将CX-1,若结果不为0,且ZF=0,则跳转到short_lable标号处。

  38. 3、过程调用指令 1)CALL 功能:调用一个过程。 CALL near_proc ;段内直接调用 CALL reg16/mem16;段内间接调用 CALL far_proc ;段间直接调用 CALL mem32 ;段间间接调用 2)RET 功能:从过程返回。

  39. 4、中断指令 1)INT n 功能:调用一个中断程序。 2)INTO 功能:如果溢出(OF=1),则产生一个中断。 3)IRET 功能:中断返回指令。

  40. 1、标志位操作 1)CLC 功能:使CF=0。 2)STC 功能:使CF=1。 3)CMC 功能:使CF取反。 4)CLD 功能:使DF=0。 5)STD 功能:使DF=1。 6)CLI 功能:使IF=0。 7)STI 功能:使IF=1。

  41. 2、空操作指令 NOP 3、暂停指令 HLT 4、等待指令 WAIT 5、Escape指令 ESC ext_op,src 6、锁定指令 LOCK

More Related