三章指令系统ppt课件.ppt

上传人:本田雅阁 文档编号:2626325 上传时间:2019-04-23 格式:PPT 页数:71 大小:324.51KB
返回 下载 相关 举报
三章指令系统ppt课件.ppt_第1页
第1页 / 共71页
三章指令系统ppt课件.ppt_第2页
第2页 / 共71页
三章指令系统ppt课件.ppt_第3页
第3页 / 共71页
三章指令系统ppt课件.ppt_第4页
第4页 / 共71页
三章指令系统ppt课件.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《三章指令系统ppt课件.ppt》由会员分享,可在线阅读,更多相关《三章指令系统ppt课件.ppt(71页珍藏版)》请在三一文库上搜索。

1、第3章 微型计算机指令系统,3.1 80X86/Pentium的寻址方式 立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、基址寻址、基址变址寻址 3.2 8086/8088指令系统 数据传送指令、算术运算指令、逻辑运算和移位指令、串操作指令、控制转移指令、处理器控制指令,3.1 80X86/Pentium的寻址方式,立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 基址寻址 变址寻址 基址加变址寻址 *比例变址寻址 *基址加比例变址寻址 *带偏移量的基址加比例变址寻址,寻址方式,寻址方式:指CPU指令中规定的寻找操作数所在的地址的方式。 操作数: MOV AL , 05H 操作码 目的

2、操作数 , 源操作数 立即数:操作数包含在指令中 寄存器寻址:操作数包含在CPU的某个内部寄存器中 存储器寻址:操作数包含在内存的数据区 操作数引用时的字节顺序: 若存放的信息是字节,则按顺序存放 若存放的信息是字,则将字的低位字节存放在低地址,高位字节存放在高地址,寻址方式之一:立即寻址,操作数作为立即数直接存在指令中,可为字节或字。 MOV AX, 3100H,低地址,高地址,CS段,操作码,00H,31H,34H,12H,AX,00H,31H,寻址方式之二:寄存器寻址,操作数包含在指令规定的8位、16位寄存器中。 寄存器寻址由于无需从存储器中取操作数,故执行速度快。 MOV SS,AX,

3、寻址方式之三:直接寻址,寻址方式之三:直接寻址,如果操作数在DS以外的其他段(CS,SS,ES)中,指令中必须指明段寄存器(段超越) MOV AX, ES:3000H,寻址方式之四:寄存器间接寻址,操作数地址的偏移量(有效地址EA)存放在寄存器中。以SI,DI, BX间接寻址,默认操作数在DS段中;以BP间接寻址,默认操作数在SS段中。 可以加段超越前缀的方法进行其他段进行寻址,寻址方式之五:基址寻址,EA=基址寄存器+偏移量 基址寄存器:BX(默认DS)和BP(默认SS)。,寻址方式之六:变址寻址,EA=变址寄存器+偏移量 变址寄存器:源变址寄存器SI、目的变址寄存器DI(默认DS)。 MO

4、V AL,TABLESI MOV AL,SI+TABLE MOV AL,SI+TABLE,寻址方式之七:基址变址寻址,基址加变址:EA=基址寄存器+变址寄存器 带偏移量的基址加变址: EA=基址寄存器+变址寄存器+偏移量,寻址方式总结,寻址方式: 1. 立即寻址 MOV AX, 1234H 2. 寄存器寻址 MOV AX, BX 3. 直接寻址 MOV AX, 1234H 4. 寄存器间接寻址 MOV AX, BX 5. 基址寻址 MOV AX, BX+100H 6. 变址寻址 MOV AX, SI+100H 7. 基址加变址寻址 MOV AX, BX+SI+100H,操作数的分类,立即数操作

5、数: 注1:立即数只能作为源操作数,不能作为目标操作数。 注2:不能用一条指令简单地将立即数传送到段寄存器。 寄存器操作数: 注3:有些指令没有指定使用的寄存器,但实际上隐含这特定的寄存器操作数。 存储器操作数: 注4:不允许源操作数和目标操作数同时为存储器操作数。 注5:存储器操作数的物理地址的计算是将段基地址左移四位加上有效地址EA(偏移地址)得到的。但是段寄存器和有效地址的配对是有规定的,如表3-2(P99) 注6:执行速度:寄存器操作数 立即数操作数 存储器操作数,指令的机器码和执行时间,机器码:任何一条指令都是以特定的若干个(16)字节的代码形式存在存储器的码段中。同样的指令(如MO

6、V)由于寻址方式和操作数的不同,机器码的长度也不同。 执行时间:指令的指令时间包括取址、译码和执行的时间,跟该指令的机器码的长短没有直接关系。,3.2 8086/8088指令系统,数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 控制转移指令 处理器控制指令,数据传送指令之一:通用传送指令,(1)MOV指令 MOV dest,src ;(dest)(src) 1)源操作数可以是8/16位的立即数、寄存器操作数、内存操作数。目标操作数不允许为立即数,其余同源操作数。 2)源、目操作数类型必须匹配 MOV BYTE PTR BX, 12H 3) 不能向段寄存器写立即数 MOV AX, 2

7、000 MOV DS, AX 4) 以CS为目标的一切传送指令都是非法的 5) 段寄存器之间不能直接传送数据,数据传送指令之一:通用传送指令,例:合法指令 MOV AL,30H ;立即数传送到寄存器 MOV AL, BL ;寄存器之间传送字节数据 MOV SI, BX+62H ;寄存器和存储器之间传送数据 例:不合法的指令 MOV 6234H,AX ;立即数不能用于目的操作数 MOV CS,AX ;CS不能用于目的操作数 MOV IP,AX ;IP不能用于目的操作数 MOV DS,4234H ;立即数不能直接传送给段寄存器 MOV AL,BX ;源操作数与目的操作数的位数必须一致 MOV BU

8、F1,BUF2 ;不能在两个存储器单元之间传送数据 MOV DS,ES ;不能在两个段寄存器之间传送数据,数据传送指令之一:通用传送指令,(2)堆栈操作指令 PUSH src ; (SP)(SP)-2 (SP)+1:(SP)(src) 进栈指令,先调整堆栈指针,再把源操作数压栈 PUSH AX POP dest ;(dest)(SP)+1:(SP) (SP)(SP)-2 出栈指令,先将栈顶2字节送目标操作数,再调整堆栈指针 POP AX 注:堆栈指令指对字进行操作,不对字节进行操作,一般成对使用。操作数为16位寄存器、段寄存器或存储单元,数据传送指令之一:通用传送指令,PUSH AX,数据传送

9、指令之一:通用传送指令,POP AX,低地址,高地址,12H,34H,34H,12H,AX,堆栈段,SS,SP指向栈顶,SP+1,SP+2,数据传送指令之一:通用传送指令,(3)交换指令 XCHG dest,src ;(dest)(src) 交换指令,源、目不能同为内存操作数,只能在寄存器之间、寄存器和存储器之间交换,段寄存器不能作为一个操作数进行交换。 合法交换指令 XCHG AL,CL ;字节交换 XCHG BX,SI ;字交换 XCHG AX,BX+SI ;寄存器和存储器之间交换数据 非法的交换指令 XCHG AX,6234H ;寄存器与立即数之间不能交换 XCHG BUF1,BUF2

10、;存储器单元与存储器单元之间不能交换 XCHG ADDR,4234H ;存储器单元与立即数之间不能交换 XCHG CS,DATBX ;不能与CS(或IP)寄存器进行交换,数据传送指令之一:通用传送指令,(4)XLAT 查表指令 XLAT src_table ;(AL)(BX)+(AL) 查表指令,用来取表中某指定数的值 执行指令前:序号 AL 表首址 BX 执行指令后:AL 表中序号对应的字节内容 TABLE DB 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 MOV BX, OFFSET TABLE MOV AL, 5 XLAT (或XLAT TABLE) 执

11、行后AL=53,数据传送指令之二:地址传送指令,LEA reg16,mem16 有效地址传送指令,源操作数为内存操作数 内存单元的有效地址目标寄存器 LEA SI, AREA1 = MOV SI,OFFSET AREA1 LDS/LES reg16,mem32 地址指针传送指令,EAreg16, EA+2DS/ES 例: TABLE DD 12345678H LDS BX,TBALE 5678BX, 1234HDS,数据传送指令之三:标志传送指令,LAHF 标志寄存器低字节AH,不影响标志位 SAHF AH 标志寄存器低字节,影响标志寄存器低8位 PUSHF:16位标志寄存器内容入栈 POPF

12、:16位标志寄存器出栈,AH,FLAG,LAHF,SAHF,数据传送指令之四:输入输出指令,完成累加器AL/AX和I/O端口之间的数据传送 IN acc,port ;(acc)(port) 当端口地址小于256时,直接寻址,最多可访问256个端口 例:IN AL,60H(将60H口地址的字节送给AL) IN AX,60H(将60H口地址的字送给AX) 端口地址大于或等于256时,间接寻址,端口地址必须放在DX寄存器中,最多可访问65536个端口 例:MOV DX,3DAH IN AL,DX (将3DAH口地址的字节送给AL) OUT port,acc ;(port)(acc) 例:MOV DX

13、,3DAH OUT DX,AX,算术运算指令之一:加法运算指令,ADD dest,src ;(dest)(dest)+(src) 加法指令 例 不带进位加法指令 ADD CL,20H ;(CL)(CL)+20H ADD AX,SI ;(AX)(AX)+(SI) ADD DATA BX,AL ;(BX)+DATA)(BX)+DATA)+(AL) ADD DX,BX+SI ;(DX)(DX)+(BX)+(SI) ADC dest,src ;(dest)(dest)+(src)+(CF) 带进位位加法 例 带进位加法指令 ADC AX,SI ;(AX)(AX)+(SI)+CF ADC BX,3000

14、H ;(BX)(BX)+3000H+CF ADC AX,DATSI ;(AX)(AX)+(SI+DAT)+CF 以上两条指令影响A,C,O,P,S,Z 6个标志位。注意带进位位加法中的进位位的值是上一条运算指令产生的结果(P105),算术运算指令之一:加法运算指令,ADC指令用于多字节加法运算 例:有两个4字节的无符号数相加: 2C56F8AC+309E47BE=? 设被加数、加数分别存放在DS:0000及DS:0004开始的两个存储区内,结果放回DS:0000 MOV AX,0004 ADD 0000,AX ;低字相加 MOV AX,0006 ADC 0002,AX ;高字相加,包括低字的进

15、位,算术运算指令之一:加法运算指令,INC dest ;(dest)(dest)+1 加1指令 例 加1指令 INC BX ;(BX)(BX)+1 INC BYTE PTR DI+100H ;将(DI)100H所指的 ;字节单元内容加1 影响A,O,P,S,Z 5个标志位,对CF无影响 操作数为寄存器或内存,算术运算指令之一:加法运算指令,AAA 加法的ASCII调整指令 对在AL中的由两个非压缩的BCD码相加的结果进行校正,结果仍以非压缩BCD码的形式存放,各位在AL,十位在AH。 DAA 加法的十进制调整指令 对在AL中的由两个压缩的BCD码相加的结果进行校正,产生一个正确的BCD码的和。

16、,算术运算指令之一:加法运算指令,例 两个非压缩BCD码的加法运算,设(AH)=0 MOV AL,08 ;(AL) 08 (AL)=00001000 ADD AL,09 ;(AL) 08+09 (AL)=00010001=11H AAA ;AF=1,(AH)(AH)+01, ;AL(AL+6)& 0FH(AL高4位清0) ;(AL)=00000111,结果(AX)=0107 AF=1 CF=1 例 两个压缩BCD码的加法运算 MOV AL,37 ;(AL)37 MOV BL,35 ;(BL)35 ADD AL,BL ;(AL)=6CH,AF=0,CF=0 DAA ;因为AL中的低4位大于9,

17、;所以(AL)(AL)+06, ; 结果(AL)=72,AF=1,CF=0,算术运算指令之二:减法运算指令,SUB dest,src ;(dest)(dest)-(src) 减法指令 例 不带借位的减法指令 SUB AX,3000H ;(AX)(AX)-3000H SUB BX,SI+100H ;(BX)(BX)-SI+100H SBB dest,src ;(dest)(dest)-(src)-(CF) 带借位位减法 例 带借位的减法指令 SBB AX,BX ;(AX)(AX)-(BX)-CF SBB WORD PTR SI,1068H ;(SI)(SI)-1068H-CF 以上两条指令影响A

18、,C,O,P,S,Z 6个标志位,算术运算指令之二:减法运算指令,例:x、y、z均为32位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现wx+y+24-z,结果放在W, W+2单元中。 MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ; x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 结果存入W, W+2单元,算术运算指令之二:减法运算指令,DEC dest ;(dest)(dest)

19、-1 减1指令 影响A,O,P,S,Z 5个标志位,操作数为寄存器或内存 例 减1指令 DEC BL ;(BL)(BL)-1 DEC BYTE PTRDI+2 ;DI+2DI+2-1 NEG dest ;(dest)0-(dest) 求补指令 操作数可以是内存或寄存器,影响所有标志位 例 设(AL)=02H,(BX)2212H NEG AL ;(AL)0-(AL),结果(AL)=0FEH NEG BX ;(BX)0-(BX),结果(BX)=DDEEH,算术运算指令之二:减法运算指令,AAS 减法的ASCII调整指令 对在AL中的由两个非压缩的BCD码相减的结果进行校正,结果仍以非压缩BCD码的

20、形式存放,各位在AL,十位在AH 。 DAS 减法的十进制调整指令 对在AL中的由两个压缩的BCD码相减的结果进行校正,产生一个正确的BCD码的差。,算术运算指令之二:减法运算指令,例 两个未组合BCD码的减法运算 MOV AX,0608H ;AX0608H SUB AL, 09H ;AL0FFH AAS ;AL09H,AH05H 例:两个组合BCD码的减法运算 MOV AL,73H ;AL73H SUB AL,27H ;AL4CH DAS ;AL46H,算术运算指令之二:减法运算指令,CMP dest,src ; (dest)-(src) 比较指令。完成两个操作数相减,结果反映在标志位上,但

21、不送回结果。用于比较两个操作数的大小关系。 CMP A,B (1)若任意两个数 ZF=0 AB (JNZ 不等转移) ZF=1 AB (JZ 相等转移) (2)若两个数都是无符号数 CF=0 AB (JNC) CF=1 AB (JC) (3)若两个数都是带符号数正数 SF=0 AB (JNS) SF=1 AB (JS) (4)若两个数是任意带符号数 SFOF=0 AB (JNL) SFOF=1 AB (JL),算术运算指令之二:减法运算指令,例:比较AX和BX寄存器中两个带符号数的关系,如果相等则RESULT0;如果(AX)(BX),则RESULT1;如果(AX) JMP STOP EQUAL

22、:MOV RESULT,00H JMP STOP LESS_THAN: MOV RESULT,FFH STOP: HLT,算术运算指令之三:乘法运算指令,MUL src ;字节乘法 (AX)(src)(AL) ;字乘法 (DX:AX) (src)(AX) 无符号数乘法指令 例 无符号数乘法指令 MUL DL ;AXAX*DL MUL CX ;DX:AXAX*CX MUL BYTE PTR SI+8 ;AXAL*SI+8 IMUL src ;字节乘法 (AX)(src)(AL) 字乘法 (DX:AX) (src)(AX) 带符号数乘法指令 例 两个有符号数的乘法 MOV AL,FEH ;ALFE

23、H,FEH看作有符号数-2 MOV CL,11H ;CL11H,11H看作有符号数17 IMUL CL ;AXFFDEH,执行02H*11H, 将乘积结果取补码得FFDEH=-34,算术运算指令之三:乘法运算指令,AAM 乘法的ASCII码调整指令(非压缩BCD数) 例 两个非压缩BCD码的乘法运算。 MOV AL,,06H ;AL06H MOV BL,07H ;BL07H MUL BL ;AX002AH AAM ;AX0402H,算术运算指令之四:除法运算指令,DIV src ;字节除法 (AL)(AX)/(src) (AH)(AX)(src) 字除法 (AX)(DX:AX)/ (src)

24、(DX)(DX:AX)(src) 无符号数除法指令 例 无符号数除法指令 DIV CL ;AX中的16位数除以CL中的8位数, 商送AL,余数送AH DIV CX ;DX和AX中的32位数除以CX中的16位数, 商送AX,余数送DX IDIV src ;字节除法 (AL)(AX)/(src) (AH)(AX)(src) 字除法 (AX)(DX:AX)/ (src) (DX)(DX:AX)(src) 带符号数除法指令,算术运算指令之四:除法运算指令,AAD 除法的ASCII码调整指令(非压缩BCD码) 例 两个非压缩BCD码的除法运算。 MOV AX, 0605H ;AX0605H MOV BL

25、,07H ;BL07H AAD ;AX0041H DIV BL ;商值AL09,余数AH02H,算术运算指令之五:符号扩展指令,CBW ;如果(AL)80H,则(AH)0 否则(AH)FFH 将一个字节转换为字 CWD ;如果(AX)8000H,则(DX)0 否则(DX)FFFFH 将一个字转换为双字 例 MOV AL,12H ;AL12H CBW ;AX0012H,AH=00H MOV AX,BBA3H CWD ;DXFFFFH,AXBBA3H 注:这两条指令用在带符号数的乘法和除法中,对AL或AH中的数据进行扩展。,逻辑运算和移位指令之一:逻辑运算指令,AND dest,src ;(des

26、t)(dest) D71转移,位操作的用途,AND 主要用于将二进制数的某些位清0; OR主要用于将二进制数的某些位置1; XOR 主要用于将二进制数的某些位求反,逻辑运算和移位指令之二:移位指令,格式:SHL dest,1(1次) SHL dest, CL(N次),逻辑运算和移位指令之三:循环移位指令,移位指令举例,例:用以下程序来完成X*10. SAL AL,1 ; X*2 MOV BL,AL ;暂存 SAL AL,1 ; X*4 SAL AL,1 ; X*8 ADD AL,BL ; X*10 例:将一个四字节数整个左移一位。 SAL FIRST_WORD,1 RCL SECOND_WOR

27、D,1,串操作指令之一:串传送指令,基本串操作指令 MOVS OPRD1,OPRD2 (字或字节) MOVSB (字节) MOVSW (字) 将一个字节/字DS:SI ES:DI,完成操作后自动修改SI、DI,使其指向串的下一个元素 指令前要先将源串首地址 DS:SI 目标串首地址 ES:DI 串操作方向由CLD和STD指令设置 CLD 地址递增方向(DF=0) STD 地址递减方向(DF=1),串操作指令之一:串传送指令,重复前缀 REP MOVS REP MOVSB REP MOVSW 需要先将串的长度存入CX寄存器,每处理完一个元素自动使CX-1, 直到CX=0才结束串传送,完成整个串的

28、传送,串操作指令之一:串传送指令,例: MOV SI, OFFSET S1 MOV DI, OFFSET S2 MOV CX, 18 CLD AGAIN:MOVS S2,S1 DEC CX JNZ AGAIN S1 DB “This is a string!$” S2 DB 18 DUP(0),REP MOVS S2,S1,REP MOVSB,串操作指令之二:串比较指令,REPZ/ REPNZ CMPS OPRD1,OPRD2 REPZ /REPNZ CMPSB REPZ/ REPNZ CMPSW 比较地址为DS:SI、ES:DI的两个字节/字/双字,并自动修改SI、DI REPZ表示相等重复

29、,即(CX)0且(ZF)1继续比较; REPNZ表示不等重复,即(CX)0且(ZF)0继续比较; 比较指令前通常加重复前缀REPZ/REPE,从而当发现两个串不同时结束比较。,串操作指令之二:串比较指令,例: MOV SI, OFFSET S1 MOV DI, OFFSET S2 MOV CX, xx REPZ CMPSB ;相等(Z=1)重复 JNZ Not_Equal Equal : Not_Equal: .,串操作指令之三:串扫描指令,REPZ/ REPNZ SCAS OPRD REPZ /REPNZ SCASB REPZ/ REPNZ SCASW 在首地址为ES:DI的串中搜索某个关键

30、字(字节/字),并自动修改DI,该关键字必须放在AX或AL中。 指令前通常加重复前缀REPNZ/REPNE,从而当发现待搜索的元素时结束搜索。,串操作指令之三:串扫描指令,例: MOV DI, OFFSET String MOV CX, xx MOV AL, h REPNZ SCASB;不等(Z=0)重复 JNZ Not_Found Found: Not_ Found: .,串操作指令之四:串装入指令,LODS OPRD LODSB LODSW 将地址为DS:SI的一个字节/字装入AL/AX,并自动修改SI。串装入指令一般不加重复前缀。,串操作指令之四:串装入指令,例:显示字符串 MOV SI

31、, OFFSET String MOV CX, xx MOV AH, 2 NextChar:LODSB MOV DL, AL INT 21 LOOP NextChar,串操作指令之五:串送存指令,REP STOS REP STOSB REP STOSW 将AL/AX的值存入地址为ES:DI的内存单元,并自动修改DI 。 利用重复前缀REP,可以建立一个取值相同的数据串。,串操作指令之五:串送存指令,例 将首地址为DS:SRC的字节数据串中非0元素送到首地址为ES:DEST的内存区中。字符串长度为N。 CLD ;DF=0,增量方向 LEA SI,SRC ;DS:SI字符串首地址 LEA DI,E

32、S:DEST ;ES:DI目标地址 MOV CX,N ;字符串长度 GOON: LODSB ;取字符串的一个元素 CMP AL,0 ;字符串元素为0吗? JZ NEXT ;是0,继续下一个元素 STOSB ;非0,存入首地址为ES:DEST的内存区中 NEXT: DEC CX JNE GOON,串操作指令总结,串传送 MOVS:将源串(DS:SI)目的串(ES:DI), SI和DI自动加1或减1。 串比较 CMPS:将源串(DS:SI)和目的串(ES:DI) 比较,不影响内容,SI和DI自动加1或减1。 串扫描 SCAS:将关键字AL(AX), 和目的串(ES:DI)的内容比较,SI不变,DI

33、自动加1或减1。 串装入 LODS :将源串(DS:SI) AL(AX),SI自动加1或减1, DI不变。 串存储 STOS :将AL(AX) 目的串(ES:DI),SI不变,DI自动加1或减1。,控制转移指令之一:转移指令,段内转移: 目标地址的偏移地址指令指针寄存器IP 段间转移: 目标地址的偏移地址IP 目标地址的段地址CS 直接转移: 目标地址偏移量直接放在指令中 间接转移: 目标地址偏移量放在寄存器或存储器中,控制转移指令之一:转移指令,无条件转移 段内直接短转移JMP short_lable ;(IP)(IP)+disp(8位) 段内直接转移 JMP near_lable ;(IP

34、)(IP)+disp(16位) 段内间接转移 JMP reg16 ;(IP)(reg16) JMP mem16 ;(IP)(mem16) 段间直接转移 JMP far_lable ;(IP)offset far_lable ;(CS)seg far_lable 段间间接转移 JMP mem32 ;(IP)(mem32) ;(CS)(mem32+2) JMP 2000H; JMP BX; JMP 0FFFFH:0 (热启动) JMP FAR PTR TABLESI; JMP NEAR PTR BPDI,控制转移指令之一:转移指令,条件转移指令: 将标志位的状态作为测试的条件,所以首先需要执行影响

35、标志位的指令(如CMP或TEST等),然后采用条件转移指令测试相应的标志,决定程序的转移。 段内直接短转移Jcc short_lable ;(IP)(IP)+disp(8位),无符号数,有符号数,JA /JNBE JAE /JNB = JB /JNAE JBE /JNA =,JG /JNLE JGE /JNL = JL /JNGE JLE /JNG =,链接,1、数的比较:,控制转移指令之一:转移指令,2、标志位,JCXZ,控制转移指令之一:转移指令,例 根据单个标志位的状态判断后转移的指令 ADD AX,BX JC TOO_BIG ;若加法有进位转至TOO_BIG处理 SUB AL,BL J

36、Z ZERO ;若减法结果为0,转至ZERO处理 例 比较无符号数FEH和05H的大小,执行下面的指令后,将转移到ABC处继续执行指令。 MOV AL,0FEH CMP AL,05H JA ABC ;若(AL)05H,则转向ABC,控制转移指令之二:循环控制指令,LOOP short_lable 将CX的内容减1,如果不为0,则 循环到短标号处 LOOPE/LOOPZ short_lable 相等或等于0循环 将CX的内容减1,如果结果不为0,且ZF1,则循环至短标号处。 LOOPNE/LOOPNZ short_lable 不相等或不等于0循环 将CX的内容减1,如果结果不为0,且ZF0,则循

37、环至短标号处。 JCXZ OPRD 当CX=0时转移至标号处,不影响CX内容 例P123,控制转移指令之三:过程调用指令,近过程、远过程,控制转移指令之三:过程调用指令,CALL 段内直接调用 CALL near_proc (SP)(SP)-2, (SP)+1:(SP)(IP), (IP)(IP)+disp 段内间接调用 CALL reg16/mem16 (SP)(SP)-2, (SP)+1:(SP)(IP), (IP)(reg16/mem16) 段间直接调用 CALL far_proc (SP)(SP)-2, (SP)+1:(SP)(CS), (CS)SEG far_proc (SP)(SP

38、)-2, (SP)+1:(SP)(IP), (IP) offset far_proc 段间间接调用 CALL mem32 (SP)(SP)-2, (SP)+1:(SP)(CS), (CS)(mem32+2) (SP)(SP)-2, (SP)+1:(SP)(IP), (IP)(mem32),控制转移指令之三:过程调用指令,RET 从近过程返回 RET (IP)(SP)+1:(SP) ,(SP)(SP)+2 RET pop_value (IP)(SP)+1:(SP) ,(SP)(SP)+2+ pop_value 从远过程返回 RET (IP)(SP)+1:(SP) ,(SP)(SP)+2 (CS)

39、(SP)+1:(SP) ,(SP)(SP)+2 RET pop_value (例:P121) (IP)(SP)+1:(SP) ,(SP)(SP)+2 (CS)(SP)+1:(SP) ,(SP)(SP)+2 + pop_value,控制转移指令之四:中断指令,INT n n为中断类型号,取值在0255之间 标志寄存器、IP、CS入栈,清除TF和IF INTO 溢出中断指令,若OF1启动一个中断过程 IRET 中断返回指令,自动将推入堆栈的段地址和偏移地址弹出,同时恢复标志寄存器的内容。,处理器控制指令,标志位操作(CLC、STC、CMC(取反) CLD、STD CLI、STI) 空操作指令NOP 处理器暂停指令HLT(RESET或中断才恢复执行) 处理器等待指令WAIT(TEST引脚无效的情况下等待) 处理器脱离指令ESC(将控制权交给协处理器) 总线锁定指令LOCK(使其他处理器不能使用总线等资源),作业,3-4,3-8,3-12(3)(4)(5),3-14(2)(5)(7),3-28,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1