《微机原理与接口技术》课件第3章指令系统.pptx

上传人(卖家):momomo 文档编号:5993241 上传时间:2023-05-19 格式:PPTX 页数:36 大小:717.35KB
下载 相关 举报
《微机原理与接口技术》课件第3章指令系统.pptx_第1页
第1页 / 共36页
《微机原理与接口技术》课件第3章指令系统.pptx_第2页
第2页 / 共36页
《微机原理与接口技术》课件第3章指令系统.pptx_第3页
第3页 / 共36页
《微机原理与接口技术》课件第3章指令系统.pptx_第4页
第4页 / 共36页
《微机原理与接口技术》课件第3章指令系统.pptx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、第 3 章3.13.23.3微机原理与接口技术3.1 指令的基本格式1.1.操作码:操作码:表示计算机要执行的操作类型 如:MOV数据传送 IN 数据输入2.2.操作数:操作数:指令执行所需的数 1 1)大部分指令有大部分指令有2 2个操作数个操作数:目的操作数和源操作数 如:MOV AL,45H ;逗号前面的AL是目的操作数,后面45H是源操作数 2 2)少数指令只有一个操作数少数指令只有一个操作数,可能是源操作数,也可能是目的操作数 如:INC BX ;BX既是源操作数,又是目的操作数 PUSH AX ;AX是源操作数 POP AX ;AX是目的操作数 3 3)少数指令没有操作数少数指令没

2、有操作数 如:DAA ;加法的十进制调整指令,操作数隐含在AL中汇编指令由两部分组成:操作码汇编指令由两部分组成:操作码 操作数操作数 寻找操作数来源的方式,称为寻址方式,共6种。操作数的可能来源只有三个:(1)直接包含在指令中;立即寻址 (2)CPU的寄存器中;寄存器寻址 (3)存储器中。;4种寻址方式,具体是哪种方式,就看怎样表达存储器单元的地址 操作数来源不同,即寻址方式不同。3.1 指令的基本格式3.1 指令的基本格式3.1 指令的基本格式3.23.2 8086/8088 8086/8088 的寻址方式的寻址方式1、立即寻址立即寻址 例:MOV AL,34H MOV AX,3000H

3、特点:操作数是立即数,直接放在指令中 注意:立即数只能做源操作数3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式2、寄存器寻址、寄存器寻址 例:MOV AL,BL;MOV DS,AX;特点:操作数包含在寄存器中 注意:寄存器位数要一致 MOV AL,BX;MOV AX,BL;这两种寻址方式,数据都来源于这两种寻址方式,数据都来源于CPUCPU内部,无内部,无须访问总线,所以执行速度相对快。须访问总线,所以执行速度相对快。3.1 指令的基本格式3.1 指令的基本格式3.1 指令的基本格式3.23.2 8086/8088 8086/8088 的寻址方式的寻址方式 后面4

4、种寻址方式,操作数都来源于存储器。表3-1存储单元的表示方法。不同的表示方法,表示不同的寻址方式。3 3.直接寻址直接寻址 例:MOV AX,2000H 操作码00H20H34H12H32000H3000200032000H10H12H34HAXAHALDS+代码段数据段地址增图3-2 直接寻址示意图特点:操作数的偏移地址偏移地址2000H2000H直接在指令中物理地址物理地址PAPA的计算:的计算:默认PADSDS16+偏移地址例如:MOV AL,2000H ;此时,PADS16+2000H若有超越,则PA超越到的段寄存器16+偏移地址例如:MOV AX,ES:4000H;此时,PAES16

5、+4000H执行结果:AX=1234H3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式4 4.寄存器间接寻址寄存器间接寻址 例:MOV BX,SI 注意:1)可间接寻址的寄存器只有四个:BXBX、BPBP、SISI、DIDI。其中存放操作数所在的偏移地址 2 2)以)以SISI/DI DI/BX BX间接寻址时间接寻址时,默认默认DSDS段段 3 3)以以BPBP间接寻址时,间接寻址时,默认默认SSSS段段 PA=SS16+BP 4)允许段超越操作码00H30H45H23H13000H1000300013000H10H23H45HBXBHBLDS+代码段数据段地址增

6、图3-3 寄存器间接寻址示意图MOV BX,SIDS=1000H,SI=3000H结果:BX=2345H3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式MOV BX,SS:SI5 5.变址寻址变址寻址寄存器间接寻址的基础上加一个8/16位的偏移量,注意事项同上 操作码00H40H78H56H36000H3000H2000H36000H10H56H78HBXBHBLDS+COUNT 4000H 代码段数据段地址增图3-4 变址寻址示意图 例:MOV BX,SI+4000H 设:DS=3000H,SI=2000H,位移量为4000H,(36000H)=5678H 则:P

7、A=DS16+SI+COUNT =30000H+2000H+4000H =36000H 执行结果为BX=5678H。3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式.基址加变址寻址基址加变址寻址例:MOV AX,BX+SI16位偏移量;红色部分加不加都可以 有的教材会把加红色部分称作相对基址变址寻址 注意:BXBP不能共存,SIDI不能共存 若用BX:默认操作数在数据段DS中 若用BP:默认操作数在堆栈段SS中 上例中:DS=3000H,BX=2000H,SI=5000H 则:PA=DS16+BX+SI=37000H 指令执行后,AX=5577H 该指令还可写成:M

8、OV AX,BXSI MOV AX,BX+DI+偏移量操作码77 H55 H37000 H3000H2000 H37000 H10H55 H77 HAXAHALDS代码段数据段地址增图 3-5 基址加变址寻址示意图BX操作码5000 H+SI3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式寻址方式小结(看源操作数,不用看目的操作数):立即寻址:MOV AX,3000H 寄存器寻址:MOV AX,BX 直接寻址:MOV AX,3000H 寄存器间接寻址:MOV AX,BX 变址寻址:MOV AX,BX+800H 基址加变址寻址:MOV AX,【BX+SI+900H】I

9、ntel 8086/8088指令系统共有133条基本指令,可分成6个功能组:数据传送类指令 算术运算类指令 逻辑运算类指令 串操作类指令 控制转移类指令 处理器控制类指令3.3.3 8088/8086 3 8088/8086的指令系统的指令系统六种格式:通用寄存器之间传送(r/r),MOV BL,AL MOV DI,AX 通用寄存器和段寄存器之间传送(r/SEG),MOV DS,AX MOV AX,ES 通用寄存器和存储单元之间传送(r/M),MOV AL,2000H MOV DI,AX 段寄存器和存储单元之间传送(seg/M),MOV DS,2000H MOV BX SI,SS;立即数到通用

10、寄存器(r Imm),MOV BX,2000H;立即数到存储单元(M Imm),MOV 4000H,30H;3.3.3 3.1.1 数据传送指令数据传送指令基本格式:基本格式:MOV MOV dstdst,srcsrc;将源操作数src传送到目的操作数dst;后面是注释,不参与编译;功能相当于复制相当于复制srcsrc,粘贴到,粘贴到dstdst,即src不变,dst被覆盖.位数一致 MOV AL,2000H;MOV AL,BX;MOV AX,BL;.不允许存储单元间传送数据 MOV 2000H,3000H;MOV DI,SI ;.不能用CS和IP作目的操作数 MOV CS,3000H;MOV

11、 IP,2000H;3.3.3 3.1.1 数据传送指令数据传送指令1 1通用数据传送指令通用数据传送指令 (1 1)MOVMOV传送指令传送指令 2)注意事项 段寄存器之间不能直接传送数据。MOV SS,DS;立即数不能作目的操作数。MOV 2000H,AX;MOV 34H,AL;不能向段寄存器送立即数 MOV DS,4000H;应改为:MOV AX,4000H;MOV DS,AX(2 2)堆栈指令)堆栈指令 入栈:PUSH PUSH src ;SP-2后,将src压入堆栈 出栈:OPOP dst ;当前栈顶2个数据弹出到dst,后SP+2 堆栈堆栈:用SS:SP管理,其地址表示当前栈顶单元

12、地址 SP总是指向栈顶 SP初值决定了栈的深度,栈深度栈深度 64kB 64kB。原则原则:操作数必须是1616位寄存器位寄存器/存储器存储器 PUSH AX PUSH AX ;PUSH AL ;PUSH 2345H;不可以是立即数 后进先出(LIFO)例:PUSH AX PUSH BX .POP BX POP AX 3.3.3 3.1.1 数据传送指令数据传送指令(3 3)交换指令)交换指令格式:XCHG XCHG dst,src;dst与src内容互换 是唯一的把源操作数也刷新了的汇编指令。交换可以发生在:通用寄存器之间、通用寄存器与存储器 例:XCHG AL,BL ;AL和BL数据互换

13、XCHG AL,2000H;AL与2000H;数据互换 3.3.3 3.1.1 数据传送指令数据传送指令注意:位数一致 XCHG AL,CX ;段寄存器和立即数不能作为一个操作数;XCHG DS,AX;XCHG BX,2000H;.不能在存储器与存储器之间交换数据 XCHG 3000H,2000H;3 3.地址目标传送指令地址目标传送指令LEALEA例如:LEA BX,table;将table的地址送到BX功能等价于 MOV BX,offset table比较下面三条指令:比较下面三条指令:MOV BXMOV BX,1700H ;1700H ;将1700H送到BXMOV BXMOV BX,17

14、00H;1700H;地址为1700H存储单元的内容送到BX,执行完BX=1700H单元的内容LEA BXLEA BX,1700H;1700H;地址为1700H存储单元的地址1700H送到BX,执行完BX=1700H 3.3.3 3.1.1 数据传送指令数据传送指令2 2累加器专用传送指令累加器专用传送指令 输入/输出指令(CPU与I/O口之间的数据传送)当I/O地址FFH时 IN AL,DX ;ALDX IN AX,DX ;AXDX+1DXOUT 同理如下 OUT OUT n,AL ;ALn OUT n,AX ;AXn+1n OUT DX,AL;ALDX OUT DX,AX;AXDX+1DX3

15、.3.3 3.1.1 数据传送指令数据传送指令 例:IN AL,86H;从86H端口读入一个字节到AL IN AX,0F0H;F0H口的数据到AL,F1H口的到AH MOV DX,280H;IN A L,DX ;端口280H读一个字节到AL OUT 83H,AL;AL内容输出到端口83H MOV DX,281H;OUT DX,AX ;AL到端口281H,AH到端口282H(2)换码指令XLATXLAT (表首地址);括号可有可无AL=(DS)16(BX)+(AL)条件:建立表格,有规律可查 BX指向表首地址AL存放待查的码执行XLAT后:转换后的结果存放在AL中。n常用于无规律的代码转换3.3

16、.3 3.1.1 数据传送指令数据传送指令例3-3 若十进制数字09的LED七段码(共阳极,小数点常亮)对照表如下表所示,试用XLAT指令求数字N(N=09)的七段码值。TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H.MOV BX,OFFSET TABLE ;table的偏移地址 MOV AL,N XLAT 若N=5,执行上述指令后AL=12H,若需输出,可采用OUT DX,AL,输出到LED显示数据传送类小结数据传送类小结1.通用传送类:MOV dst,src;PUSH src;src压入堆栈 POP dst;当前栈顶的内容弹出到dst XC

17、HG dst,src;dst与src内容互换2.累加器专用指令 IN AL/AX,n/DX OUT n/DX,AL/AX XLAT(表首地址)3.3.3 3.1.1 数据传送指令数据传送指令1加法指令 ADD ADD dst,src ;dstdst+src(2)ADCADC dst,src ;dstdst+src+CF(3)INC INC dst ;dst dst+1,不影响CF其中:dst:通用寄存器或存储器。src:通用寄存器、存储器或立即数 dst与src不能同为存储器影响OF、SF、ZF、AF、PF、CF(INC不影响CF)例:MOV AL,0FFH ADD AL,1;AL=00H,C

18、F=1 OF=0 SF=0,ZF=1,AF=1,PF=1MOV AL,0FFH INC AL ;AL=00H,CF不变,其他标志位同上3.3.3 3.2.2 算术运算指令算术运算指令加法调整指令(4)DAADAA;(5)AAA AAA;被调整的操作数隐含在AL中。例3-8 若AL=BCD 28,BL=BCD 47 ADD AL,BL ;执行完AL=6FH DAA ;执行完AL=75H,即28+47 若DAA换成AAA,执行后AX=0705H 2.减法类指令(Subtract)以下指令与加法类似(1)SUB SUB dst,src ;dst=dst-src (2)SBBSBB dst,src;d

19、st=dst-src-CF (3)DECDEC dst;dst=dst-1,不影响CF(4)DAS DAS(5)AASAAS3.3.3 3.2.2 算术运算指令算术运算指令比较指令是减法CMP CMP dst,src;比较之后产生分支结构 dst与src做差,但不产生结果,影响标 志位,以判断被比较的两数大小 例:CMP AL,60 JC FAIL;CF=1,转到FAIL JMP PASS;否则转到PASS算术运算类指令小结 加法:ADD、ADC、INCINC、DAA、AAA 减法:SUB、SBB、DECDEC、CMPCMP3.3.3 3.2.2 算术运算指令算术运算指令1逻辑运算指令:按位操

20、作按位操作 (1)取反指令:NOT NOT dst;dst按位取反(2)与、或、异或 指令 AND AND dst,src ;dst和src按位相与送dst ;与0相与,可实现按位清零按位清零 OROR dst,src ;按位相或送dst ;与1相或,可实现按位置按位置1 1 XORXOR dst,src ;按位异或,结果送dst ;与1相异或,实现按位取反按位取反注意:dst可以是寄存器或存储器内容;src可以是寄存器、存储器或立即数。但不能dst、src同为存储器3.3.3 3.3 .3 逻辑运算和移位指令逻辑运算和移位指令例:若AL=56H=01010110B若执行 NOT AL;AL=

21、10101001B=A9H若执行 AND AL,0FH AL=06H,高4清零,低4不变若执行 OR AL,0F0H AL=F6H,高位置1,低位不变若执行 XOR AL,0FH AL=01011001B=59H(3)测试指令 TEST TEST dst,src ;与运算,但不产生结果,影响标志位。实现按位测试按位测试,例例3-183-18 AL中存报警标志。若D7=1,转到温度报警处理程序TALARM;D6=1,则转压力报警程序PALARM。TEST AL TEST AL,80H 80H ;查AL的D7=1?JNZ TALARM ;是1(非零),则转温度报警程序 TEST AL,40H ;D

22、7=0,D6=1?JNZ PALARM ;D6=1,转压力报警 其中JNZ为条件转移指令,表示结果非0(ZF=0)则转移。区别:TEST AL,80H ;按位比较,与操作,测试AL的最高位 CMP AL,80H ;整体比较,差操作,比较AL 与80H大小 二者共同点就是运算但不产生结果,但影响标志位,实现测试或比较3.3.3 3.3 .3 逻辑运算和移位指令逻辑运算和移位指令1逻辑运算指令:2 2算术算术/逻辑移位指令逻辑移位指令:用来实现快速乘乘/除运算除运算 算术左移:SAL dst,n ;dst左移1次,相当于乘2逻辑左移:SHL dst,n;算术右移:SAR dst,n;dst右移1次

23、,相当于除2逻辑右移:SHR dst,n功能:将 dst移位n次。若移位位数若移位位数1,n应为应为CL。3.3.3 3.3.3 逻辑运算和移位指令逻辑运算和移位指令 例3-20:Y=X*10=(X*2)+(X*8)MOV AL,X SAL AL,1 ;AL=X*2 MOV BL,AL;BL=X*2 SAL AL,1;AL=X*4 SAL AL,1;AL=X*8 ADD AL,BL;L=(X*2)+(X*8)MOV Y,AL 执行上述7条指令一共用30T(时钟周期),这比乘法指令执行时间短得多,见附录一。3.循环移位指令:循环左循环左/右移:右移:每移一次就有一位去CF,可于实现逐位检测 RO

24、L ROL dst,n;若移位位数若移位位数1,n应为应为CL ROR ROR dst,n ;带进位的循环左带进位的循环左/右移:右移:可实现联合移位 RCL dst,n;RCR dst,n 3.3.3 3.3 .3 逻辑运算和移位指令逻辑运算和移位指令 例如:将通用寄存器DX和AX的32位数的联合左移(乘2)。使用的指令如下:SAL AX,1 RCL DX,1逻辑运算和移位类总结逻辑运算和移位类总结 逻辑运算:逻辑运算:NOT NOT、ANDAND、OROR、XORXOR、TESTTEST 逻辑移位:逻辑移位:SAL/SHL SAL/SHL、SARSAR、SHRSHR、循环移位:循环移位:R

25、OL ROL、RORROR 带进位的循环移位:带进位的循环移位:RCL RCL、RCRRCR3.3.3 3.3 .3 逻辑运算和移位指令逻辑运算和移位指令 改变IP(和CS)值,实现分支、循环、子程序等结构。3.3.3 3.5 .5 控制转移类指令控制转移类指令1.1.无条件转移类无条件转移类 (1)无条件转移指令 JMP JMP 目的目的(2)过程调用和返回指令 CALLCALL 过程名 .RET RET ;返回到CALL的下一条指令 对于近调用,执行的操作是:SPSP2,IP入栈 对于远调用,执行的操作是:SPSP2,CS入栈 SPSP2,IP入栈如果从近过程返回,IP出栈,同时SPSP2

26、;如果从远过程返回,IP出栈,SPSP2;CS出栈,SPSP2。2.2.条件转移指令条件转移指令:满足条件则转移,否则向下执行满足条件则转移,否则向下执行 (1)直接条件转移3.3.3 3.5 .5 控制转移类指令控制转移类指令 ADD AL,BL ;JC NEXT ;若有进位,转NEXT MOV AH,0 ;无进位,AH清0 JMP EXIT ;NEXT:MOV AH,1 ;有进位,AH置1 EXIT:;例3-25 求AL和BL的和,若有进位,则AH置1,否则AH清0。2.2.条件转移指令条件转移指令 (2 2)间接标志转移指令)间接标志转移指令:3.3.3 3.5 .5 控制转移类指令控制

27、转移类指令3.3.循环控制指令循环控制指令 LOOP LOOP 标号 ;若CX-10,转移到标号(即循环程序),否则退出循环 相当于以下两条指令相当于以下两条指令 :DEC CX;DEC CX;JNZ JNZ 标号标号3.3.3 3.5 .5 控制转移类指令控制转移类指令4.4.中断指令(中断指令(InterruptInterrupt)(1)INTINT n ;软件中断指令,n为中断类型号,n=0255(2)IRETIRET ;中断返回指令 IP出栈,SP+2SPCS出栈,SP+2SP FR出栈,SP+2 SPSP-2 SP,FR入栈SP-2SP,CS入栈SP-2SP,IP入栈例3-27 某温

28、度控制系统,从温度传感器(地址520H)读入一个8位温度值。当低于25度时,打开加热器;否则关闭加热器。加热器(地址521H)的控制信号连到端口的最高有效位,当将这一位置0时,打开加热器,1时则关闭加热器。GETTEMP:MOV DX,320H ;IN AL,DX ;读取温度值 CMP AL,100 ;100度比较 JAE JAE HEATOFF ;100度,转到HEAT_OFF(停止加热程序)MOV AL,00H ;否则D0位置1,启动加热 1000 0000 MOV DX,321H OUT DX,AL ;打开加热器 JMP JMP GETTEMP ;继续检测温度 HEATOFF:MOV A

29、L,80H ;D0位置0,停止加热 MOV DX,321H OUT DX,AL ;关闭加热器 JMP JMP GETTEMP;继续检测温度3.3.3 3.5 .5 控制转移类指令控制转移类指令CPUAL加热器321H温度传感器320HD0D7控制转移类小结控制转移类小结 无条件转移:JMP、CALL、RET 条件转移:JZ/JC/JS JNZ/JNC/JNS JA/JAE、JB/JBE(无符号数比较)JG/JGE、JL/JLE(带符号数比较)循环控制:LOOP 中断指令:INT n、IRET3.3.3 3.5 .5 控制转移类指令控制转移类指令 标志操作:标志操作:STCSTC;使CF=1CL

30、CCLC;使CF=0CMCCMC ;使CF取反CLDCLD;使DF=0STDSTD ;使DF=1CLICLI;使IF=0,禁止中断STISTI ;使IF=1,允许中断3.3.3 3.5.5标志操作和处理器控制类指令标志操作和处理器控制类指令 处理器控制类 HLTHLT ;暂停 WAITWAIT;等待 ESCESC ;退出 L LOCKOCK;封锁总线 NOPNOP ;空操作,用于程序延时和调试 1.寻址方式 2.指令 数据传送类 MOV/PUSH/POP/XCHG IN/OUT/XLAT/LEA 算术运算类 ADD/ADC/INC/DAA SUB/SBB/DEC/DAS/CMP 逻辑运算类(难点):NOT/AND/OR/XOR/TEST SAL/SHL/SAR/SHR ROL/ROR/RCL/RCR本章重点本章重点 控制转移类(重点):JMP/CALL.RET JZ/JNZ JA/JB/JG/JL LOOP INT n/IRET 处理器控制类 STI/CLI/STD/CLD/STC/CLC HLT/NOP 3-1、3-2、3-3、3-4、3-14、3-15第第3 3章作业章作业

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《微机原理与接口技术》课件第3章指令系统.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|