微机原理-大连理工李卓涵--第3章

上传人:飞*** 文档编号:5993218 上传时间:2017-08-07 格式:PPT 页数:62 大小:453KB
返回 下载 相关 举报
微机原理-大连理工李卓涵--第3章_第1页
第1页 / 共62页
微机原理-大连理工李卓涵--第3章_第2页
第2页 / 共62页
微机原理-大连理工李卓涵--第3章_第3页
第3页 / 共62页
微机原理-大连理工李卓涵--第3章_第4页
第4页 / 共62页
微机原理-大连理工李卓涵--第3章_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《微机原理-大连理工李卓涵--第3章》由会员分享,可在线阅读,更多相关《微机原理-大连理工李卓涵--第3章(62页珍藏版)》请在金锄头文库上搜索。

1、指令系统,第三章 指令系统,指令系统基本概念,第3.1节 8086寻址方式 指令是使计算机执行某种特定操作的二进制编码 指令系统是所有指令的集合 一条指令通常包括两部分操作码:规定所要执行的操作类型操作数:所需要处理的数据或者数据的地址信息 获得数据或者数据地址信息的方式称为寻址方式例:MOV AX, 1234H 指令中有两个操作数,将前者称为目的操作数,后者称为源操作数,该指令将1234H传送到寄存器AX中。,CPU内部操作数寻址,一. 数据寻址方式1. 立即数寻址 指令中直接给出操作数,指令执行时可以立即得到,此时把操作数又称作“立即数” 例:MOV AL,5 ;AL52. 寄存器寻址 操

2、作数放在CPU内部的寄存器中,在指令中直接指出寄存器的名字 例:INC CX ;将CX的内容加13. 隐含寻址 指令已经默认是对CPU中的某个寄存器操作 例:DAA;默认对AL进行十进制加法调整 以上三种方式均直接从CPU内部获得数据,操作速度快,存储器操作数寻址,4. 直接寻址 操作数放在存储器中,存储单元的有效地址直接由指令给出 例:MOV SI, 2000H ;SI(2000H,2001H) CPU执行单元EU根据指令的寻址方式计算出16位的偏移量,称为有效地址(EA),一般用 有效地址 表示。5. 寄存器间接寻址 操作数一定在存储器中,存储单元的有效地址由寄存器指出, 寄存器可以为BX

3、、BP、SI、DI, 例:MOV AX, BX,若BX=3000H,则把(3000H,30001H)两个单元的数据传送给AX,存储器操作数寻址,若需要对其它段寻址,则必须用前缀指出段寄存器名,又称“段超越” 例: MOV BL, ES:SI ;BL 扩展段1000H单元的内容 注:IP只能在代码段寻址,SP只能在堆栈段寻址,不能进行段超越6. 寄存器相对寻址 操作数的有效地址由寄存器内容加上一个8位或16位的偏移量得到 例:MOV AX, BX+1000H ;AX BX+1000H 所指向的存储单元内容 若BX = 2000H,则将数据段(3000H, 3001H)的内容传送给AX 指令也可书

4、写为: MOV AX, 1000HBX 7. 基址变址寻址 操作数的有效地址由基址寄存器和变址寄存器的内容相加产生 例:MOV AX, BP+SI ;AX(BP+SI)8. 相对基址变址寻址 操作数的有效地址由基址寄存器、变址寄存器和偏移量三者相加产生 例:MOV AX, BX+SI+1000H;AX(BX+SI+1000H),相对基址变址在数组访问中的应用例:若访问堆栈段中的数组A100时,可以用BP存放栈顶地址,用偏移量表示数组中第一个元素到栈顶的距离,用变址寄存器SI(或DI)指向具体数组元素 第48种寻址方式,操作数一定在存储器中,由于计算EA、总线操作需要时间,因此比13方式慢,相对

5、基址变址寻址应用,I/O端口寻址,二. I/O端口寻址 操作数在I/O端口中时,必须通过累加器(AX或AL)实现对端口的访问1. 直接端口寻址 指令直接提供8位端口的地址 例:IN AL, 63H ;AL(63H) 端口寻址时,地址不加 ,当端口地址可用一个字节来表示时,可使用直接端口寻址2. 间接端口寻址 由DX寄存器给出16位端口地址 例:MOV DX, 162H IN AX, DX 从端口162H读取一个字的数据传送到AX中,DX间接表示端口地址 比较:MOV AX, DX ;AXDX IN AX, DX ;AX(DX),8086指令格式,第3.2节 8086指令格式指令格式指令一般由1

6、6个字节组成,具体格式如下:,1.字节1 OPCODE:指令操作码 D:操作数传输方向(立即数指令和串操作指令除外) D=0,Reg为源操作数 D=1,Reg为目的操作数 W:操作数字节长度 W=0,字节操作 W=1,字操作,指令格式,字节2,寻址方式MOD:寻址方式字段00存储器方式,指令中无偏移量01存储器方式,指令中有8位偏移量10存储器方式,指令中有16位偏移量11寄存器方式,指令中无偏移量Reg:寄存器编码字段000=AL/AX 100=AH/SP 001=CL/CX 101=CH/BP 010=DL/DX 110=DH/SI 011=BL/BX 111=BH/DI,指令格式,R/M

7、:寄存器/存储器字段在MOD=11,寄存器模式下,R/M给出第二个操作数的寄存器编码在MOD11,存储器模式下,R/M给出计算有效地址的方法,R/M,W=0,W=1,R/M,MOD=00,MOD=01,MOD=10,000,AL,AX,000,BX+SI,BX+SI+D8,BX+SI+D16,001,CL,CX,001,BX+DI,BX+DI+D8,BX+DI+D16,010,DL,DX,010,BP+SI,BP+SI+D8,BP+SI+D16,011,BL,BX,011,BP+DI,BP+DI+D8,BP+DI+D16,100,AH,SP,100,SI,SI+D8,SI+D16,101,CH

8、,BP,101,DI,DI+D8,DI+D16,110,DH,SI,110,直接地址,BP+D8,BP+D16,111,BH,DI,111,BX,BX+D8,BX+D16,MOD=11,MOD,11,有效地址计算方法,指令格式,字节3字节6DISP:存储器操作数地址偏移量,长度由MOD字段定义DATA:指令中的立即数例:MOV AX, BX 指令码为:8B 07 MOV BX+SI+2000H, 2345H 指令码为:C7 80 00 20 45 23 MOV AX, BX 指令码为:89 D8,8086指令介绍,第3.3节 8086指令介绍8086 CPU共有133条指令,根据操作性质,可分

9、为:传输指令算术运算指令逻辑运算和移位指令串操作指令控制转移指令操作数的符号表示DST:目的操作数SRC:源操作数TARGET:循环、转移和调用指令中的目的操作数,操作数的符号表示,操作数的符号表示REG: 寄存器操作数,字节或字REG8: 8位寄存器操作数,字节REG16: 16位寄存器操作数,字MEM: 存储器操作数,字节或字MEM8: 8位存储器操作数,字节MEM16:16位存储器操作数,字MEM32:32位存储器操作数,双字ACC: 累加器AL或AXSEG_REG:段寄存器IMM: 立即操作数,字节或字IMM8: 立即操作数,字节IMM16: 立即操作数,字SHORT_LABEL:短标

10、号,8位偏移量NEAR_LABLE: 近标号,16位地址或偏移量FAR_LABLE: 远标号,32位地址,传送类指令,数据传送类指令(一)通用数据传送指令MOV DST, SRC操作:DSTSRC说明:DST和SRC的组合关系是:REG/MEM IMMREG/MEM REGREG/MEM SEG_REGCS、IP和立即数不能做目的操作数不能在两个存储单元之间直接传送MOV指令不改变源操作数,不影响FLAG的状态标志数据位数由寄存器决定或用说明符指出(如例所示)SS修改后,下一条指令执行完才检测中断,修改SS和SP一定要连续进行,例:MOV AX, 1000 MOV BP, AX MOV ES,

11、 DX MOV word ptr SI, 1000 MOV byte ptr SI, AL MOV CS, 100H 错误 MOV 1000H, 2000H 错误,传送类指令,(二)堆栈操作SP总是指向栈顶,即最后压入堆栈的信息单元PUSH SRC 进栈指令操作:SP SP-2,(SP+1, SP) SRC具体指令:PUSH REG16 PUSH SEG_REG PUSH MEM16POP DST 出栈指令操作:DST (SP+1, SP),SP SP+2具体指令:POP REG16 POP SEG_REG POP MEM16说明:堆栈操作以字为单位,按后进先出原则存储数据 POP出栈操作时,

12、CS不能为目的操作数,例:PUSH BX PUSH CS PUSH SI PUSH 1000 错误,例:POP AX POP ES POP SI POP CS 错误,传送类指令,堆栈的应用 堆栈主要用于子程序调用、中断子程序的现场保护和恢复、参数传递等。例:保护现场(保存存储器和恢复存储器次序应一一对应)Fun: PUSH DS PUSH ES PUSH AX PUSH BX ;子程序处理 POP BX POP AX POP ES POP DS RET,传送类指令,(三)交换指令XCHG 指令格式:XCHG DST, SRC操作:DST SRC说明:两个操作数必须有一个在寄存器中,可在寄存器之

13、间、寄存器与存储器之间交换信息,目的操作数DST不能为CS具体指令:XCHG REG, REGXCHG REG, MEMXCHG MEM, REG 例:XCHG AL, byte ptr 2000H ; AL(2000H) XCHG AX, DX XCHG AX, CS 错误,传送类指令,(四)I/O端口传送指令IN 输入指令操作:AL/AX (PORT)/(DX),PORT为8位直接端口地址具体指令: INAL, PORT INAX, PORT INAL, DX INAX, DXOUT 输出指令操作:(PORT)/(DX) AL/AX,PORT为8位直接端口地址具体指令: OUT PORT, AL OUT PORT, AX OUT DX, AL OUT DX, AX说明:I/O端口地址有直接寻址和间接寻址(通过DX)两种寻址方式 对I/O端口操作必须通过累加器AX或AL来完成,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号