收藏 分享(赏)

微机原理--第3章8086指令系统--2.ppt

上传人:myk79025 文档编号:8461010 上传时间:2019-06-28 格式:PPT 页数:112 大小:1.64MB
下载 相关 举报
微机原理--第3章8086指令系统--2.ppt_第1页
第1页 / 共112页
微机原理--第3章8086指令系统--2.ppt_第2页
第2页 / 共112页
微机原理--第3章8086指令系统--2.ppt_第3页
第3页 / 共112页
微机原理--第3章8086指令系统--2.ppt_第4页
第4页 / 共112页
微机原理--第3章8086指令系统--2.ppt_第5页
第5页 / 共112页
点击查看更多>>
资源描述

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

2、1000H, AX 立即数不能直接传送段寄存器MOV DS,2000H 错应改为MOV AX, 2000HMOV DS , AX,JUST,段寄存器之间不能直接传送MOV ES , DS ; 错 应改为MOV BX , DSMOV ES , BX CS只可以作为源操作数 例:MOV CS,AX ;错 MOV AX,CS ;对 源操作数和目的操作数的宽度必须相同,JUST,立即数,段寄存器,存储器(各种寻址),通 用 寄存器,JUST,2)堆栈指令(PUSH 、POP) 堆栈(STACK)的概念数据的存储按后进先出(Last In First OutLIFO)原则组织的一段内存区域。,JUST,

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

4、栈的数据全部出完,SP恢复初始值。,JUST,入栈指令(PUSH):格式:PUSH src操作过程分两步完成: (SP) (SP) - 2 (SP)+1,(SP) (src)功能:把一个字压入由SP指向的堆栈区。如:PUSH AX,JUST,例1:PUSH BX;(设DS:BX字单元数据为55AAH),JUST,出栈指令(POP)格式:POP dst ;操作:(dst) (SP)+1,(SP)(SP) (SP)+2功能:把SP所指向的堆栈顶部的一个字送入目的地址,同时进行修改堆栈指针。如: POP BXPOP AX,JUST,例2:POP BX;设接在例1后执行。,JUST,应注意的问题 堆栈

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

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

7、字节IN AX, data8;从8位端口地址输入一个字IN AL, DX;从16位端口地址输入一个字节IN AX, DX;从16位端口地址输入一个字,JUST,例1:IN AL, 80H;从地址为80H的端口读入一个字节; 例2:MOV DX, 1020H; 将16位端口地址赋给DXIN AX, DX; 从(DX)为地址的端口读入16位数据,JUST,注意: 1)CPU对各个外部设备接口也采用地址编码。 8086CPU连接外部设备的地址可以是8位或16位。,JUST,注意: 2)8086CPU访问存储器和访问外部设备采用不同的指令形式,外设地址与存储器地址可以重叠。 CPU的IO/M引脚控制存

8、储器或外设被选通, 当访问存储器时IO/M引脚输出低电平, 当访问外设时该引脚输出高电平。,JUST,MOV BX,1234H;从存储器的1234H单元读数据,放 入BX。CPU执行该指令使IO/M=0MOV DX,1234H ;立即数赋给DXIN AX,DX;从地址为1234H 的外设读数据,CPU执行该指令使IO/M=1,JUST,2)输出指令(OUT)功能:用于CPU向外设端口发送数据四种形式:OUT data8 , AL;向8位地址端口输出一个字节OUT data8, AX ;向8位地址端口输出一个字OUT DX , AL;向16位地址端口输出一个字节OUT DX , AX ;向16位

9、地址端口输出一个字,注意:IO输入时一定是累加器作为目的地址,输出时一定是端口为目的地址,JUST,3、目的地址传送指令8086 提供三条:LEALDSLES,JUST,1)LEA (Load Effective Address) 格式: LEA reg16 , mem Reg16 16位通用寄存器; mem 存储单元; 功能:将源操作数的偏移地址传送到目的操作数;注意:源操作数必须以寄存器间接寻址、变址寻址、基址加变址寻址等方式表示的存储器操作数;目的操作数为一个16位的通用寄存器。,JUST,例: LEA AX,DI 设(DI)=1005H 执行 结果:(AX)=1005H 例: LEA

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

11、4个相继字节的数据分别送指令指定的寄存器及ES寄存器中。(reg16)(mem)(ES)(mem)+2),JUST,例: 设 (DS)=0C000H 指令 LDS SI, 0010H 执行指令后: (SI)=0180H(DS)=2000H,JUST,例: 设 (DS)=B 000H(BX)=080AH 指令 LES DI, BX 执行指令后: (DI)=05A2H(ES)=4000H,JUST,4、标志传送指令8086有四条标志传送操作指令:,1)LAHF(Load AH from flags)(了解) 格式:LAHF ; 功能:标志寄存器低八位传送给AH(AH)(PSW的低字节),JUST,

12、2)SAHF(Store AH into Flags)(了解)格式:SAHF功能:AH内容传送给标志寄存器低八位。(PSW的低字节)(AH),JUST,3)PUSHF(Push Flags )格式:PUSHF ;功能 : 标志进栈。 (SP)(SP)-2(SP)+1,(SP)(PSW) 4)POPF(Pop Flags )格式:POPF; 功能:标志出栈。(PSW)(SP)+1,(SP)(SP)(SP)+2,JUST,3.4.1 数据传送指令,通用传送指令; (MOV;XCHG;PUSH;POP) 累加器专用传送指令;(IN;OUT) 地址传送指令;(LEA;LDS;LES) 标志传送指令;(

13、LAHF;SAHF;PUSHF;POPF),JUST,3.4.2 算术运算类指令,包括:加法指令、减法指令、乘法指令、除法指令 1、加法指令 8086具有5条加法指令: ADD(Addition) 加法指令 ADC(Add with Carry)带进位加法指令 INC(Increment)加 1指令 AAA(ASCII adjust for addition) ASCII加法调整指令(了解) DAA(Decimal adjust for addition)十进制加法调整指令(了解),JUST,1)不含进位的加法指令ADD 指令格式:ADD dest , src ; 功 能 :(dest) (d

14、est)+(src)Src:立即数,通用寄存器,存储器dest:通用寄存器,存储器 例:ADD CL,10 ADD DX,SI ADD AX, 2F00H ADD 100HBX, ALADD DI, 30H,JUST,特点:可进行8位或16位的无符号数或有符号数加法运算;源操作数和目标操作数不能同时为存储器, 不能为段寄存器;指令影响标志位 8位(有符号)数相加,和超出范围(128127),或16位(有符号)数相加,和超出范围(-32768 +32767),则 O=1 8位(无符号)数相加,和超过255,或16位(无符号)数相加,和超过65535,则 C=1, 其他标志(S,A,P,Z)由运算

15、结果按定义确定。,JUST,2)含进位加法指令ADC(Add with carry) 格式: ADC dest,src ; 功能:(dest)(dest)+(src)+CC: 进位标志C的当前值 特点: 与ADD同。 类型举例: ADC CX, 300 ADC AL, BL ADC DX, SI,JUST,用途: ADC 指令主要用于多字节运算中。 如:求两个32位数12345678H与0ABCDEFABH之和 MOV AX, 1234H MOV BX, 5678H ADD BX, 0EFABH ADC AX, 0ABCDH,JUST,3)加 1 指令INC (Increment by 1 )

16、 格式: INC dest ; 功能: (dest)(dest)+1dest : 通用寄存器、存储器; 用途:用于在循环程序中修改循环次数或地址指针。,JUST,例:INC DL ; 8位寄存器1INC SI ;16位寄存器1 而INC 2100 ;错误,应写成INC WORD PTR 2100 ;存储器内容1(字操作),PTR为属性转换操作。 又如INC BYTE PTR BXSI ;字节操作,JUST,2、减法指令(Subtraction)8086有7条减法指令:SUB(Subtraction) 不含借位减法指令SBB(Subtraction with Borrow)含借位减法指令 DEC

17、(Decrement by 1) 减1指令 CMP(Compare) 比较指令NEG(Negate) 求补指令(略) AAS(ASCII Adjust for Subtraction) 减法ASCII调整指令(略)DAS(Decimal Adjust for Subtraction) 减法十进制调整指令(略),JUST,1)不含借位减法指令SUB(Subtraction)格式:SUB: dest,src;功能:(dest)(dest)-(src)Src:立即数,通用寄存器,存储器。Dest:通用寄存器,存储器。 例: SUB AL, 37H SUB BX, DX,JUST,2)含借位减法指令

18、SBB(Subtraction with borrow)格式:SBB dest,src;功能:(dest)(dest)-(src)-CSrc: 立即数,通用寄存器,存储器dest:通用寄存器,存储器例:SBB BX, 100H SBB CX, DX SBB WORD PTR 100HBP, 100,JUST,3)减 1 指令DEC (Decrement by 1 )格式:DEC dest功能: (dest)(dest)-1dest: 通用寄存器、存储器。不能是段寄存器。用途:用于在循环程序中修改地址指针和循环次数。,JUST,4)求补指令NEG (Negate)格式: NEG dest ;功能

19、:(dest) 0 - (dest)dest : 通用寄存器、存储器。操作: 把操作数按位求反后末位+1。,JUST,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 ;存储器与寄存器比较,JUST,用途:用比较指令来比较两个数之间的关系(1)根据Z

20、标志,判断两者是否相等; (2)根据C标志, 判断两个无符号数的大小; (3)用S、O标志,判断两个带符号数的大小(P.62) OF=0,若SF=0,则AB,否则AB,否则AB,JUST,算术运算对标志位的影响举例: 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 结果的无符号数为127

21、,有符号数为127;C=1;O1 算术运算指令执行这些运算时,自动地将相关标志位置为相应的状态。,复习,判断下列指令书写是否正确 MOV AL, BX MOV AL, CL INC BX MOV 5,AL MOV BX, SI MOV BL, 0F5H MOV DX, 2000H POP CS PUSH CS IN BX, DX,JUST,复习,编程实现200减去AL中的内容。,JUST,JUST,3. 乘法指令,1)无符号乘法(MUL)格式:MUL SRC操作:字节操作数: AX (AL)*(SRC) 字操作数:DX:AX (AX)*(SRC)2)带符号乘法(IMUL) 格式:IMUL SR

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

23、被除数相同。,JUST,3)字节扩展指令(CBW) (了解)格式:CBW ;Convert Byte to Word功能:将AL 字节扩展成字,符号位及高字节在AH中; 4)字扩展指令( CWD) (了解)格式:CWD ;Convert Word to Double Word功能:AX扩展成双字,符号位及高字在DX中;注意:这两条指令的作用是对被除数AL或AX进行扩展,JUST,5、十进制调整指令(了解),共六条 AAA 非压缩BCD码的加法十进制调整 DAA 压缩BCD码的加法十进制调整 AAS 非压缩BCD码的减法十进制调整 DAS 压缩BCD码的减法十进制调整 AAM 乘法的十进制调整

24、AAD 除法的十进制调整,JUST,3.4.43.4.5 逻辑运算与移位指令【位操作指令】,(一)逻辑运算指令 AND:逻辑“与”指令 TEST:测试指令 OR:逻辑“或”指令 XOR:(eXclusive OR) 逻辑“异或”指令 NOT:逻辑“非”指令,JUST,1) “与”指令AND格式:AND dest, src ;功能:(dest)(dest) (src)src: 立即数、通用寄存器、存储器。dest: 通用寄存器、存储器。两操作数不能同为存储器操作数操作类型举例:AND AL, 0FH AND CX, DI AND SI, 2456H,JUST,2)测试指令TEST格式: TEST

25、 dest , src;(dest)(src)src、dest的规则同“AND”操作:操作数相与,结果不保存,用来改变标志位。操作类型举例:TEST BH, 7 TEST SI , BP TEST DI , 1030HBX,JUST,3) “或”指令OR格式:OR dest, src;dest: 寄存器、存储器。src: 立即数、寄存器、存储器。不能同时为存储器操作数,JUST,4) “异或”指令XOR格式:XOR dest , src dest: 寄存器、存储器。src: 立即数、寄存器、存储器不相同则为1, 相同则为0;不能同时为存储器操作数,JUST,5) “非”指令NOT格式: NOT

26、 dest ;操作: 按位求反操作数:寄存器、存储器,不能是立即数。,JUST,逻辑运算指令的应用,屏蔽若干位。 (常用指令)AND AL,01H;屏蔽AL的D7D1,保留D0AND 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)为目的。,JUST,求反 NOT AL / NOT WORD PTRBX+DI对指定位求反XOR AL,0FH;AL高4位

27、不变,低4位求反XOR CL,55H;CL偶数位求反,奇数位不变清除寄存器及CF(常用指令)XOR AX,AX / XOR BX,BX XOR BYTE PTRBX,BYTE PTRBX ,逻辑运算指令的应用,JUST,不改变操作数,测试操作数或操作数的指定位TEST AL,0FFH;由ZF标志判断AL是否为零;也可以用CMP指令。 TEST AL,01;由ZF标志判断AL的D0是否为零,;ZF=1,则AL.D0=0 ;ZF=0,则AL.D0=1 AND AL,01 ;也可完成上述功能,但是改变了目的操作数,逻辑运算指令的应用,JUST,(二)移位指令 共有以下8条 SAL (Shift Ar

28、ithmetic Left) 算术左移 SAR (Shift arithmetic right) 算术右移 SHL (Shift logical left)逻辑左移 SHR (Shift logical right) 逻辑右移 ROL (Rotate left) 循环左移 ROR (Rotate right) 循环右移 RCL (Rotate left with carry) 带进位循环左移 RCR (Rotate right with carry) 带进位循环右移,JUST,移位指令的格式操作码 reg/mem, CountCount=1或CL,指定移位次数移位或移位次数在CL中SHL AH

29、,1 SAL SI, CLSAL WORD PTRBX+5 , 1ROL BH , 1ROL DX , CL字节或字操作,通用寄存器或存储器操作数,JUST,1)逻辑左移/算术左移指令SHL/SAL这两条指令实现相同的操作操作示意图如下图,相当于无符号数2,例:MOV AH, 3FH; SAL AH, 1;MOV CL, 2SAL AH,CL ;,(AH)=0011 1111B(63D),(AH)=0111 1110=7EH(126D),(AH)=1111 1000= 0F8H(248D),JUST,2)逻辑右移指令SHR操作示意图如下:,指令格式举例:SHR BL , 1SHR AX , C

30、LSHR BYTE PTR DI+BP, 1相当于无符号数除以2,JUST,3)算术右移指令SAR 指令操作示意图如下图所示,举例:MOV AL, 88HMOV CL,2SAR AL, CL,执行结果AL=,1110 0010=0E2H,JUST,4)不含进位标志循环左移指令ROL 操作示意图如下,指令格式举例:ROL BH , 1ROL DX , CLROL WORD PTR 12HDI, 1,JUST,5)不含C的循环右移指令ROR操作示意图如下,JUST,6)含C循环左移指令RCL操作示意图如下,指令格式举例:RCL BX , 1RCL DL , CL,JUST,7)含C循环右移指令RC

31、R操作示意图如下,指令格式举例:RCR DI, 1RCR SI , CL,JUST,注意:标志设置AF:对AF无定义;CF:按移入的值或为0或为1;根据移位后的结果设置SF、ZF、PF;OF:当移动1位时,移位后如果符号位发生变化,则OF=1,符号位不发生变化,则OF=0,移位次数大于1时,OF不定。,JUST,3.4.7 串操作指令,“串”就是内存中一段地址相连的字节或字; 串操作,也叫数据块操作; 可实现存储器数据间的直接传送;8086有5种基本串操作:MOVS(Move string) 串传送指令CMPS(Compare string) 串比较指令SCAS(Scan string) 串扫

32、描指令LODS(Load from string) 取串指令STOS (Store in to string) 存串指令,JUST,串传送指令MOVS串传送有2种格式:(1) MOVSB 字节传送;把数据段中SI寻址的数据传送到附加段中DI寻址的存储区域中;然后修改SI、DI。(ES: DI)(DS: SI);(SI)(SI)1;(DI)(DI) 1 当方向标志 D=0时用“+” , D=1时用“-”,JUST,JUST,MOV AX, 1000HMOV DS, AX ;数据段地址赋值MOV AX, 2000HMOV ES, AX ; 附加段地址赋值MOV SI, 0013H ;源数据块首地址

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

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

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

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

37、SI), 结果不存,置标志。字节操作:(SI) (SI)1,(DI)(DI) 1字操作:(SI) (SI)2,(DI) (DI)2,JUST,5. 串扫描指令SCAS 有2种格式:(1) SCASB(字节)(AL)-(ES:DI),(DI)(DI)1(2) SCASW(字)(AX)-(ES:DI),(DI) (DI)2两数相减,只影响标志,不影响操作数。用于寻找串中满足条件的数据。,JUST,CMPS和SCAS可与前缀REPE / REPZ和REPNE / REPNZ联合工作REPE/REPZ (Equal) 当相等/为零时重复串操作REPNE/REPNZ 当不相等/不为零时重复串操作,JUS

38、T,例:比较两个字符串str1,str2是否相等,数据串长度为count,比较结果存入result单元,0表示相等,-1(ffh)表示不等。 mov si,offset str1 mov di,offset str2 mov cx,count cld repz cmpsbjnz unmatmov al,0jmp output unmat: mov al,0ffh output: mov result,al,ZF=0,两串不同,重复运行串比较指令的几种情况1)CX=0,ZF=1:全比完,相同 2)CX=0,ZF=0:全比完,末数据不同 3)CX0,ZF=0:未比完,遇到不同 4)CX0,ZF=1

39、:未比完,继续比较,JUST,3.4.6 控制传送指令,控制传送指令包括四种: 转移指令(P.74) 循环控制指令(P.78) 过程调用指令(P.79) 中断指令(P.80),JUST,(一)转移指令 转移指令控制程序从一处转换到另一处执行。 在CPU内部,转移是通过将目标地址传送给IP来实现的。 转移指令包括两种:无条件转移指令、条件转移指令 1、无条件转移指令JMP(Jump) 格式:JMP 语句标号 JMP LP;,JUST,2、条件转移指令1)根据单个条件标志转移 Z标志JZ/JNZ Jump on Zero; Jump on Equal C标志JC/JNC P标志JP(JPE)/JN

40、P(JPO)Jump on Parity; Jump on Even ;Jump on Odd,JUST, S标志JS/JNS O标志JO/JNO2)根据两个无符号数大小关系转移JB、JNAE;JNB、JAEJBE、JNA;JNBE、JAJB:Jump on Below;JAE:Jump on Above or EqualJZ(或JE)/JNZ(或JNE),JUST,3)根据两个带符号数比较结果转移JL(JNGE)/JNL(JGE);JLE(JNG)/JNLE(JG)L Less;G Great; E Equal 注意:所有条件转移指令都是段内(-128+127)范围内转移。,JUST,标志转

41、移指令举例,计算 X-Y的绝对值 ,X和Y为16位操作数,结果存入resultMOV AX,X;SUB AX,Y;JNS NO_NEG;/(X-Y)如为正数,不求绝对值NEG AX ; /求绝对值 NO_NEG:MOV result, AX;/保存结果,JUST,根据无符号数大小关系转移举例,AX和BX为无符号数,比较大小,将较大的数放入AX中。CMP AX,BX ; JNB NEXT ;如AXBX,不处理MOV AX,BX ; AXBX,BX送入AX中 NEXT:,JUST,根据有符号数大小关系转移举例,AX和BX为有符号数,比较大小,将较大的数放入AX中。CMP AX,BX ; JNL N

42、EXT ;如AXBX,不处理MOV AX,BX ; AXBX,BX送入AX中 NEXT:,JUST,(二) 过程( 子程序 )调用指令子程序程序中具有独立功能的部分编写成独立程序模块。 主程序中调用子程序CALL 子过程名子程序 返回指令 RET(return)在子程序的结尾,用来返回主程序,JUST,(三)循环控制指令1、无条件循环LOOP 语句标号执行 操作 : (CX) (CX)- 1 若 (CX)0 ,继续循环;否则 退出循环,执行LOOP指令之后的指令。,JUST,MOV AX,0000HMOV BX,0001HMOV CX,000AHLP: ADD AX,BXLOOP LP,JUS

43、T,例:统计ES段中string字符串包含空格的个数,设字符串的长度为count字节,结果存入result单元。MOV CX,COUNT MOV SI,OFFSET STRING;取偏移地址XOR BX,BX ;记录空格数目MOV AL,20H ;空格的ASCII码 AGAIN:CMP AL,ES:SIJNZ NEXT ;不是空格,不计数INC BX ;是空格,计数 NEXT:INC SI ;调整指针,指向下一个LOOP AGAIN ;字符个数减一,不为0,继续循环MOV RESULT,BX ;,JUST,2、条件循环1)LOOPZ/LOOPE 语句标号执行 操作: (CX) (CX)- 1

44、若 CX0且Z=1,转向目标地址去执行;否则 执行LOOP指令之后的指令。,JUST,2)LOOPNZ/LOOPNE 语句标号执行 操作 : (CX) (CX)- 1 若 CX0且Z=0,转向目标地址去执行;否则 执行LOOP指令之后的指令。 注意:条件循环只允许段内循环,跳转范围-128127,JUST,(四)中断指令(interrupt)1)中断调用: INT nn中断号,02552)中断返回:IRET,JUST,(一)标志处理指令CLC (Clear carry flag ) 清C标志STC(Set carry flag ) 置C标志CMC(Complement carry flag)

45、对C求反CLD(Clear direction flag ) 清D标志STD(Set direction flag ) 置D标志CLI(Clear interrupt flag ) 清I标志STI (Set interrupt enable flag ) 置I标志,3.4.8 处理器控制指令,JUST,(二)其他处理机控制指令NOP(No operation ) 空操作HLT(Halt ) CPU暂停状态WAIT CPU等待状态ESC 交权LOCK(Lock bus ) 总线锁定,JUST,3.4 8086的通用指令,数据传送指令 MOV,XCHG,PUSH(POP),IN,OUT 算术运算指

46、令 ADD,ADC,SUB,SBB,DEC,INC,CMP,NEG,MUL,DIV 逻辑运算和移位指令 AND,TEST,OR,XOR,NOT SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR 串操作指令 MOVS, LODS,STOS, CMPS,SCAS 控制转移指令 处理器控制指令,CLC,CLD,STD,STC,JMP,J(条件),LOOP,CALL,INT n,JUST,作业,P.87 3.5; 3.8 ; 3.15 ;,JUST,补充作业,已知DS=2000H,BX=0100H,SI=0002H,存储单元20100H 20103H依次存放12 34 56 78H,21200H 21203H依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。MOV AX,1200HMOV AX,BXMOV AX,1200HMOV AX,BXMOV AX,BX+1100HMOV AX,BX+SIMOV AX,BXSI+1100H,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报