收藏 分享(赏)

第3章汇编语言_1.ppt

上传人:ysd1539 文档编号:7996540 上传时间:2019-06-03 格式:PPT 页数:52 大小:380KB
下载 相关 举报
第3章汇编语言_1.ppt_第1页
第1页 / 共52页
第3章汇编语言_1.ppt_第2页
第2页 / 共52页
第3章汇编语言_1.ppt_第3页
第3页 / 共52页
第3章汇编语言_1.ppt_第4页
第4页 / 共52页
第3章汇编语言_1.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、汇编语言,第三章 指令系统与汇编语言程序设计,指令,第3.1节 基本概念 指令与指令系统 (一)指令 (Instruction) 指令是微处理器执行某种操作的命令。 操作: 传送类 加工处理类:算术运算、逻辑运算、移位循环 控制类:转移、调用、中断 串操作类,指令系统与寻址方式,(二)指令系统(Instruction Set) 微处理器全部指令的集合称为指令系统。 8086 CPU包括133条指令 (三)寻址方式 一条指令通常包括两部分 操作码:规定所要执行的操作类型 操作数:所需要处理的数据或者数据的地址信息 我们把获得数据或者数据地址信息的方式称为寻址方式 例:MOV AX, 1234H

2、在这条指令中有两个操作数,按照在指令中所处的位 置,将前者称为目的操作数,后者称为源操作数。该指令将数 据1234H传送到数据寄存器AX中,源操作数是“立即”寻址方 式,目的操作数是“寄存器”寻址方式。,隐含寻址,第3.2节 8086寻址方式寻址方式:寻找指令中操作数地址的方式。 数据寻址方式 (一)隐含寻址指令已经默认对CPU中的某个寄存器进行操作,不用在指令中指明所使用的寄存器,即隐含了规定的操作数,这样的寻址方式称为隐含寻址。例:DAA指令,只有操作码,无操作数,但已经规定是对AL中的内容进行十进制调整,立即寻址与寄存器寻址,(二)立即寻址操作数直接写在指令中,在指令译码执行时,可以立即

3、得到,同时把操作数又称作“立即数”例:MOV AL,5 ;(AL)5,操作数5采用的就是立即寻址 (三)寄存器寻址操作数放在CPU内部的寄存器中,在指令中直接指出寄存器的名字。例:MOV BX, AX ;(BX)(AX)以上三种寻址方式都是直接在处理器内部获得数据,操作速度快。,存储器寻址,(四)存储器操作数寻址操作数存放在存储器中时,指令执行时必须通过总线在存储器中存取操作数。执行单元EU根据指令中给出的寻址方式计算出16位的偏移量,称为有效地址(EA)送到总线接口单元BIU,经过加法器生成20位实际物理地址,在存储器读写总线周期对存储器进行操作,一般在表示EA时,用 操作数 表示。由于计算

4、EA需要时间,进行总线操作比较慢,因此存储器操作寻址比前三种要慢。 直接寻址指令中直接给出了操作数的有效地址例:MOV SI, 2000H ;(SI)(2000H)上例中默认使用数据段,若需使用其他段可使用段超越,MOV SI, ES:2000H,间接寻址,间接寻址指令中寄存器的值是操作数的有效地址,可间接寻址的寄 存器有:BX、BP、SI、DI例:MOV AL, BX ;(AL)(BX) BX用于间接寻址时,默认段寄存器为DS,允许段超越 BP用于间接寻址时,默认段寄存器为SS,允许段超越 SI用于间接寻址时,默认段寄存器为DS,允许段超越 DI用于间接寻址时,只有在串操作指令中,默认段寄存

5、器为ES,其余情况默认段寄存器均为DS,不允许段超越 直接寻址时,默认段寄存器为DS,允许段超越注:IP只能在代码段中(CS)寻址,SP只能在堆栈段(SS)中寻址,相对寻址,相对寻址 基址寻址操作数的有效地址是一个基址寄存器的内容加上一个8位或者16位的偏移量,基址寄存器是BX或者BP。 例:MOV AX,BX+1000H ;(AX)(BX)+1000H)有时也写成 MOV AX,1000HBX或MOV AX,BX1000H 变址寻址操作数的有效地址是一个变址寄存器的内容加上一个8位或者16位的偏移量,变址寄存器是SI和DI。 例:MOV AX, ARRAYSI ;(AX)(SI)+ARRAY

6、)在C语言中,常使用全局数组,例如定义了一个全局数组A3,具有三个元素,分别为A0、A1、A2,实,际上A在编译时就转换成具体的在数据段中分配的位置,例如 1000H,下标0、1、2一般就存放在寄存器中,如SI,通过 1000HSI就可以访问到具体的数据。 基址变址寻址操作数的有效地址是由基址寄存器和变址寄存器的内容相加产生例:MOV AX, BP+SI ;(AX)(BP)+(SI) 相对基址变址寻址操作数的有效地址是由基址寄存器、变址寄存器和偏移量三者相加产生。例:MOV AX, BX+SI+3H ;(AX)(BX)+(SI)+3H)有时也可写成MOV AX,3HBXSI或MOV AX,3H

7、BX+SI,基址变址寻址,I/O端口寻址,数据串寻址DS:SI指示源串,ES:DI指示目的串,串长度计数用CX,并自动修改指针和计数器值,只用于串操作命令。例:MOVSB ;(ES:DI)(DS:SI),(CX)=(CX)-1,;(SI)=(SI)+1,(DI)=(DI)+1 (五)I/O端口寻址操作数存放在I/O端口中,指令执行时必须通过累加器(AX或AL)实现对端口的访问。 直接端口寻址指令直接提供8位端口的地址。例:IN AL, 63H ;(AL)(0063H)在端口寻址时,地址可以不需要加 ,当端口地址用一个字节来表示时,可使用直接端口寻址,I/O端口寻址,间接端口寻址由DX寄存器给出

8、16位端口地址。例:MOV DX, 162HIN AX, DX从端口162H读取一个字的数据到AX中,实质是用DX间接表示端口地址。比较:MOV AX, DX ;(AX)(DX)IN AX, DX ;(AX)(DX),程序寻址,程序寻址方式 (一)段内直接寻址 短跳转:把IP的内容加上一个字节的补码数作为新的IP,往前最多跳-128个字节,往后最多跳 127个字节。 近跳转:把IP的内容加上两个字节的补码数作为新的IP,往前最多跳-32768个字节,往后最多跳32767个字节。 (二)段内间接寻址 将寄存器或存储器操作数的内容赋给IP,,程序寻址,(三)段间直接寻址 直接在指令中给出新的CS和

9、IP内容 (四)段间间接寻址 用存储器操作数的内容赋给CS和IP,第3.3节 8086指令格式,指令格式 指令一般由16个字节组成,具体格式如下:,(一)说明 字节1 OPCODE:指令操作码 D:操作数传输方向(立即数指令和串操作指令除外) D=0,Reg为源操作数 D=1,Reg为目的操作数 W:操作数字节长度 W=0,字节操作 W=1,字操作,指令格式,字节2,寻址方式 MOD:寻址方式字段 00存储器方式,指令中无偏移量 01存储器方式,指令中有8位偏移量 10存储器方式,指令中有16位偏移量 11寄存器方式,指令中无偏移量 Reg:寄存器编码字段 000=AL/AX 100=AH/S

10、P001=CL/CX 101=CH/BP010=DL/DX 110=DH/SI011=BL/BX 111=BH/DI,指令格式,R/M:寄存器/存储器字段 在MOD=11,寄存器模式下,R/M给出第二个操作数的寄存器编码。 在MOD11,存储器模式下,R/M给出计算有效地址的方法。,指令格式,字节3字节6 DISP:存储器操作数地址偏移量,长度由MOD字段定义 DATA:指令中的立即数 例:MOV AX, BX指令码为:8B 07MOV BX+SI+2000H, 2345H指令码为:C7 80 00 20 45 23MOV AX, BX指令码为:89 D8,第3.4节、8086指令系统,一、操

11、作数符号表示 DST:目的操作数 SRC:源操作数 TARGET:循环、转移和调用指令操作数 reg:寄存器操作数,字节或字 reg8:寄存器操作数,字节 reg16:寄存器操作数,字 mem:存储器操作数,字节或字 mem8:字节型存储器操作数 mem16:字型存储器操作数 mem32:双字型存储器操作数,acc:累加器AL或AX seg_reg:段寄存器 imm:立即操作数,字节或字 imm8:8位立即操作数 imm16:16位立即操作数 short_label:短标号(8位偏移量) near_label:近标号(16位地址或偏移) far_label:远标号(32位地址),二、数据传送指

12、令,(一)通用数据传送指令 MOV DST,SRC;(DST) (SRC) 具体指令: mov mem,acc mov acc,mem mov reg,reg mov reg,mem mov mem,reg mov reg,imm mov mem,imm mov seg_reg,reg16 ;CS除外 mov seg_reg,mem16 ;CS除外 mov reg16,seg_reg mov mem16,seg_reg,例: 合法指令: MOV AX,SI;(AX) (SI) MOV AL,SI;(AL) (SI) MOV DS,AX;(DS) (AX) MOV AX,DS;(AX) (DS)

13、 MOV SI,2000H;(SI) 2000H MOV SI,20H;(SI) 20H MOV SI,2000H;(SI) (2000H) MOV SI,SI+6;(SI) (SI)+6) MOV AX,AX;(AX) (AX) 非法指令: MOV SI,2000H MOV CS,BX MOV DS,2000H,(二)堆栈及堆栈操作,1 堆栈 堆栈是一种按先进后出(FILO)原则存取的存储器,它由堆栈指针寄存器SS:SP和RAM中的一部分组成,主要用于保护现场和恢复现场。 SP的内容总是指向栈顶,即最后推入信息所在单元。,2 进栈指令 PUSH SRC;(SP) (SP)-2, (SP)+1

14、,(SP) (SRC) 具体指令: PUSH reg16 PUSH seg_reg PUSH mem16 3 出栈指令 POP DST;(DST) (SP)+1, (SP), (SP)(SP)+2) 具体指令: POP reg16 POP seg_reg POP mem16,4 堆栈的应用 主要用于子程序调用或中断子程序的现场保护和恢复,以及参数传递等。 例1、保护现场,fun: PUSH DS PUSH ES PUSH AX PUSH BX ;处理部分 POP BX POP AX POP ES POP DS RET,例2、用堆栈交换数据 PUSH AX PUSH BX POP AX POP

15、BX,堆栈的应用,(三)交换指令,(三)交换指令 XCHG DST,SRC ;(DST)(SRC) 具体指令: XCHG acc,reg XCHG mem,reg XCHG reg,reg例1: XCHG AX,BX;(AX)(BX) XCHG AL,BL;(AL)(BL),例2:使用3种方法完成将寄存器AX和BX内容交换。 方法1 XCHG AX,BX;(AX)(BX) 方法2 PUSH AX PUSH BX POP AX POP BX 方法3: MOV CX,AX MOV AX,BX MOV BX,CX,1、输入指令 IN AL,PORT;(AL) (PORT) IN AX,PORT;(A

16、X) (PORT) IN AL,DX;(AL) (DX) IN AX,DX;(AX) (DX) PORT为8位直接地址2、输出指令 OUT PORT,AL;(PORT) (AL) OUT PORT,AX;(PORT) (AX) OUT DX,AL;(DX) (AL) OUT DX,AX;(DX) (AX),(四)累加器专用传送指令,3、换码指令 XLAT SRC;SRC 仅做类型检查 或XLAT; (AL)(BX)+(AL)例: MOV BX,offset TABLE XLAT TABLETABLE: DB 0DB 1DB 4DB 9DB 16DB 25,LEA (load effective

17、 address) LDS (load DS with pointer) LES (load ES with pointer) 1、有效地址传送指令 LEA reg16,SRC;(reg16) SRC 例: MSG db Hello$ LEA DX,MSG; 指令执行后 (DX)=2000H 相当于: MOV DX,OFFSET MSG如果指令: MOV DX,MSG 则:(DH)=e,(DL)=H,(五)地址传送指令,2、指针送寄存器和DSLDS reg16,mem32 ;(reg16) (mem32) ;(DS) (mem32+2) 把源操作数指定的4个字节传送到指定的寄存器及DS寄存器中

18、。 例: VECT DW 01F0HDW 2018H LDS BX,VECT; 执行后: (DS)=2018H (BX)=01F0H,3、指针送寄存器和ESLES reg16,mem32 ;(reg16) (mem32) ;(ES) (mem32+2) 把源操作数指定的4个字节传送到指定的寄存器及ES寄存器中。,地址传送指令,(六)标志寄存器传送1、LAHF;(AH) (flag低字节)2、SAHF; (flag低字节) (AH)3、PUSHF;(SP) (SP)-2, (SP)+1),(SP) flag4、POPF; flag (SP)+1),(SP), (SP) (SP)+2,(六)标志寄

19、存器传送,三、算术指令,(一)加法指令 1、ADD DST,SRC ;(DST) (SRC) + (DST) 具体指令: ADD reg,reg ADD reg,mem ADD mem,reg ADD reg,imm ADD mem,imm ADD acc,imm2、ADC DST,SRC ; (DST) (SRC) + (DST)+CF,具体指令: ADC reg,reg ADC reg,mem ADC mem,regADC reg,imm ADC mem,imm ADC acc,imm3、INC DST ;(DST) (DST)+1 具体指令: INC reg16 INC reg8 INC

20、 mem,算术类指令,间接寻址程序:LEA SI,DATA1LEA DI,DATA2LEA BX,RESULTMOV AX,SIADD AX,DIMOV BX,AXMOV AX,SI+2ADC AX,DI+2MOV BX+2,AX,直接寻址程序: MOV AX,DATA1 ADD AX,DATA2 MOV RESULT,AX MOV AX,DATA1+2 ADC AX,DATA2+2 MOV RESULT+2,AX,例:将数据段DATA1和DATA2中的32位二进制无符号数相加,结果存放在RESULT单元中,(二)减法指令,1、SUB DST,SRC ;(DST) (DST)-(SRC) 具体

21、指令: SUB reg,reg SUB reg,mem SUB mem,reg SUB reg,imm SUB mem,imm SUB acc,imm,2、SBB DST,SRC ; (DST) (DST)-(SRC)-CF 具体指令: SBB reg,reg SBB reg,mem SBB mem,reg SBB reg,imm SBB mem,imm SBB acc,imm,5、CMP DST,SRC ;(DST)-(SRC),仅影响标志 具体指令: CMP reg,reg CMP reg,mem CMP mem,reg CMP reg,imm CMP mem,imm CMP acc,im

22、m,3、DEC DST ;(DST) (DST)-1 具体指令: DEC reg16 DEC reg8 DEC mem,4、NEG DST ;(DST)=0-(DST) 具体指令: NEG reg NEG mem,(二)减法指令,1、无符号数乘法 MUL SRC ;(AX) (AL)*(SRC) (DX,AX) (AX)*(SRC)具体指令: MUL reg8 MUL reg16 MUL mem8 MUL mem16,(三)乘法指令,2、有符号数乘法 IMUL SRC ;(AX) (AL)*(SRC)(DX,AX) (AX)*(SRC)具体指令: IMUL reg8 IMUL reg16 IM

23、UL mem8 IMUL mem16,(四)除法指令,1、无符号数除法指令 DIV SRC ;(AL) (AX)/(SRC),(AH) (AX)%(SRC) 或 (AX)(DX,AX)/(SRC),(DX) (DX,AX)%(SRC)具体指令: DIV reg8 DIV reg16 DIV mem8 DIV mem16,2、有符号数除法指令 IDIV SRC; 操作与DIV相同 具体指令: IDIV reg8 IDIV reg16 IDIV mem8 IDIV mem163、字转换成字节指令(有符号数) CBW ;若(AL) 80H则(AH)0,否则(AH) FFH。4、有符号字转换成双字指令

24、 CWD;若(AX)8000H,则(DX) 0,否则(DX) FFFFH.,(五)BCD码调整指令,1、8086支持两种BCD码运算 压缩BCD码,通常BCD码。每个字节2位BCD码。如:10010101B=95H,值为95 非压缩BCD码,低4位为BCD码,高4位为零。如:00000101B表示BCD码5。 加减运算非压缩BCD码高4位的值可不为0,乘除时高4位必须是0。2、压缩BCD码调整指令 DAA ;对加法运算结果(AL)进行BCD码调整。 DAS ;对减法运算结果(AL)进行BCD码调整。,3、非压缩BCD码调整 AAA ;对加法运算非压缩BCD码进行调整,进位送(AH)中 AAS

25、;对减法运算非压缩BCD码进行调整 AAM ;对乘法运算非压缩BCD码进行调整 AAD ;对除法运算非压缩BCD码进行调整例:下列程序段执行后(AL)=? CF=? MOV AL,89H ADD AL,43H DAA,算术类指令,例:将32位无符号数DATA1和DATA2 相乘,结果存于RESULT中。,DA1H DA1L*) DA2H DA2LDA1L2LH DA1L2LLDA1H2LH DA1H2LLDA2H1LH DA2H1LL+) DA1H2HH DA1H2HL,算术类指令,LEA SI,RESULT SUB AX,AX MOV SI+4,AX MOV SI+6,AX MOV AX,D

26、ATA1 MUL DATA2 MOV SI,AX MOV SI+2,DX MOV AX,DATA1+2 MUL DATA2 ADD SI+2,AX ADC SI+4,DX ADC SI+6,0,MOV AX,DATA1 MUL DATA2+2 ADD SI+2,AX ADC SI+4,DX ADC SI+6,0 MOV AX,DATA1+2 MUL DATA2+2 ADD SI+4,AX ADC SI+6,DX,四、逻辑指令,2、OR DST,SRC ;(DST) (DST)|(SRC) 具体指令 OR reg,reg OR reg,mem OR mem,reg OR reg,imm OR m

27、em,imm OR acc,imm3 、NOT DST;(DST) (DST) 具体指令: NOT reg NOT mem,(一)逻辑运算指令1、AND DST,SRC ;(DST) (DST)&(SRC) 具体指令 AND reg,reg AND reg,mem AND mem,reg AND reg,imm AND mem,imm AND acc,imm,逻辑指令,4、XOR DST,SRC;(DST) (DST)(SRC) 具体指令 XOR reg,reg XOR reg,mem XOR mem,reg XOR reg,imm XOR mem,imm XOR acc,imm,5、TEST

28、 DST,SRC ;(DST)&(SRC),仅影响标志 具体指令 TEST reg,reg TEST reg,mem TEST reg,imm TEST mem,imm TEST acc,imm,(二)移位指令,1、逻辑左移指令 SHL DST,count; ;count可以为1, ;也可以为CL做移位计数。 具体指令: SHL reg,1 SHL reg,CL SHL mem,1 SHL mem,CL ;移位和循环指令均雷同。,2、算术左移指令 SAL DST,count;,例:写出3条指令将寄存器AX中的数据乘2。SAL AX,1 SHL AX,1 ADD AX,AX,3、逻辑右移指令 S

29、HR DST,count;4、算术右移指令 SAR DST,count;5、循环左移指令 ROL DST,count;,6、循环右移指令 ROR DST,count;7、带进位循环左移指令 RCL DST,count;8、带进位循环右移指令 RCR DST,count;,五、串处理指令,(一)数据串传送指令 1、串传送指令 MOVS DST,SRC;DST与SRC做类型检查, 具体指令: MOVSB ; (ES:DI) (DS:SI),(SI) (SI)1, (DI)(DI)1 MOVSW ; (ES:DI) (DS:SI), (SI) (SI)2, (DI) (DI)2 其中,加、减地址指针

30、SI和DI由FLAG中的DF决定,DF=0地址增加,DF=1地址减少。 2、建立方向标志指令 CLD ;DF0 STD ;DF1,3、重复串操作直到(CX)=0 在串操作指令前,可加重复操作REP前缀,使串连续操作直到(CX)=0.例: REP MOVSB;以CX寄存器做计数器,每传送一个数(CX)减1,直到(CX)为0。,串操作类指令,例1:将1000H开始的10个字节移动到2000H开始的单元MOV SI, 1000H ;置源操作数起始地址MOV DI, 2000H ;置目的操作数起始地址MOV AX, DS ;将DS和ES段统一,比PUSH DSMOV ES, AX ;POP ES 要快

31、MOV CX, 0AH ;初始化CX为10,移动10个字节CLD ;使DF=0,使地址作增量变化REP MOVSB ;(ES:DI)(DS:SI),SISI+1, ;(DI)(DI)+1INT 3 ;断点指令,4、存入串指令 STOS DST;DST做类型检查具体指令: STOSB ;(ES:DI) (AL), (DI) (DI)1 STOSW ;(ES:DI) (AX), (DI) (DI)2 由DF决定方向,可加入前缀REP。,5、从串中取指令 LODS SRC;SRC做类型检查具体指令: LODSB ; (AL) (DS:SI) , (SI) (SI)1 LODSW ; (AX) (DS

32、:SI) ,(SI) (SI)2 地址增减由DF决定。,串操作类指令,1、串比较指令 CMPS SRC,DST ;SRC和DST仅做类型检查 具体指令: CMPSB ;(DS:SI)-(ES:DI), (SI) (SI)1, (DI) (DI)1 CMPSW ;(DS:SI)-(ES:DI), (SI) (SI)2, (DI) (DI)2 串比较仅影响标志。 地址增减由DF决定。,2、条件重复前缀 (1)相等或为0时重复 REPZ REPE 执行操作:若(CX)=0或ZF=0(比较不相等)时退出,否则继续执行。(2)不相等或不为0时重复 REPNZ REPNE 执行操作:若(CX)0且ZF=0

33、(比较不相等)时继续执行,否则退出。,(二)字符串扫描和比较指令,3、串扫描指令 SCAS DST;DST做类型检查 具体指令: SCASB ;(AL)-(ES:DI), ;(DI) (DI)1,影响标志 SCASW ;(AX)-(ES:DI), ;(DI) (DI)2,影响标志 地址增减由DF决定。 可加条件前缀。例:REPNZ SCASB,例:以ds:si 为起始地址以NULL结束标志的字符串,计算其长度,结果存于(AX)中mov di,si;mov ax,ds;mov es,ax;es:di指向字符串xor al,al ;(al)清零mov cx,0ffffh;(cx)置初值cldrep

34、nz scasb ;查找结束符mov ax,cxnot ax ;(cx)含结束符长度dec ax ;去掉结束符ret,六、控制转移指令,(一)无条件转移指令 JMP TARGET ;转移到目的地址 具体指令: JMP short_label;(IP)-(IP)+short_label JMP near_label;(IP)-(IP)+near_label JMP far_label;(CS:IP)-far_label JMP mem16;间接转移;(IP)-(mem16) JMP reg16 ;间接转移;(IP)-(reg16) JMP mem32;间接转移;(IP)-(mem32),;(CS

35、)-(mem32+2),(二)条件转移指令1、根据单个标志转移JZ short_label ;结果为0转移 JE short_label ;结果相等转移 测试条件:ZF=1JNZ short_label;结果不为0则转移 JNE short_label;结果不相等则转移 测试条件:ZF=0,JS short_label;结果为负则转移 测试条件:SF=1JNS short_label;结果非负则转移 测试条件:SF=0JNO short_label;结果不溢出则转移 测试条件:OF=0JO short_label;结果溢出则转移 测试条件:OF=1JP short_label;奇偶为1则转移

36、JPE short_label;偶转移 测试标志:PF=1,JNP short_label;奇偶为0则转移 JPO short_label;奇转移 测试标志:PF=0JB short_label;有借位转移 JNAE short_label;不大于等于转移 JC short_label;有进位转移 测试条件:CF=1JNB short_label;无借位转移 JAE short_label;大于等于转移 JNC short_label;无进位转移 测试条件:CF=0,条件转移指令,2、两个无符号数比较转移JB/JNAE/JC ;CF=1 JNB/JAE/JC ;CF=0JBE short_la

37、bel;小于等于转移 JNA short_label;不大于转移 测试条件:CF|ZF=1JNBE short_label;不小于等于 ;转移 JA short_label;大于转移 测试条件:CF|ZF=0,3、两个有符号数比较转移 JL short_label;小于转移 JNGE short_label;不大于等于转移 测试条件:SFOF=1JNL short_label;不小于转移 JGE short_label; 大于等于转移 测试条件:SFOF=0JNLE short_label;不小于等于转移 JG short_label; 大于转移 测试条件:(SFOF)|ZF=0JLE sho

38、rt_label; 小于等于转移 JNG short_label;不大于转移 测试条件:(SFOF)|ZF=1,条件转移指令,(三)循环指令 1、LOOP short_label;(CX) (CX)-1,(CX)0则转移2、LOOPZ short_labelLOOPE short_label;(CX) (CX)-1,(CX)0且ZF=1(为0)则转移3、LOOPNZ short_labelLOOPNE short_label;(CX) (CX)-1,(CX)0且ZF=0(非0)则转移,4、测试CX值,为0则转移JCXZ short_label ;(CX)=0则转移 测试条件:(CX)=0,(三

39、)循环指令,(四)子程序调用与返回,1、子程序调用指令 CALL TARGET 具体指令 CALL near_proc;段内调用 CALL far_proc;段间调用 CALL mem16; CALL regp16; CALL mem32;2、返回指令 RET ;返回指令,RET IMM16 带立即数返回 说明:在RET指令的基础上,当从堆栈中弹出IP和CS后,再将SP加上一个字的立即数,使得返回后(SP) (SP) + IMM16 (五)中断调用与返回 中断调用 INT n 操作:依次将FLAG,当前CS和IP(即断点地址)放入堆栈,清除IF和TF。执行中断类型码为n的中断服务程序。 注:

40、INT n 的机器码为 CDH nINT 3 的机器码特殊,为 CCH,(五)中断调用与返回,INTO 说明:在有符号数运算结束以后,可以使用INTO,若OF=1,则执行中断指令INT 4,否则无操作。 IRET 中断返回指令从中断程序返回主程序,恢复断点和FLAG (六)控制类指令 标志处理指令 CLC/STC/CMC 对CF 清0 / 置位 /取反 CLD/STD 对DF 清0 / 置位 CLI/STI 对IF 清0 / 置位,(六)控制类指令,处理器控制指令 NOP 空操作指令占用一个字节的机器码,不执行任何操作 HLT (Halt) 停机指令该指令使处理器处于停机状态,以便等待一次外部中断到来。 WAIT 等待指令该指令使处理器处于空转状态,也可用来等待外部中断的到来 ESC (Escape) 换码指令 用作前缀 格式:ESC MEM,其中MEM指出一个存储单元,ESC指令把该存储单元的内容送到数据总线去。 LOCK 封锁指令 用作前缀该指令与其他指令联合,用来维持总线的封锁信号直到与其联合的指令执行完为止。,处理器控制指令,

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

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

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


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

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

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