微机原理课件 8086/8088指令系统_第1页
微机原理课件 8086/8088指令系统_第2页
微机原理课件 8086/8088指令系统_第3页
微机原理课件 8086/8088指令系统_第4页
微机原理课件 8086/8088指令系统_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主要内容 第四章 80868088的指令系统第四章第四章 808680868088 CPU8088 CPU指令系统指令系统主要内容:指令的操作数、操作码、寻址方式指令的功能、格式、用法等CHDHDISPBPSI65标志3执行部分控制电路运算寄存器ALU1 24DSSSES输入/输出控制电路IPCS内部暂存器BHAHDLCLALBL20 位地址加法16 位外部总线指令队列缓冲器8 位16 位通用寄存器执行部件(EU)总线接口部件(BIU)8086/8088 CPU寻址方式 第四章 80868088的指令系统一、寻址方式一、寻址方式指令的一般格式: 计算机中的指令由操作码字段和操作数字段组成。 操

2、作码操作数操作数操作码:操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。寻址方式寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088 CPU寻址方式 第四章 80868088的指令系统立即寻址寄存器寻址存储器寻址8086/8088 CPU寻址方式 第四章 80868088的指令系统1立即寻址(立即寻址(Immediate Addressing) 所提供的操作

3、数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。例如:MOV AX,3000H MOV 2000H,1AH立即寻址主要用来给寄存器或存储器赋初值。8086/8088 CPU寻址方式 第四章 80868088的指令系统2寄存器寻址(寄存器寻址(Register Addressing)操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。例如:MOV DS,AXMOV AL,BH3、存储器寻址、存储器寻址(Memory Addressing)访问存储单元需要其段基址段基址和段内偏移量段内偏移量(即有效地址EA)。根据有效地址的不同,存储器寻址方式分为直接寻址、

4、寄存器间接寻址8086/8088 CPU寻址方式 第四章 80868088的指令系统立即寻址寄存器寻址存储器寻址直接寻址寄存器间接寻址8086/8088 CPU寻址方式 第四章 80868088的指令系统1 1)直接寻址()直接寻址(Direct AddressingDirect Addressing) 操作数地址的操作数地址的1616位偏移量直接包含在指令中。位偏移量直接包含在指令中。 它与操作码一起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。例如: MOV AX,DS:2000H;MOV AX,2000H ;数据段MOV AX,VALUE;

5、 VALUE是符号地址MOV BX,ES:3000H ;段超越,操作数在附加段即绝对地址(ES)*163000H8086/8088 CPU寻址方式 第四章 80868088的指令系统2)寄存器间接寻址()寄存器间接寻址(Register Relative Addressing) 操作数是在存储器中,但是,操作数地址的操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下位偏移量包含在以下四个寄存器四个寄存器SI、DI、BP、BX之一中之一中。 可以分成两种情况:以以SI、DI、BX间接寻址间接寻址,则通常操作数在现行数据段区域中,即数据段寄存器(DS)*16加上SI、DI、BX中的16位

6、偏移量,为操作数的地址, 例如: MOV AX, SI 操作数地址是:(DS)*16+(SI)以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(SS)*16与BP的内容相加作为操作数的地址, 例如:MOV AX,BP 操作数地址是:(SS)*16+(BP)8086/8088 CPU寻址方式 第四章 80868088的指令系统立即寻址寄存器寻址存储器寻址直接寻址寄存器间接寻址相对基址变址寻址方式基址变址寻址方式 相对基址寻址方式 相对变址寻址方式8086/8088 CPU寻址方式 第四章 80868088的指令系统(1)相对基址寻址方式 (Relative Based Address

7、ing) 相对基址寻址方式的操作数的有效地址是基址寄存器中内容和指令中给定的8位或16位偏移量disp之和。对寄存器BX,段寄存器用DS。物理地址 = (DS) * 16 + (BX) + disp如 MOV AX,COUNT BX 或 MOV AX,COUNT+BX ,其中COUNT为16位偏移量的符号地址。若DS=2000H,BX=2000H,COUNT=4000H。物理地址=20000H+2000H+4000H=26000H指令执行结果AX=1234H8086/8088 CPU寻址方式 第四章 80868088的指令系统(1)相对基址寻址方式 (Relative Based Addres

8、sing) 相对基址寻址方式的操作数的有效地址是基址寄存器中内容和指令中给定的8位或16位偏移量disp之和。对寄存器BP,段寄存器用SS。物理地址 =(SS) 16+(BP)+ disp如MOV AX,COUNT BP 或MOV AX,COUNT+BP若SS=3000H,BP=2000H,COUNT=4000H,物理地址=30000H+2000H+4000H=36000H指令执行结果AX=5678H8086/8088 CPU寻址方式 第四章 80868088的指令系统(2)相对变址寻址方式(Relative Index Addressing) 相对变址寻址的操作数的有效地址是变址寄存器中内容

9、和指令中给定的8位或16位偏移量disp之和。这种寻址方式的段寄存器用DS,即物理地址= (DS) 16 + (SI) + disp物理地址= (DS) 16 + (DI) + disp如MOV AX,COUNT SI 或MOV AX,COUNT+SI若DS=2000H,SI=2000H,COUNT=4000H。物理地址=20000H+2000H+4000H=26000H指令执行结果 AX=1234H8086/8088 CPU寻址方式 第四章 80868088的指令系统(3)基址变址寻址方式 (Based Indexed Addressing) 基址变址寻址的操作数的有效地址是一个基址寄存器与

10、一个变址寄存器的内容之和。若基址寄存器为BX,则段寄存器用DS;若基址寄存器为BP,则段寄存器用SS。物理地址=(DS) 16+(BX)+(SI)(或DI)物理地址=(SS) 16+(BP)+(SI)(或DI)如MOV AX,BX DI 或MOV AX,BX+DI若DS=2000H,BX=2000H,DI=3000H。物理地址=20000H+2000H+3000H=25000H8086/8088 CPU寻址方式 第四章 80868088的指令系统(4)相对基址变址寻址方式(Relative Based Indexed Addressing) 相对基址变址寻址的操作数的有效地址是一个基址寄存器与

11、一个变址寄存器的内容以及8位或16位偏移量disp之和。当其中的基址寄存器为BX时,则段寄存器为DS;而当基址寄存器为BP时,则段寄存器为SS。物理地址= (DS) 16 + (BX) + (SI)(或DI)+ 8位(16位)偏移量disp物理地址= (SS) 16 + (BP) + (SI)(或DI)+ 8位(16位)偏移量disp如MOV AX,BX+SI+COUNT若DS=2000H,BX=3000H,SI=1000H,COUNT=4000H。物理地址=20000H+3000H+1000H+4000H=28000H8086/8088 CPU寻址方式 第四章 80868088的指令系统立即

12、寻址寄存器寻址存储器寻址直接寻址寄存器间接寻址相对基址变址寻址方式基址变址寻址方式 相对基址寻址方式 相对变址寻址方式8086/8088 CPU寻址方式 第四章 80868088的指令系统I/O 端口寻址8086采用独立编址的I/O端口时,可有64K个字节端口或32K个字端口,用专门的输入指令IN和输出指令OUT访问。直接端口寻址方式适用于访问地址00FFH的端口。例如:IN AL,80H表示由地址为80H的端口读取一个字节数据到AL中。2. 间接端口寻址方式适用于访问地址0000FFFFH的全部端口,在输入/输出指令中,用DX存放16位的端口地址。例如: MOVDX,2000INAL,DX1

13、. 表示由DX确定的2000H端口读取一个字节数据到AL中。8086/8088 CPU寻址方式 第四章 80868088的指令系统I/O端口寻址从以上讨论可知:(1)除了立即寻址和寄存器寻址外,其它寻址方式的操作数都来自存储区(除代码段以外的存储区)。通过不同的方式寻找到操作数的地址。(2)只有BX、BP、SI、DI可在方括号 内出现。(3) BX或BP可单独出现在 内,也可以与SI或DI或常数一起出现在 内,不允许BX和BP同时出现在一个 内。(4) SI或DI可单独出现在 内,也可以与BX或BP或常数一起出现在 内,不允许SI或DI同时出现在一个 内。(5)一个 内包括多个内容时,它们只能

14、作加法运算。(6)若 内包含BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用段寄存器DS提供段基址。8086/8088 CPU寻址方式 第四章 80868088的指令系统习题:习题: 指出下列指令的源操作数的寻址方式和存储器操作数的指出下列指令的源操作数的寻址方式和存储器操作数的PA(实际地址)(实际地址) 假设当前CS=1000H,DS=2000H,SS=4000H,BX=3000H,BP=1000H ,SI=0500H,DI=0A00H,TAB=00F0H MOV AL,78H立即寻址MOV AL,BX寄存器间接寻址 PA=2000H*10H+3000H=23000HMOV AX

15、,BP寄存器寻址MOV AL,TABSI相对变址寻址 PA=2000H*16+0500H+0F0H=205F0HMOV AL,BPDI变址基址寻址 PA=4000H*16+1000H+0A00H=41A00HMOV AL,TABBXSI相对基址变址 PA=2000H*10H+3000H+0500H+00F0H=235F0H8086/8088 CPU寻址方式 第四章 80868088的指令系统数据传送指令运算指令逻辑运算算术运算串操作指令控制转移指令处理器控制指令数据传送指令 第四章 80868088的指令系统8086指令中包含133条基本指令,从功能上可以分为以下6类:数据传送指令 第四章 8

16、0868088的指令系统指令中出现的这些符号所代表的含义:Flags 标志位 reg R 通用寄存器组src S 源操作数dest D 目的操作数data N 立即数mem M 存储器ADR(src) 源操作数的地址 存储单元的内容OPRD 操作数seg SR 段寄存器(CS、DS、ES、SS)port 端口 Bit 位Byte B 字节Word W 字 通用数据传送指令累加器专用指令输入输出指令换码指令目标地址传送指令标志位传送指令传送指令堆栈操作指令交换指令有效地址传送指令DS传送指令ES传送指令标志位送AH指令AH送FR指令FR入出栈指令数据传送指令分类 4.3 数据传送指令 第四章 8

17、0868088的指令系统格式:MOV D,S;SD, ;B/WRMSRn其中R包括8个数据寄存器;SR为4个段寄存器;M为存储器,可以是存储器寻址中的任一种。注意:1。代码段寄存器不能做目标操作数。WW2。立即数只能做源操作数。3。两操作数的位数必须相同。4。两操作数中最多只能有一个是存储器寻址方式。4.3 数据传送指令 第四章 80868088的指令系统交换指令格式:XCHG D,S;DS,B/WD,S:R (不包括SR)、M例:XCHG AL,BL XCHG CX,SP使用交换指令时,必须注意:1)段寄存器不能作为交换指令的操作数。2)两个操作数中,必须有一个是寄存器操作数,而不允许两个都

18、是存储器操作数。3)立即数不能作为交换指令的操作数。4)交换指令不影响标志位。4.3 数据传送指令 第四章 80868088的指令系统格式:IN AL,n IN AX,n IN AL,DX IN AX,DX格式:OUT n , AL OUT n , AX OUT DX,AL OUT DX,AX例:IN AL,08H输入输出指令 使用输入输出指令时,应注意:1)输入输出指令只能通过累加器AL或AX来传送数据。2)输入输出指令的字或字节传送操作的选用,取决于外设端口的宽度。3)直接寻址的输入输出指令,寻址外设端口的范围为0255; 而间接寻址(DX)的输入输出指令,寻址的范围为065535。4)输

19、入输出指令不影响标志位。4.3 数据传送指令 第四章 80868088的指令系统堆栈操作指令 PUSH POP有效地址传送指令 LEA换码指令 XLATDS传送指令 LDSES传送指令 LES传送指令 MOV D,S交换指令 XCHG D, S输入输出指令 IN AL/AX,PORT OUT PORT ,AL/AX4.3 数据传送指令 第四章 80868088的指令系统第四章第四章 808680868088 CPU8088 CPU指令系统指令系统回顾:本节主要内容:4.3 数据传送指令堆栈:在内存中,开辟一段存储区,该区域是按照“先进后出”的原则来存放数据。10000H . .11FFCH11

20、FFDH11FFEH11FFFH12000HSPSS例:现有一个空的堆栈段,已知(SS)=1000H, (SP)=2000H,则存储器示意图如右。堆栈操作指令 设置堆栈目的:保存断点和保存当前寄存器的内容4.3 数据传送指令 第四章 80868088的指令系统例:现有一个空堆栈段,已知(SS)=1000H,(SP)=2000H,则存储器示意图如右。两个关键点:堆栈必须以字为单位操作,即字操作。数据必须以规则字的方式存放。若(AX)=1234H, (BX)=60ABH,则执行PUSH AXPUSH BX 10000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS10

21、000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS10000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS10000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS123410000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS123410000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS1234AB60POP BXPOP AX;(BX)=60ABH10000H .12000H11FFFH11FFEH11FFDH11FFCH .SPS

22、S1234AB6010000H .12000H11FFFH11FFEH11FFDH11FFCH .SPSS1234AB60;(AX)=1234H入栈(PUSH)操作SP-2SP按“规则字”方式入栈出栈(POP)操作按“规则字”方式出栈SP+2SP;(SP)=1FFCH4.3 数据传送指令 第四章 80868088的指令系统DATA_SEGSEGMENT XDW10 YDW0DATA_SEGENDSSTACK_SEG SEGMENT STACK STACK DW 2000H DUP (?) TOP LABEL WORDSTACK_SEG ENDSCODE_SEGSEGMENT ASSUMECS:

23、CODE_SEG,DS:DATA_SEGMAINPROCFARSTART:MOVAX,STACK_SEG ;建立堆栈段指针建立堆栈段指针 MOVSS,AX LEASP, TOP PUSHDS SUBAX,AX PUSHAX MOVAX,DATA_SEG MOVDS,AX。 RET MAINENDPCODE_SEGENDS ENDSTART数据段堆栈段代码段通过一个汇编语言程序,看堆栈段的是怎么建立?10000H . .11FFCH11FFDH11FFEH11FFFH12000HSPSS4.3 数据传送指令 第四章 80868088的指令系统有效地址传送指令格式:LEA D,S;将S的有效地址送

24、到DS:MD:R(16位)例:LEA BX,2000H执行后,BX=2000H区别于MOV BX,2000H例:LEA BX,TAB (TAB=2000H)执行后,BX=2000H区别于MOV BX,TAB4.3 数据传送指令 第四章 80868088的指令系统格式:XLAT ;BX+ALAL换码指令TABLE41090A19H10H8924H执行以下程序后,AL的内容是多少?LEA BX,TABLEMOV AX,03HADD BX,AXMOV AL,BXLEA BX,TABLEMOV AL,03HXLAT执行完程序后,AL=9XLAT指令的功能是:执行XLAT的过程为:(BX)+(AL)1.

25、取(BX)+(AL)所指向的单元内容传送至AL。把一种代码转换为另一种代码 4.3 数据传送指令 第四章 80868088的指令系统格式:XLAT ;BX+ALAL例:数字09对应的七段码为40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。依次放在内存以TABLE开始的区域,当#05H端口(按键)输入一个数(09)时,要求CPU将其转换为七段码,再从#20H端口(显示)输出。LEA BX,TABLEIN AL,05HXLATOUT 20H,AL换码指令TABLE247940300A12198900780218TABLE DB 40H,79H,24H30H,19H

26、DB 12H,02H,78H,00H,18H4.3 数据传送指令 第四章 80868088的指令系统LDS,LES格式:LDS D,S LES D,S S:M,D:R(16位,不包括SR);(S)D,(S+2)DS(ES)例:LDS SI,(2000H)前:DS=2000H,(22000H)=4000H,(22002H)=3000H后:SI=4000H,DS=3000H4.3 数据传送指令 第四章 80868088的指令系统标志位指令1.读取标志指令LAHF格式:LAHF;将FR的低8位送到AHFRAH2.设置标志指令SAHF格式:SAHF;将AH送到FR的低8位FRAH3. 标志位入出栈指令

27、PUSHF,POPF4.3 数据传送指令 第四章 80868088的指令系统算术运算指令逻辑运算指令加法指令减法指令乘法指令除法指令BCD码修正指令逻辑指令移位指令运算指令运算指令 第四章 80868088的指令系统加法指令1。不带进位位的加法指令格式:ADD D,S;D+SD,B/WD:R,M;S:R,M,n,二者不能同时为M。例:ADD AX,BX ADD AL,2000H ADD BX,AL ADD BL,6H注意:指令的执行影响CF、OF、SF、ZF、PF、AF。2。带进位位的加法指令(用于多字节(字)加法)格式:ADC D,S;D+S+CFD,B/WD:R,M;S:R,M,n ,二者

28、不能同时为M。注意:指令的执行影响CF、OF、SF、ZF、PF、AF。例:ADC AX,BX ADC AL,2000H ADC BX,AL ADC BL,6H例:ADD AL,BL前:AL=2EH,BL=45H后:AL=73H(01110011B)CF=0,AF=1,SF=0,ZF=0PF=0,OF=0运算指令 第四章 80868088的指令系统3。加1指令格式:INC D;D+1D,B/WS:R,M注意:指令的执行影响OF、SF、ZF、PF、AF;但不影响CF。例:INC AX INC BYTE PTRBX加法指令运算指令 第四章 80868088的指令系统减法指令1。不带借位位的减法指令格

29、式:SUB D,S;D-SD,B/WD:R,M;S:R,M,n,二者不能同时为M。注意:指令的执行影响CF、OF、SF、ZF、PF、AF。2。带借位位的减法指令(用于多字节(字)减法)格式:SBB D,S;D-S-CFD,B/WD:R,M;S:R,M,n ,二者不能同时为M。注意:指令的执行影响CF、OF、SF、ZF、PF、AF。3。减1指令格式:DEC D;D-1D,B/WS:R,M注意:指令的执行影响OF、SF、ZF、PF、AF;但不影响CF。例:SBB AX,BX SBB AL,3456H SBB BX,AL SBB BL,6H例:DEC AX DEC BYTE PTRBX例:SUB C

30、X,DX SUB DL,2000H SUB SI,CH SUB AL,6H运算指令 第四章 80868088的指令系统减法指令之二4。求补指令格式:NEG D;0-DD,B/WD:R,M注意:指令的执行影响OF、SF、ZF、PF、AF、CF。5。比较指令格式:CMP D,S;D-S,B/WD:R,M;S:R,M,n ,二者不能同时为M。注意:1。差不送到D;2。指令的执行影响CF、OF、SF、ZF、PF、AF;3。D,S的大小判断方法与D,S是否是有无符号数有关。例: NEG WORD PTR BX 例: NEG AL 前:AL=10001011B 后:AL=01110101B CF=AF=1

31、,SF=ZF=PF=OF=0 例: ADD AL,0 JNS L1 NEG AL OR AL,80HL1:运算指令 第四章 80868088的指令系统运算指令 第四章 80868088的指令系统例 4-8 在从Block开始的内存缓冲器中有100个带符号数的字,把其中最大值存放到MAX单元中。 MOVCX,99 LEABX,Block MOVAX,BX ADDBX,2AGAIN:CMPAX,BX JGNEXT MOVAX,BXNEXT:ADDBX,2DECCXJNZAGAINMOVMAX,AXHLT乘法指令1。无符号数的乘法指令格式:MUL S;B:AL*SAX, W:AX*S DX、AXS:

32、R,M注意:当乘积的高字(字节)为零时,CF=OF=0,否则CF=OF=1。例:MUL BX IMUL BYTE PTR(3456H) MUL CL IMUL WORD PTR DI AL AX S S AHAL DXAX2。有符号数的乘法指令格式:IMUL S;B:AL*SAX, W:AX*S DX、AXS:R,M注意:当乘积的高字(字节)为零(或全1)时,CF=OF=0,否则CF=OF=1。运算指令 第四章 80868088的指令系统除法指令1。无符号数的除法指令格式:DIV S;B:AX/S(8位)=AL.AH, W: DX AX/S(16位) =AX.DX例:DIV BX IDIV B

33、YTE PTR(3456H) DIV CL IDIV WORD PTR DI2。有符号数的除法指令格式:IDIV SS:R,M注意:标志位无意义. AL AXS ) AHAL S ) DXAX S*AL S*AX AH DX 例:9876H/2345H MOV AX,9876H CWD MOV SI,2345H IDIV SI3。扩展指令格式:CBW CWD;AL AX AX DX、AX此指令的执行不影响标志位 。运算指令 第四章 80868088的指令系统十进制修正指令1。BCD加法的修正指令格式:AAA DAA2。BCD减法的修正指令3。BCD乘法的修正指令格式:AAM 格式:AAS DA

34、S4。BCD除法的修正指令格式:AAD 注意:1。这六条指令中只有AAD是在除法指令执行前执行,其余都是在运算指令后修正。2。只有AAD是对AX中的数据进行修正,其余都是对AL中的数据进行修正。影响P、S、Z,不影响A、C、O。影响P、S、Z,不影响A、C、O影响C、A,对O、P、S、Z未定义。影响C、A 、P、S、Z ,对O未定义。影响C、A,对O、P、S、Z未定义。影响C、A 、P、S、Z ,对O未定义。运算指令 第四章 80868088的指令系统1。逻辑非指令格式:NOT D 2。逻辑与指令3。逻辑或指令格式:OR D,S 格式:AND D,S;D:R、M,S:R、M、n,B/WD:R、

35、M,B/W,不影响标志位影响S、Z、P,CF=OF=0,未对AF定义。利用AND可以强行使目标操作数的某些位为零。;D:R、M,S:R、M、n,B/W影响S、Z、P,CF=OF=0,未对AF定义。利用OR可以强行使目标操作数的某些位为1。逻辑运算指令运算指令 第四章 80868088的指令系统AND AL,0FHAND CX,0FF00HOR AL,0FHOR AL,30H4。逻辑异或指令格式:XOR D,S ;D:R、M,S:R、M、n,B/W影响S、Z、P,CF=OF=0,未对AF定义。利用XOR可以强行使目标操作数的某些位为取反或两数是否相等。5。测试指令格式:TEST D,S;D:R、

36、M,S:R、M、n,B/W影响S、Z、P,CF=OF=0,未对AF定义。利用TEST可以测试目标操作数的某些位的状态。逻辑运算指令运算指令 第四章 80868088的指令系统XOR AL,0FHXOR CL,CLTEST AL,80HTEST AL,0F0H移位指令1。逻辑算术左移指令格式:SHL D,S SAL D,S 2。逻辑右移指令3。算术右移指令格式:SAR D,S 格式:SHR D,S;D:R、M,S:1、CL,B/W;D:R、M,S:1、CL,B/WCF00CFCF;D:R、M,S:1、CL,B/W运算指令 第四章 80868088的指令系统1。循环左移指令格式:ROL D,S 2

37、。循环右移指令4。带进位位的循环右移指令格式:RCR D,S 格式:ROR D,SCFCFCFD:R、M,S:1、CL,B/W循环指令3。带进位位的循环左移指令格式:RCL D,S CF这类指令只影响CF和OF,CF为最后一次送入的值,OF仅在循环一位时有效:循环前后符号位不同时OF=1,否则OF=0。运算指令 第四章 80868088的指令系统MOVAL,0FHSALAL,1 MOVBL,ALMOVCL,2SALAL,CLADDAL,BLMOVDATA,AL;取数到AL中;乘2;保存;乘4;乘10(8+2);存结果说明下面程序的功能:功能:0FH*10DATA单元运算指令 第四章 80868

38、088的指令系统程序控制转移指令指 令类 型指 令 格 式指 令 功 能测 试 条 件无 条 件转 移JM P 目 标 标 号C ALL 过 程 名R ET 弹 出 值无 条 件 转 移过 程 调 用过 程 返 回对无符号数JA/JN B E 目 标 标 号JAE/JN B 目 标 标 号JB /JN AE 目 标 标 号JB E/JN A 目 标 标 号高 于 /不 低 于 等 于 转 移高 于 等 于 /不 低 于 转 移低 于 /不 高 于 等 于 转 移低 于 等 于 /不 高 于 转 移C F=0 且 ZF =0C F=0 或 ZF =1C F=1 且 ZF =0C F=1 或 ZF

39、 =1对有符号数JG/JN LE 目 标 标 号JGE/JN L 目 标 标 号JL/JN GE 目 标 标 号JLE/JN G 目 标 标 号大 于 /不 小 于 等 于 转 移大 于 等 于 /不 小 于 转 移小 于 /不 大 于 等 于 转 移小 于 等 于 /不 大 于 转 移O F +SF =0 且 ZF=0O F +SF =0 或 ZF=1O F +SF =1 且 ZF=0O F +SF =1 或 ZF=1条件转移单标志位JC 目 标 标 号JN C 目 标 标 号JZ/JE 目 标 标 号JN Z/JNE 目 标 标 号JO 目 标 标 号JN O 目 标 标 号JP /JPE

40、 目 标 标 号JN P/JP O 目 标 标 号JN S 目 标 标 号JS 目 标 标 号进 位 位 为 1 转 移进 位 位 为 零 转 移等 于 /结 果 为 零 转 移不 等 于 /结 果 不 为 零 转 移溢 出 转 移不 溢 出 转 移奇 偶 位 为 1 转 移奇 偶 位 为 0 转 移符 号 位 为 0 转 移符 号 位 为 1 转 移CF=1CF=0ZF=1ZF=0OF=1OF=0PF=1PF=0SF=0SF=1例420 假设x值存放在数据段1000H单元,函数y的值存放在1001H单元。 MOV AL,1000HCMP AL,0JG BIGJLLOWDONE: MOV 10

41、01H,ALHLTLOW :MOV AL,0FFHJMP DONEBIG: MOV AL,1JMP DONE 程序控制转移指令 第四章 80868088的指令系统例421 在数据段内以Block为首地址的100个字节数,试统计其正数和负数的个数,并分别将正数的个数放在DH中,负数的个数放在DL中。编程如下:MOV DX,0MOV CX,100LEA BX,BlockAGAIN:MOV AL,BX CMP AL,0 JL SMALLJG GREATNEXT:INC BX DEC CXJNZ AGAINHLTSMALL:INCDL JMPNEXTGREAT: INCDH JMP NEXT程序控制转移指令 第四章 80868088的指令系统指令类型指令格式指令功能测试条件循环控制LOOP 目标地址LOOPE/LOOPZ 目标地址LOOPNE/LOOPNZ 目标地址JCXZ 目标地址CX-1CX,CX不等于0循环CX-1CX,CX0且ZF=1循环CX-1CX,CX0且ZF=0循环CX=0转移中断INT 中断类型nINTOIRET中断, SP-2SP,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论