微型计算机原理03.ppt
第三章 8086的寻址方式和指令系统2,本章内容,8086的寻址方式 指令的机器码表示法 8086的指令系统,3,3-1 8086的寻址方式,指令与指令格式 指令寻址方式4,指令,机器指令 以二进制代码(机器码)表示指令 直接,不易读懂 汇编指令 以符号形式表示指令 易读,需要翻译(汇编) 与CPU相关,5,指令成分,操作码(操作的性质) 表示指令应完成的具体操作 以助记符的形式表示 操作数(操作的对象) 表示指令的操作对象(参与操作的对象) 源操作数、目的操作数,6,指令操作数,双操作数 OPR DEST,SRC 单操作数 OPR DEST 无操作数 OPR (隐含操作数)7,寻址方式及操作数类型,寻找指令中所需操作数的方法 所需的操作数 寄存器操作数 存储器操作数 立即数操作数 输入/输出端口操作数,8,指令寻址方式,立即数寻址 寄存器寻址 存储器寻址 直接寻址 寄存器间接寻址 变址寻址 基址寻址 基址变址寻址 I/O寻址9,寻址方式立即数寻址,指令中直接给出操作数本身 八位 / 十六位的常数 仅用作源操作数的寻址 MOV AX,1000H; AX1000H MOV AH,10H; AH10H,10,寻址方式立即数寻址,MOV CX,2A50H11,寻址方式寄存器寻址,所需的操作数在CPU的寄存器中,指令中给出该寄存器的名称 八位 / 十六位寄存器 速度较快 MOV AX,BX;AX(BX) MOV AH,AL;AH(AL)12,寻址方式直接寻址,所需的操作数在存储器中。 指令中直接给出操作数所在单元的有效地址(段内偏移地址) MOV AX,1000H; AX DS1000H MOV 1000H,AH; DS1000HAH,13,寻址方式直接寻址,MOV AX,2000H14,寻址方式寄存器间接寻址,所需的操作数在存储器中。 操作数所在单元的有效地址存放在寄存器中,指令中给出寄存器的名称 仅限于BX、BP、SI、DI MOV AX,BX;AX DSBX MOV AH,BP;AH SSBP,15,寻址方式寄存器间接寻址,MOV BX,SI16,寻址方式变址寻址,所需的操作数在存储器中 变址寄存器SI、DI 操作数所在单元的有效地址 变址寄存器内容 指令中给出的相对位移 MOV AX,2DI;AX DSDI2 MOV AX,DI2;AX DSDI2,17,寻址方式变址寻址,MOV BX,COUNTSI18,寻址方式基址寻址,所需的操作数在存储器中。 基址寄存器BX、BP 操作数所在单元的有效地址 基址寄存器内容 指令中给出的相对位移 MOV AX,2BX;AX DSBX2 MOV AX,BX2;AX DSBX219,寻址方式基址变址寻址,所需的操作数在存储器中。 操作数所在单元的有效地址 基址寄存器内容 变址寄存器内容 指令中给出的相对位移 MOV AX,2BXDI; AX DSBXDI2,20,寻址方式基址变址寻址,MOV AX,BXSI,21,寻址方式基址变址寻址,MOV AX,MASKBXSI,22,寻址方式存储器寻址小结,指令中给出地址表达式,有效地址EA 由三部分组成(可选) 相对位移Disp 基址寄存器BX/BP 变址寄存器SI/DI23,寻址方式输入/输出寻址,输入输出端口操作数 直接寻址 指令中直接给出I/O端口地址的低八位,只能访问256个I/O端口00HFFH IN AL,2FH 间接寻址 用寄存器DX的内容来指定I/O端口地址 适用十六位地址,能访问64K个I/O端口0000HFFFFH IN AL,DX24,3-2 指令的机器码表示法,机器码 二进制机器语言指令 变长指令指令 指令的长度为16个字节 操作码 操作数 字/字节 寄存器.,25,指令编码,MOV SP,BX,26,指令编码,MOV Word ptr BX2100H,0FA50H27,3-3 8086的指令系统,数据传送指令 算术运算指令 逻辑运算及移位指令 字符串处理指令 控制转移指令 处理器控制指令28,数据传送指令,共14条 寄存器寄存器 寄存器存储器 累加器I/O端口 字传送/字节传送 除了SAHF/POPF外,均不影响PSW,29,数据传送指令,通用数据传送指令 输入输出指令 地址目标传送指令 标志传送指令30,通用数据传送指令,MOV DEST,SRC PUSH SRC POP DEST XCHG DEST,SRC XLAT,31,通用数据传送MOV32,通用数据传送MOV,规则 立即数不能作DEST 立即数不能传至段寄存器 存储器之间不能交互双操作数时串除外 段寄存器之间不能交互 CS不能作为DEST IP不能参与传送 DEST和SRC的类型必须一致,33,通用数据传送PUSH/POP,字操作 16位操作数 通用寄存器 段寄存器CS不能用于POP 存储器 FILO SP指向栈顶 底部高地址/顶部低地址,34,通用数据传送XCHG,8位/16位操作数交换 寄存器寄存器 寄存器存储器 段寄存器不能参与,35,通用数据传送XLAT,查表 DS10H BX AL AL BX表首 AL表内偏移值自变量36,输入输出指令,累加器AX/ALI/O端口 输入指令IN 输出指令OUT,37,输入输出指令IN,IN AL,34H ;34HAL IN AX,34H ;34HAL ;35HAH IN AL,DX ;DXAL IN AX,DX ;DXAL ;DX1AH38,地址目标传送指令,LEA DEST,SRC LDS DEST,SRC LES DEST,SRC 其中 DEST16位通用寄存器除了段寄存器 SRC存储器操作数地址表达式,39,地址目标传送LEA,LEA BX,1000HBXSI 1000H BX SI BX有效地址段内偏移地址,40,地址目标传送LDS,LDS SI,1000HBXSI,41,地址目标传送LES,LES DI,1000HBXSI42,标志传送指令,LAHF SAHF PUSHF POPF 隐含操作数 影响PSW43,算术运算指令,操作数 带符号二进制数补码 无符号数二进制数 无符号压缩十进制数 无符号非压缩十进制数,44,算术运算指令,加法 减法 乘法 除法,45,加法运算指令,ADD DEST,SRC ADC DEST,SRC INC DEST AAA DAA,46,减法运算指令,SUB DEST,SRC SBB DEST,SRC DEC DEST NEG DEST CMP DEST,SRC AAS DAS,47,乘法运算指令,MUL SRC IMUL SRC AAM,48,除法运算指令,DIV SRC IDIV SRC AAD CBW CWD49,逻辑运算及移位指令,逻辑运算 算术移位 循环移位50,逻辑运算,按位运算 NOT DEST ;不影响标志位 AND DEST,SRC OR DEST,SRC CF/OF0 XOR DEST,SRC AF无效 TEST DEST,SRC ZF/SF/PF有效,51,算术移位,SHL DEST,计数值 SHR DEST,计数值 SAR DEST,计数值 计数值大于1时,必须使用CL作计数器52,循环移位,ROL DEST,计数值 ROR DEST,计数值RCL DEST,计数值 RCR DEST,计数值,53,串处理指令串操作,批量数据处理 串 一系列存放在存储器中的字或字节数据 最大串长64KB 串元素 串中的成员 每种串操作指令只对串中的元素作同一种操作,54,串处理指令串操作55,串处理指令串操作,串指令的操作 源串位于DS段内可以使用段前缀,偏移量由SI给出 目的串位于ES段内不允许使用段前缀,偏移量由DI给出 每次执行后修正SI/DI,增减方向由DF确定DF1减量;DF0增量。STD/CLD 串的长度字节/字数存放在CX中 可以在存储器之间操作,56,串处理指令串操作,串操作 单次操作 按指令内容执行一次操作 修正SI/DI 重复操作 REP前缀 重复指令串指令规定的操作,直至次数到或条件成立 如 REP MOVS,57,串处理指令串操作,MOVS DS10HSIES10HDI if DF1 then SI - 1SI,DI - 1DI else SI 1SI,DI 1DI REP MOVS CX - 1CX if CX 0 then REDO else Continue,58,串处理指令串操作,CMPS串比较 SCAS串扫描指令 将AX或AL中的数据与目标串中的数据比较 用作数据搜索 LODS数据串装入 将源串中的数据单个装入AX或AL中 重复前缀无实际意义 STOS串存储 将AX或AL中的数据存入目的串单元中 可加重复前缀,59,串处理指令串操作,重复前缀 REP REPE/REPZ REPNE/REPNZ60,控制转移指令,程序转移 改变CSIP或IP JMP/J CALL/RET LOOP/LOOP,61,控制转移指令无条件转移,JMP 目标,62,控制转移指令无条件转移,JMP DWORD PTR SI0125H CS1200H,IP0005H DS2500H,SI1300H 26425H4500H,26427H32F0H,63,控制转移指令无条件转移64,控制转移指令子程序调用,CALL 过程名 断点入栈转移改变CSIP RET 断点出栈CSIP CALL 段内/段间 直接/间接,65,控制转移指令子程序调用,段内直接 目标地址的偏差在指令中 CALL PROG_G CS2000H,IP1050H SS5000H,SP0100H DISP1234H IPIP DISP,66,控制转移指令子程序调用67,控制转移指令子程序调用,段内间接 CALL BX 目标地址在寄存器中 CALL WORD PTR BXSI 目标地址在存储器中,68,控制转移指令子程序调用,段间直接 目标地址在指令中 CALL FAR PTR PROG_F CS1000H,IP205AH SS2500H,SP0050H PROG_F位置CS3000H,IP0500H,69,控制转移指令子程序调用,70,控制转移指令子程序调用,段间间接 CALL DWORD PTR BX 目标地址存放在存储器中,71,控制转移指令条件转移,根据标志寄存器的状态来决定是否转移 相对转移 在IP上叠加位移八位 段内 J 目标,72,控制转移指令条件转移73,控制转移指令条件转移74,控制转移指令循环,重复执行循环体内的指令 LOOP 目标 CX为循环次数 相对转移,75,控制转移指令循环,LOOP LOOPE/LOOPZ LOOPNE/LOOPNZ JCXZ76,处理器控制指令,77,课堂练习78,课堂练习