微机原理和接口技术应用8086指令系统和通用指令_第1页
微机原理和接口技术应用8086指令系统和通用指令_第2页
微机原理和接口技术应用8086指令系统和通用指令_第3页
微机原理和接口技术应用8086指令系统和通用指令_第4页
微机原理和接口技术应用8086指令系统和通用指令_第5页
已阅读5页,还剩106页未读, 继续免费阅读

下载本文档

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

文档简介

1、微机原理和接口技术应用8086指令系统和通用指令3.4 8086的通用指令 可以分为以下六类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 控制转移指令 处理器控制指令3.4.1 数据传送指令包括: 通用传送指令;累加器专用传送指令; 地址传送指令;标志传送指令;1、通用传送指令1)基本传送指令(MOV)指令格式:MOV DST,SRC;操作:将SRC内容赋给DST。所有通用传送指令都不影响标志位。注意:不能用MOV指令实现以下传送存储器操作数之间不能直接传送 MOV 1000H , DI 错 应改为 MOV AX , DI MOV 1000H, AX立即数不能直接传送段寄存器

2、 MOV DS,2000H 错 应改为 MOV AX, 2000H MOV DS , AX 段寄存器之间不能直接传送 MOV ES , DS ; 错 应改为 MOV BX , DS MOV ES , BXCS只可以作为源操作数例:MOV CS,AX ;错 MOV AX,CS ;对源操作数和目的操作数的宽度必须相同立即数段寄存器 存储器 (各种寻址) 通 用寄存器2)堆栈指令(PUSH 、POP) 堆栈(STACK)的概念 数据的存储按后进先出(Last In First OutLIFO)原则组织的一段内存区域。堆栈用途存放寄存器或存储器中暂时不使用的数据,在使用这些数据时可方便地将其弹出;调用

3、子程序或发生中断时要保护断点信息(入栈),子程序或中断返回时恢复断点信息(出栈)。堆栈用途如下图断点信息:程序断点地址、标志寄存器及其它能被子程序使用和改变的寄存器。8086使用段寄存器SS和指针寄存器SP管理堆栈SS决定了堆栈区的首地址,SP的初始值决定了堆栈区的末地址,堆栈区的最大长度随之而定数据入栈时,SP做减量调整,SP指示的单元称为“栈顶”,即栈顶向下延伸;SP永远指向刚刚入栈的数据数据出栈时,SP做增量调整,即栈顶向上延伸SP永远指向将要出栈的数据。SS:0000HSS:SP堆栈区数据入栈数据出栈入栈的数据全部出完,SP恢复初始值。入栈指令(PUSH): 格式:PUSH src 操

4、作过程分两步完成: (SP) (SP) - 2 (SP)+1,(SP) (src) 功能:把一个字压入由SP指向的堆栈区。如:PUSH AX例1:PUSH BX;(设DS:BX字单元数据为55AAH)xxHxxHxxHAAH55HxxHSS:SP指令执行前指令执行后SS:SP高位地址低位地址出栈指令(POP)格式:POP dst ; 操作: (dst) (SP)+1,(SP) (SP) (SP)+2 功能:把SP所指向的堆栈顶部的一个字送入目的地址,同时进行修改堆栈指针。如: POP BX POP AX 例2:POP BX;设接在例1后执行。AAH55HxxHSS:SP指令执行前AAH55Hx

5、xHSS:SP指令执行后55AAHBX应注意的问题 堆栈操作都按字操作, “PUSH AL”为错误指令; PUSH , POP 指令的操作数可以是寄存器或存储单元;PUSH CS 合法,POP CS 非法;执行PUSH 指令, (SP)-2 (SP),低字节放在低地址,高字节放在高地址;SP总是指向栈顶;堆栈最大容量即为SP的初值;堆栈中的数据弹出后,数据并没有在堆栈中消失,除非压入新数据,画图时注意;使用堆栈指令保护和恢复现场时,要注意指令的排列顺序,如:PUSH AXPUSH BXPUSH DS.POP DSPOP BXPOP AX堆栈复习SP的初值为1000H,SS=2000H,AX=3

6、040H,BX=5060H,试问:(1)该堆栈段的首地址是多少?末地址是多少?(2)执行指令PUSH AX后,SP的值为多少?(3)再执行PUSH BX 及POP AX后,SP、AX、BX的值为多少?(4)此时,SP所指内存空间的数据为多少?3)交换指令(XCHG)格式:XCHG dst , src;(dst) (src)可以实现:寄存器之间 寄存器和存储器之间注意: 存储器之间不能直接交换; 段寄存器不能作为操作数; 允许字或字节操作。了解!2、累加器专用传送指令 1)输入指令(IN) 功能:用于CPU从外设端口接收数据。 具体形式有四种: IN AL, data8;从8位端口地址输入一个字

7、节 IN AX, data8;从8位端口地址输入一个字 IN AL, DX;从16位端口地址输入一个字节 IN AX, DX;从16位端口地址输入一个字例1: IN AL, 80H; 从地址为80H的端口读入一个字节;例2: MOV DX, 1020H; 将16位端口地址赋给DX IN AX, DX; 从(DX)为地址的端口读入16位数据 注意:1)CPU对各个外部设备接口也采用地址编码。 8086CPU连接外部设备的地址可以是8位或16位。存储器I/O接口输入设备I/O接口数据总线 DB控制总线 CB地址总线 AB输出设备CPU20位8位或16位 注意:2)8086CPU访问存储器和访问外部

8、设备采用不同的指令形式,外设地址与存储器地址可以重叠。CPU的IO/M引脚控制存储器或外设被选通,当访问存储器时IO/M引脚输出低电平,当访问外设时该引脚输出高电平。 MOV BX,1234H;从存储器的1234H单元读数据,放 入BX。CPU执行该指令使IO/M=0 MOV DX,1234H ;立即数赋给DX IN AX,DX;从地址为1234H 的外设读数据, CPU执行该指令使IO/M=1存储器I/O接口输入设备I/O接口数据总线 DB控制总线 CB地址总线 AB输出设备CPUIO/M 2)输出指令(OUT) 功能:用于CPU向外设端口发送数据 四种形式: OUT data8 , AL;

9、向8位地址端口输出一个字节 OUT data8, AX ;向8位地址端口输出一个字 OUT DX , AL;向16位地址端口输出一个字节 OUT DX , AX ;向16位地址端口输出一个字注意:IO输入时一定是累加器作为目的地址,输出时一定是端口为目的地址3、目的地址传送指令 8086 提供三条: LEA LDS LES1)LEA (Load Effective Address)格式: LEA reg16 , memReg16 16位通用寄存器; mem 存储单元;功能:将源操作数的偏移地址传送到目的操作数; 注意:源操作数必须以寄存器间接寻址、变址寻址、基址加变址寻址等方式表示的存储器操作

10、数;目的操作数为一个16位的通用寄存器。例: LEA AX,DI设(DI)=1005H执行 结果:(AX)=1005H例: LEA BX,BX+SI+0F62H设(BX)=0400H,(SI)=003CH执行指令后: 源操作数地址为:(BX)+(SI)+ 0F62H =0400H+003CH+0F62H=139EH则(BX)=139EH2)LDS (Load pointer using DS)(了解)格式:LDS reg16 , mem ; 功能:把源操作数指定的4个相继字节的数据分别送指令指定的寄存器及DS寄存器中。 (reg16)(mem) (DS)(mem)+2)3)LES (Load

11、pointer using ES )(了解)格式:LES reg16 ,mem ;功能:把源操作数指定的4个相继字节的数据分别送指令指定的寄存器及ES寄存器中。 (reg16)(mem) (ES)(mem)+2)例: 设 (DS)=0C000H指令 LDS SI, 0010H执行指令后: (SI)=0180H (DS)=2000H 80H01H00H20HC000H:0010H(DS)C0011HC0012HC0013H.存储器C0010H例: 设 (DS)=B 000H (BX)=080AH指令 LES DI, BX执行指令后: (DI)=05A2H (ES)=4000HA2H05H00H4

12、0HB000H:080AH(DS)B080BHB080CHB080DH.存储器(BX)B080AH4、标志传送指令 8086有四条标志传送操作指令: 1)LAHF(Load AH from flags)(了解)格式:LAHF ;功能:标志寄存器低八位传送给AH (AH)(PSW的低字节)2)SAHF(Store AH into Flags)(了解) 格式:SAHF 功能:AH内容传送给标志寄存器低八位。 (PSW的低字节)(AH)3)PUSHF(Push Flags )格式:PUSHF;功能 : 标志进栈。 (SP)(SP)-2 (SP)+1,(SP)(PSW)4)POPF(Pop Flags

13、 ) 格式:POPF; 功能:标志出栈。 (PSW)(SP)+1,(SP) (SP)(SP)+23.4.1 数据传送指令通用传送指令; (MOV;XCHG;PUSH;POP)累加器专用传送指令;(IN;OUT)地址传送指令;(LEA;LDS;LES)标志传送指令;(LAHF;SAHF;PUSHF;POPF)3.4.2 算术运算类指令包括: 加法指令、减法指令、乘法指令、除法指令1、加法指令8086具有5条加法指令:ADD(Addition) 加法指令ADC(Add with Carry)带进位加法指令INC(Increment)加 1指令AAA(ASCII ad for addition) A

14、SCII加法调整指令(了解)DAA(Decimal ad for addition)十进制加法调整指令(了解)1)不含进位的加法指令ADD指令格式:ADD dest , src ;功 能 :(dest) (dest)+(src)Src:立即数,通用寄存器,存储器dest:通用寄存器,存储器例:ADD CL,10ADD DX,SIADD AX, 2F00HADD 100HBX, ALADD DI, 30H特点: 可进行8位或16位的无符号数或有符号数加法运算; 源操作数和目标操作数不能同时为存储器, 不能为段寄存器; 指令影响标志位8位(有符号)数相加,和超出范围(128127),或16位(有符

15、号)数相加,和超出范围(-32768 +32767),则 O=1 8位(无符号)数相加,和超过255,或16位(无符号)数相加,和超过65535,则 C=1, 其他标志(S,A,P,Z)由运算结果按定义确定。2)含进位加法指令ADC(Add with carry)格式: ADC dest,src ;功能:(dest)(dest)+(src)+C C: 进位标志C的当前值特点: 与ADD同。类型举例: ADC CX, 300 ADC AL, BL ADC DX, SI 用途: ADC 指令主要用于多字节运算中。 如:求两个32位数12345678H与0ABCDEFABH之和MOV AX, 123

16、4HMOV BX, 5678HADD BX, 0EFABHADC AX, 0ABCDH3)加 1 指令INC (Increment by 1 )格式: INC dest;功能: (dest)(dest)+1 dest : 通用寄存器、存储器;用途:用于在循环程序中修改循环次数或地址指针。例: INC DL; 8位寄存器1 INC SI ;16位寄存器1而 INC 2100;错误,应写成 INC WORD PTR 2100 ; 存储器内容1(字操作),PTR为属性转换操作。又如 INC BYTE PTR BXSI ;字节操作 2、减法指令(Subtraction) 8086有7条减法指令: SU

17、B(Subtraction) 不含借位减法指令 SBB(Subtraction with Borrow)含借位减法指令 DEC(Decrement by 1) 减1指令CMP(Compare) 比较指令 NEG(Negate) 求补指令(略)AAS(ASCII Ad for Subtraction) 减法ASCII调整指令(略) DAS(Decimal Ad for Subtraction) 减法十进制调整指令(略)1)不含借位减法指令SUB(Subtraction) 格式:SUB: dest,src; 功能:(dest)(dest)-(src)Src:立即数,通用寄存器,存储器。Dest:通

18、用寄存器,存储器。例:SUB AL, 37HSUB BX, DX2)含借位减法指令 SBB(Subtraction with borrow) 格式:SBB dest,src; 功能:(dest)(dest)-(src)-CSrc:立即数,通用寄存器,存储器dest:通用寄存器,存储器 例:SBB BX, 100H SBB CX, DX SBB WORD PTR 100HBP, 1003)减 1 指令DEC (Decrement by 1 ) 格式:DEC dest 功能: (dest)(dest)-1 dest: 通用寄存器、存储器。不能是段寄存器。 用途:用于在循环程序中修改地址指针和循环次

19、数。4)求补指令NEG (Negate) 格式: NEG dest ; 功能:(dest) 0 - (dest) dest : 通用寄存器、存储器。 操作: 把操作数按位求反后末位+1。5) 比较指令CMP(Compare)格式:CMP dest,src; (dest)-(src) 结果不保留,只是用来影响标志位。影响标志:A、C、O、P、S、Z。src:立即数,通用寄存器,存储器。dest:通用寄存器,存储器。例: CMP AL,0AH;寄存器与立即数比较CMP CX, DI;寄存器与寄存器比较CMP AX, 1000H;寄存器与存储器比较CMP BX+5, SI ;存储器与寄存器比较用途:

20、用比较指令来比较两个数之间的关系 (1)根据Z标志,判断两者是否相等;(2)根据C标志, 判断两个无符号数的大小;(3)用S、O标志,判断两个带符号数的大小(P.62)OF=0,若SF=0,则AB,否则AB,否则AB算术运算对标志位的影响举例:1111 1111对应无符号数为255,有符号数1;1000 0010对应无符号数130,有符号数-126;1111 1101对应无符号数253,有符号数-3;求:1111 1111 +1000 0010 =1000 0001结果的无符号数为129,有符号数为-127 ; C=1 O=0 求:1111 1101+1000 00100111 1111结果的

21、无符号数为127,有符号数为127;C=1;O1算术运算指令执行这些运算时,自动地将相关标志位置为相应的状态。复习判断下列指令书写是否正确MOV AL, BXMOV AL, CLINC BXMOV 5,ALMOV BX, SIMOV BL, 0F5HMOV DX, 2000HPOP CSPUSH CSIN BX, DX复习编程实现200减去AL中的内容。3. 乘法指令1)无符号乘法(MUL) 格式:MUL SRC 操作: 字节操作数: AX (AL)*(SRC) 字操作数:DX:AX (AX)*(SRC) 2)带符号乘法(IMUL) 格式:IMUL SRC 操作:同MUL, 但操作数和乘积均带

22、符号;按有符号数的规则相乘;举例: MUL BL ; AX (AL)*(BL) MUL BX; AX (AX)*(BX)的低16位 DX (AX)*(BX)的高16位4、除法指令1)无符号除法(DIV)格式:DIV SRC操作: 字节除数:AL (AX)/(SRC) 之商 AH (AX)/(SRC) 之余数 字除数: AX (DX:AX)/(SRC)之商 DX (DX:AX)/(SRC) 之余数2)带符号除法(IDIV)格式:IDIV SRC 操作:同DIV指令商和余数是带符号的:商的符号符合一般代数符号规则,余数的符号与被除数相同。3)字节扩展指令(CBW) (了解) 格式:CBW ;Con

23、vert Byte to Word 功能:将AL 字节扩展成字,符号位及高字节在AH中;4)字扩展指令( CWD) (了解) 格式: CWD ;Convert Word to Double Word 功能:AX扩展成双字,符号位及高字在DX中;注意:这两条指令的作用是对被除数AL或AX进行扩展5、十进制调整指令(了解)共六条AAA 非压缩BCD码的加法十进制调整DAA 压缩BCD码的加法十进制调整AAS 非压缩BCD码的减法十进制调整DAS 压缩BCD码的减法十进制调整AAM 乘法的十进制调整 AAD 除法的十进制调整 3.4.43.4.5 逻辑运算与移位指令【位操作指令】(一)逻辑运算指令A

24、ND:逻辑“与”指令TEST:测试指令OR:逻辑“或”指令XOR:(eXclusive OR) 逻辑“异或”指令NOT:逻辑“非”指令1) “与”指令AND 格式:AND dest, src ; 功能:(dest)(dest) (src) src: 立即数、通用寄存器、存储器。 dest: 通用寄存器、存储器。 两操作数不能同为存储器操作数 操作类型举例:AND AL, 0FH AND CX, DI AND SI, 2456H2)测试指令TEST 格式: TEST dest , src;(dest)(src)src、dest的规则同“AND” 操作:操作数相与,结果不保存,用来改变标志位。 操

25、作类型举例:TEST BH, 7TEST SI , BPTEST DI , 1030HBX3) “或”指令OR 格式:OR dest, src;dest: 寄存器、存储器。src: 立即数、寄存器、存储器。 不能同时为存储器操作数4) “异或”指令XOR 格式:XOR dest , src dest: 寄存器、存储器。src: 立即数、寄存器、存储器 不相同则为1, 相同则为0; 不能同时为存储器操作数5) “非”指令NOT 格式: NOT dest ; 操作: 按位求反 操作数:寄存器、存储器,不能是立即数。 逻辑运算指令的应用屏蔽若干位。 (常用指令) AND AL,01H;屏蔽AL的D7

26、D1,保留D0 AND AL,0FH;屏蔽AL高4位,保留低4位使若干位置1 (常用指令) OR BL,0F0H;使BL高4位置1,低4位不变清除CF、OF 或 设置标志 AND AL,AL (AND AL,0FFH;OR BL,BL;) 类似指令没有改变目的操作数,但使CF=OF=0,也可能纯粹以设置其他标志(ZF)为目的。 求反 NOT AL / NOT WORD PTRBX+DI 对指定位求反 XOR AL,0FH;AL高4位不变,低4位求反 XOR CL,55H;CL偶数位求反,奇数位不变 清除寄存器及CF(常用指令) XOR AX,AX / XOR BX,BX XOR BYTE PT

27、RBX,BYTE PTRBX X0=X X1=X逻辑运算指令的应用不改变操作数,测试操作数或操作数的指定位TEST AL,0FFH;由ZF标志判断AL是否为零 ;也可以用CMP指令。TEST AL,01;由ZF标志判断AL的D0是否为零, ;ZF=1,则AL.D0=0 ;ZF=0,则AL.D0=1AND AL,01 ;也可完成上述功能,但是改变了目的操作数逻辑运算指令的应用(二)移位指令共有以下8条SAL (Shift Arithmetic Left) 算术左移 SAR (Shift arithmetic right) 算术右移SHL (Shift logical left)逻辑左移 SHR

28、(Shift logical right) 逻辑右移ROL (Rotate left) 循环左移 ROR (Rotate right) 循环右移 RCL (Rotate left with carry) 带进位循环左移RCR (Rotate right with carry) 带进位循环右移 移位指令的格式 操作码 reg/mem, Count Count=1或CL,指定移位次数 移位或移位次数在CL中 SHL AH,1 SAL SI, CL SAL WORD PTRBX+5 , 1 ROL BH , 1 ROL DX , CL 字节或字操作,通用寄存器或存储器操作数1)逻辑左移/算术左移指令

29、SHL/SAL 这两条指令实现相同的操作 操作示意图如下图,相当于无符号数2 例: MOV AH, 3FH; SAL AH, 1; MOV CL, 2 SAL AH,CL ; 0C操作数(AH)=0011 1111B(63D)(AH)=0111 1110=7EH(126D)(AH)=1111 1000= 0F8H(248D)2)逻辑右移指令SHR 操作示意图如下: 指令格式举例:SHR BL , 1SHR AX , CLSHR BYTE PTR DI+BP, 1 相当于无符号数除以2操作数C03)算术右移指令SAR 指令操作示意图如下图所示 举例:MOV AL, 88H MOV CL,2 SA

30、R AL, CL操作数C执行结果AL=1110 0010=0E2H4)不含进位标志循环左移指令ROL 操作示意图如下 C操作数 指令格式举例:ROL BH , 1ROL DX , CLROL WORD PTR 12HDI, 15)不含C的循环右移指令ROR 操作示意图如下 C操作数6)含C循环左移指令RCL 操作示意图如下 C操作数 指令格式举例:RCL BX , 1RCL DL , CL7)含C循环右移指令RCR 操作示意图如下 C操作数 指令格式举例:RCR DI, 1RCR SI , CL注意:标志设置 AF:对AF无定义; CF:按移入的值或为0或为1; 根据移位后的结果设置SF、ZF

31、、PF; OF:当移动1位时,移位后如果符号位发生变化,则OF=1,符号位不发生变化,则OF=0,移位次数大于1时,OF不定。 3.4.7 串操作指令“串”就是内存中一段地址相连的字节或字;串操作,也叫数据块操作;可实现存储器数据间的直接传送; 8086有5种基本串操作: MOVS(Move string) 串传送指令 CMPS(Compare string) 串比较指令 SCAS(Scan string) 串扫描指令 LODS(Load from string) 取串指令 STOS (Store in to string) 存串指令串传送指令MOVS 串传送有2种格式: (1) MOVSB字

32、节传送;把数据段中SI寻址的数据传送到附加段中DI寻址的存储区域中;然后修改SI、DI。 (ES: DI)(DS: SI); (SI)(SI)1;(DI)(DI) 1 当方向标志 D=0时用“+” , D=1时用“-” 2000H:1000H附加段(ES)21001H21002H21003H.存储器21000H80H01H9AH20H1000H:0010H数据段(DS)10011H10012H10013H.存储器10010H MOV AX, 1000H MOV DS, AX ;数据段地址赋值 MOV AX, 2000H MOV ES, AX ; 附加段地址赋值 MOV SI, 0013H ;源

33、数据块首地址 MOV DI, 1003H ;目的数据块首地址 MOV CX, 4 ;数据块长度赋计数器 STD /设置方向标志LP: MOVSB ;完成一个字节数据传送 DEC CX ;计数器减一 JNZ LP ;结果不为0,重复传送 HLT MOV AX, 1000H MOV DS, AX ;数据段地址赋值 MOV AX, 2000H MOV ES, AX ; 附加段地址赋值 MOV SI, 0013H ;源数据块首地址(最高位地址) MOV DI, 1003H ;目的数据块首地址(最高位地址) MOV CX, 4 ;数据块长度赋计数器 STDLP: MOV AX,SI MOV ES: DI

34、,AX DEC SI DEC DI DEC CX JNZ LP HLT(2) MOVSW 操作:字传送;(ES:DI)(DS:SI);(SI)(SI)2; (DI)(DI) 2 当方向标志 D=0时用“+” , D=1时用“-” 可见,该类指令可以实现从存储器到存储器的数据传送;而且传送非常简便REP重复前缀指令 重复串操作执行过程: (1) 当(CX)0, (CX) (CX)-1 , 执行REP后的串指令。 (2) 当(CX)= 0 ,结束REP,执行下一条指令。REP 执行流程图注意:重复前缀不能单独使用,只能附加在串操作指令前面,使串操作重复执行 如上例可用REP操作如下 MOV AX,

35、 1000H MOV DS, AX MOV AX, 2000H MOV ES, AX MOV SI, 0010H MOV DI, 1000H MOV CX, 4 ;数据块长度赋计数器 CLDREP MOVSB ;重复完成字节数据传送 HLT从串中取数指令LODS有2种格式:(1) LODSB (字节); (AL) (DS:SI),(SI) (SI) 1(2) LODSW (字) ; (AX) (DS:SI),(SI) (SI)2功能:该指令把由SI指定的数据段中某单元内容赋给AL或AX 3. 存入串指令STOS有2种格式:STOSB (字节); (ES:DI) (AL) , (DI) (DI)

36、 1(2) STOSW (字); (ES:DI) (AX) , (DI) (DI) 2与REP联用时,可用来建立一串相同的值,串长度由CX内容决定。经常用来初始化一段内存区域例:将附加段64KB全部清为0mov ax, 0mov di, 0;mov cx, 8000h;32KcldLop: stoswdec cxjnz lopmov ax, 0mov di, 0;mov cx, 8000h;32KcldREP stosw4. 串比较指令CMPS2种格式:(1) CMPSB (字节)(2) CMPSW (字)执行操作: (ES:DI) (DS:SI), 结果不存,置标志。 字节操作:(SI) (

37、SI)1,(DI)(DI) 1 字操作:(SI) (SI)2,(DI) (DI)25. 串扫描指令SCAS 有2种格式: (1) SCASB(字节) (AL)-(ES:DI), (DI)(DI)1 (2) SCASW(字) (AX)-(ES:DI), (DI) (DI)2 两数相减,只影响标志,不影响操作数。 用于寻找串中满足条件的数据。 CMPS和SCAS可与前缀 REPE / REPZ和REPNE / REPNZ联合工作 REPE/REPZ (Equal) 当相等/为零时重复串操作 REPNE/REPNZ 当不相等/不为零时重复串操作例:比较两个字符串str1,str2是否相等,数据串长度

38、为count,比较结果存入result单元,0表示相等,-1(ffh)表示不等。mov si,offset str1mov di,offset str2mov cx,countcldrepz cmpsb jnz unmat mov al,0 jmp outputunmat: mov al,0ffhoutput: mov result,alZF=0,两串不同重复运行串比较指令的几种情况1)CX=0,ZF=1:全比完,相同2)CX=0,ZF=0:全比完,末数据不同3)CX0,ZF=0:未比完,遇到不同4)CX0,ZF=1:未比完,继续比较3.4.6 控制传送指令控制传送指令包括四种:转移指令()循

39、环控制指令()过程调用指令()中断指令()(一)转移指令转移指令控制程序从一处转换到另一处执行。在CPU内部,转移是通过将目标地址传送给IP来实现的。转移指令包括两种:无条件转移指令、条件转移指令 1、无条件转移指令JMP(Jump) 格式:JMP 语句标号 JMP LP; 2、条件转移指令 1)根据单个条件标志转移 Z标志 JZ/JNZ Jump on Zero; Jump on Equal C标志 JC/JNC P标志 JP(JPE)/JNP(JPO) Jump on Parity; Jump on Even ;Jump on Odd S标志 JS/JNS O标志 JO/JNO 2)根据两

40、个无符号数大小关系转移 JB、JNAE;JNB、JAE JBE、JNA;JNBE、JA JB:Jump on Below; JAE:Jump on Above or Equal JZ(或JE)/JNZ(或JNE) 3)根据两个带符号数比较结果转移 JL(JNGE)/JNL(JGE); JLE(JNG)/JNLE(JG) L Less;G Great; E Equal注意:所有条件转移指令都是段内(-128+127)范围内转移。标志转移指令举例计算 X-Y的绝对值 ,X和Y为16位操作数,结果存入result MOV AX,X; SUB AX,Y; JNS NO_NEG;/(X-Y)如为正数,不求绝对值 NEG AX ; /求绝对值 NO_NEG:MOV result, AX;/保存结果根据无符号数大小关系转移举例AX和BX为无符号数,比较大小,将较大的数放入AX中。 CMP AX,BX ; JNB NEXT ;如AXBX,不处理 MOV AX,BX ; AXBX,BX送入AX中 NEXT:根据有符号数大小关系转移举例AX和BX为有符号数,比较大小,将较大的数放入AX中。 CMP AX,BX ; JNL NEXT ;如

温馨提示

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

评论

0/150

提交评论