微机原理第3章-指令系统.ppt
《微机原理第3章-指令系统.ppt》由会员分享,可在线阅读,更多相关《微机原理第3章-指令系统.ppt(239页珍藏版)》请在三一办公上搜索。
1、及,秦红磊 金天,微机原理,接口技术,第三章 微处理器指令系统(Instruction Set),第一节:指令的基本格式第二节:8086的寻址方式第三节:8086的指令系统第四节:其它微处理器的指令扩展第五节:中断指令和DOS系统功能调用,指令系统是计算机硬件和软件之间的桥梁,是汇编语言设计的基础。,操作码 操作数,汇编指令:,操作码:指令操作类型;操作数:指令所需操作数或操作数的地址;操作数可以有一个,也可以有两个,一个源操作数,一个目的操作数。例:MOV AX,CX;将CX的内容送入AX中。,微机算机处理器的指令由几十种或上百种组成,每种指令由两个字段(Field)构成:,第一节 指令的基
2、本格式,第二节 8086的寻址方式,8086的寻址方式是指寻得操作数来源得方式,有以下几种:1.立即数寻址(Immediate Addressing)2.寄存器寻址(Register Addressing)3.直接寻址(Direct Addressing)4.间接寻址(Indirect Addressing),存储器寻址,由指令字节给出的信息求出操作数的地址称为有效地址EA(Efficient)寻找(得到)操作数有效地址的方法称为操作 数的寻址方法 寻找(得到)操作数有效地址和存取操作数的过程称为指令的寻址操作,指令操作数部分直接给出指令的操作数,操作数与操作码一起存入代码段中。立即数有8位和
3、16位。例:MOV AL,05H;源操作数为立即寻址 指令执行后,AL=05H,8位数据05H存入AL寄存器。例:MOV AX,3064H;源操作数为立即寻址 指令执行后,AX=3064H,16位数据3064H存入AX寄 存器。,1.立即数寻址(Immediate Addressing),立即数寻址、寄存器寻址的操作数,不用在取完指令后再到内存中取数。寻址方式。其它寻址方式 操作数存放在内存中,取完指令后,还需到内存取数,指令中给出的是该操作数的地址,包括段地址和偏移地址。,CPU 总线 内存,寄存器寻址方式的操作数是寄存器的值,指令中直接使用寄存器名,包括8位或16位通用寄存器和段寄存器。可
4、使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、BP;其中:AX、BX、CX、DX可分成两8位使用。例:MOV AX,CX;(AX)(CX)INC CX;(CX)(CX)1,2.寄存器寻址(Register Addressing),直接寻址方式的操作数的形式为:Variable或Variable在直接寻址方式中,操作数的偏移地址(有效地址EA)直接用指令加以指定(有直接地址值和标号两种形式)。它存放在代码段中指定操作码之后,但操作数一般存放在存储器的数据段中,所以必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。段地址隐含的由DS 指定,也可以ES指定,但需在指令中指明
5、。最后存储器地址为:DS:偏移地址 或 ES:偏移地址。例:MOV AX,ES:2000H 将ES:2000H单元内容送入AX。例:MOV AX,LABLE 或 MOV AX,LABEL 将标号为LABLE(存放操作数单元的符号地址),即 DS:LABLE中的内容送入AX。,3.直接寻址(Direct Addressing),例:MOV AX,1000 H 若(DS)=2000H 内存操作数的物理地址为:PA=(DS)10H+EA=2000H 10H+1000H=21000H 执行后(AX)=3040H,思考:指令 MOV AX,1000H 与MOV AX,1000H有什么不同?,4.间接寻址
6、(Indirect Addressing),按给出偏移地址方式的不同,分为以下5种:寄存器间接寻址 MOV AL,BX 寄存器相对寻址 MOV AL,BX+10H 基址加变址寄存器 MOV AL,BX+SI 相对基址加变址寄存器 MOV AL,BX+SI+10H,(1)寄存器间接寻址 寄存器间接寻址方式的操作数形式为:reg 操作数的有效地址包含在基址寄存器BX,基址指针BP或一 个变址寄存器(SI或DI)中。寄存器间接寻址要用方括号括起来,以便与寄存器操作数相区别。例:MOV AX,BX;将由BX决定的存储单元的内容送到AX寄存器。,0000,0001,0002,0003,CC,AA,TAB
7、:,AH AL,AA BB,数据段,0002,BX,BB,使用BX、SI、DI的寄存器寻址,默认段寄存器为DS,例:MOV AX,DI 若(DS)=3000H(DI)=2000H 则内存操作数的物理地址为:PA=(DS)10H+(DI)=32000H 执行后(AX)=(32000H)=400BH,思考:指令 MOV AX,DI 与MOV AX,DI有什么不同?,用 SI、DI、BX、BP作为间接寻址允许段跨越 指令中可以指定段跨越前缀来取得其他段中的数据。例:MOV ES:DI,AX MOV DX,DS:BP这种寻址方法可以用于表格处理。,(2)寄存器相对寻址方式 操作数在存储器内,指令中寄存
8、器内容与指令指定的位移量(DISP)之和作为操作数所在单元的有效地址。(BX)DISP8(SI)(DI)(BP)DISP16,有效地址=,段寄存器为DS,段寄存器为SS,+,物理地址=(DS)*16+(BX)+DISP8(SI)、(DI)、DISP16类同。物理地址=(SS)*16+(BP)+DISP16,操作数 有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16位位移量(displacement)之和。可 用的寄存器有 BX、DI、SI、BP,与寄存器间接寻址相同 如:MOV AL,BX+10H MOV AH,DI+20H MOV DL,30H SI MOV DH,40H BP,例
9、:MOV AX,BX+30H 若(DS)=2000H(BX)=1000H 则内存操作数的物理地址为:PA=(DS)10H+(BX)+30H=21030H 指令执行后:(AX)=(21030H)=8976H,(3)基址变址寻址方式:操作数在存储器中,指令将基址寄存器(BX或BP)与变址寄存器(SI或DI)内容之和作为操作数所在存储单元的有效地址。,(BX)(SI)(BP)(DI),EA=,+,PA=(DS)*16+(BX)+(SI)或(DI)PA=(SS)*16+(BP)+(SI)或(DI)例:MOV AX,BX+DI 或 MOV AX,BXDI DS:(BX)+(DI)字存储单元内容送AX。例
10、:MOV AX,BP+SI 或 MOV AX,BPSI SS:(BP)+(SI)字存储单元内容送AX。,默认段寄存器由基址寄存器决定,允许段跨越。基址寄存器为BX,默认段寄存器为DS(SI)PA=(DS)10H+(BX)+(DI)基址寄存器为BP,默认段寄存器为SS(SI)PA=(SS)10H+(BP)+(DI),使用BX的基址加变址寻址,默认段寄存器为DS,例:MOV AX,BX+SI 若(DS)=4000H(BX)=2000H(SI)=100H 则内存操作数的物理地址为:PA=(DS)10H+(BX)+(SI)=42100H 指令执行后(AX)=(42100H)=2345H,(4)相对基址
11、变址寻址方式 操作数在存储器内,指令将基址寄存器(BX或BP)与变址寄存器(SI或DI)的内容之和再加上位移量(8位或16位),得到操作数所在单元的有效地址。(BX)(SI)DISP8(BP)(DI)DISP16,有效地址=,+,+,例:MOV AX,BX+SI+10H 若(DS)=4000H(BX)=3000H(SI)=200H 则内存操作数的物理地址为:PA=(DS)10H+(BX)+(SI)+10H=43210H 指令执行后(AX)=(43210H)=8877H,第三节 8086的指令系统,8086的指令系统包含133条基本指令,这些指令功能可以分为6类:1.数据传送指令(Data tr
12、ansfer)2.算术运算指令(Arithmetic)3.逻辑指令与移位指令(Logic&Shift)4.控制转移指令(Control transfer)5.处理机控制指令(Processor Control)6.串操作指令(String manipulation),一.数据传送指令 数据传送指令是最简单、最常用的一类指令,它是负责把数据、地址、或立即数传送到寄存器或存储单元中。,寄存器,存储器,I/O端口,按传送内容,可分为四类:,1。通用数据传送 MOV,PUSH,POP,XCHG2.累加器专用传送 IN,OUT,XLAT 3.地址传送 LEA,LDS,LES4.标志传送 PUSHF,PO
13、PF,LAHF,SAHF,特点:1.除POPF、SAHF外,其他传送指令对标志位均无影响 2.唯一允许以段寄存器做操作数的指令 且只有MOV、PUSH、POP这三条允许,1.通用传送指令 MOV、PUSH、POP、XCHG,(1)MOV传送指令 格式 MOV dst,src 执行(dst)(src),例:reg/mem/segreg reg 通用寄存器/存储器/段寄存器通用寄存器 MOV AL,BL MOV BX,AL MOV DS,AX reg/segreg mem 通用寄存器/段寄存器 存储器 MOV AL,BX MOV DS,BX+SI reg/mem segreg 通用寄存器/存储器
14、段寄存器 MOV BX,CS MOV BX,DS reg/mem data 通用寄存器/存储器 立即数 MOV Al,9 MOV BX,OFFSET buffer MOV BYTE PTR value,0 MOV WORD PTR BX,1,MOV指令特点及注意事项:双操作数指令(注意双操作指令的特点)可进行字节或字传送 不允许存储器传送到存储器MOV BX,value MOV DI,SI MOV AX,value MOV BX,AXMOV AL,SI MOV DI,AL,MOV指令应用例:实现将AREA1开始的100个数据传送到AREA2开始的单元。,AREA1:,AREA2:,100个数据
15、,分析题意:可以用200条MOV指令来完成100个数据传送,指令操作重复,每个数据传送后的地址是变化的。可以利用循环,但每循环一次要修改地址(源地址和目的地址),必须把地址放在寄存器当中,用寄存器间接寻址来寻找操作数.,得到如下程序:MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,100AGAIN:MOV AL,SIMOV DI,AL INC SI;修改地址指针 INC DI;修改地址指针 DEC CX;修改个数 JNZ AGAIN,(2)PUSH(Push word onto stack)POP(Pop word off stack)这是两条堆栈
16、操作指令。1)先介绍一下什么是堆栈,为什么需要堆栈 堆栈是按照先进后出原则组织的一段内存区域。通常用于存放一些重要数据,如:程序的地址、或是需要恢复的数据。为方便数据的存放和恢复,设置专门的指针,指向堆栈中要操作的单元。段值由 SS 给出,偏移地址由 SP 给出 SS 堆栈段寄存器(stack segment)SP 堆栈指针寄存器(stack point),SS:SP,特点:下推式的(规定堆栈设置在堆栈段内)改变SP的内容,随着推入堆栈内容增加,SP的值减少。先进后出工作原则(Last In First Out 简称LIFO)堆栈在内存中的情况:,堆栈在内存中的情况:可以用一条立即数传送指令给
17、SP赋值,确定SP在SS段中的初始位置。例:设:(SS)=9000H,堆栈段为64KB MOV SP,0E200H;(SP)=0E200H则:整个堆栈段的物理地址范围为:90000H9FFFFH 栈顶的物理地址为:9E200H堆栈在内存中的情况如右图所示:,堆栈在内存中的情况,2)堆栈操作指令(堆栈操作指令有两条):入栈指令格式:PUSH src;(SP)(SP)-2(SP)+1,(SP)(src)把一个字从源操作数(src)由SP指向堆栈顶部。出栈指令格式:POP dest;(dest)(SP)+1,(SP)(SP)(SP)+2把现行SP所指向堆栈顶部的一个字 指定的目的操作数(dest),
18、同时进行修改堆栈指针的操作。,SS:SP,SS:SP,(dst),PUSH 入栈操作格式 PUSH src 执行(SP)(SP)-2(SS:SP)(src),特点:单操作数指令 操作数为16位,可以是reg/segreg/mem,不可以是datareg:AX,BX,CX,DX,SI,DI,BP,BXsegreg:CS,DS,ES,SSmem:字类型,例:PUSH AX,不变 减2 变不变,特点:单操作数指令操作数为16位,可以是reg/segreg/mem,不可以是datareg:AX,BX,CX,DX,SI,DI,BP,BXsegreg:DS,ES,SS,不允许是CSmem:字类型,POP出
19、栈操作,SS:SP,SS:SP,(dst),格式 POP dst 执行(dst)(SS:SP)(SP)(SP)+2,例:POP BX,不变 加2 变 变,堆栈使用的场合 用堆栈保存恢复信息 子程序的调用、返回以及中断调用、返回 用堆栈传送数据(程序设计中介绍),主程序 子程序:子程序:在一个实际程序中,有些操作要执行多次,把要重 复执行(subroutine)操作编为子程序。也常把一些常用的操作标准化、通用化的子程序。主程序(Main program)往往要调用子程序 或处理中断,暂停主程序,执行子程序或中断服务程序。,调用子程序时需保留内容:调用子程序:将CALL下条指令地址即IP值保留下来
20、(8088中码段寄存器CS和指令指针IP),才能保证子程序执行完后准确返回主程序继续执行。执行子程序时,通常用到内部寄存器,执行结果会影响标志位,必须在调用子程序之前将现状保护起来。子程序嵌套或子程序递归(自调自)保留许多信息,而且保证正确返回(且后进先出)。后保留先取出原则(即LIFO-LAST In First out)。,注意:SP堆栈指针,始终指向栈顶。SP初值用MOV SP,data来设定。下边详细说明一下堆栈用途:,存放CPU寄存器或存储器中暂时不使用的数据,使用数据时将其弹出:PUSH AX;将(AX)入栈,(AX),(AX),使用数据时将其弹出:POP BX,调用子程序(或过程
21、)或发生中断时要保护断点的地址,子程序或中断返回时恢复断点。,子程序嵌套,断点地址压入和弹出情况,自学堆栈应用:比较下边两个程序运行结果?,例:用BP的基址指令 代替POP指令MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP,6,例:压入堆栈的内容与弹出内容顺序相反PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX,(3)XCHG交换指令 格式 XCHG oprd1,oprd2 执行(oprd1)(oprd2),reg regreg memmem reg,可实现,例 XCH
22、G AX,BX 字操作 执行前(AX)=1122H(BX)=3344H 执行后(AX)=3344H(BX)=1122H 例 XCHG AH,BL 字节操作 执行前(AX)=1122H(BX)=3344H 执行后(AX)=4422H(BX)=3311H,XCHG oprd1,oprd2 注意事项:双操作数指令可进行字或字节操作,不影响标志位。不允许对立即数、段寄存器做操作数 XCHG AX,4 XCHG BX,DS 存储器之间不能交换,两个操作数中必须有一个在寄存器中;XCHG BX,DI(错),(1)输入输出指令(Input and Output)输入输出指令共两种:IN(Input byte
23、 or word)OUT(Output byte or word)输入指令用于CPU从外设端口接受数据,输出指令用于CPU向外设端口发送数据。无论接受还是发送数据,必须通过累加器AX(字)或AL(字节),又称累加器专用传送指令。输入、输出指令不影响标志位。,2.累加器专用传送指令,每个外设要占几个端口:数据口,状态口和控制口。,由图可见:信息交换要通过端口:在IBMPC机里,可以配接许多外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有65536个I/O端口。A0A15译码形成。端口号:端口号(即外设端口地址)为0000HF
24、FFFH。PC机端口数:仅使用A0A9译码形成I/O口地址,即1024H个口地址PC机端口号:0000H03FFH 其中:A9=1,表示扩充槽上的口地址。,长格式:端口号中前256个端口(0FFH),可以直接写在指令中,端口号代替指令中的PORT,机器指令用二字节表示,第二字节就是端口号。短格式:当端口号256时,只能使用短格式,必须先把端口号放到DX寄存器中。不需要用任何段寄存器来修改它的值。,1)IN(Input byte or word)输入指令格式:IN acc,port;(acc)(port)具体形式有四种:长格式:IN AL,data8;端口地址8位,输入一个字节 IN AX,da
25、ta8;端口地址8位,输入一个字短格式:IN AL,DX;端口地址16位,输入一个字节 IN AX,DX;端口地址16位,输入一个字 必须通过累加器AX(字)或AL(字节)输入数据。,2)OUT(Output byte or word)输出指令格式:OUT port,acc;(port)(acc)具体形式有四种:长格式:OUT data8,AL;端口地址8位,输出一个字节 OUT data8,AX;端口地址8位,输出一个字短格式:OUT DX,AL;端口地址16位,输出一个字节 OUT DX,AX;端口地址16位,输出一个字 必须通过累加器AX(字)或AL(字节)输出数据。,例1:实现(29H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 指令系统
链接地址:https://www.31ppt.com/p-6284484.html