微机原理第06次课第03章-3-NEW.ppt
微机原理及应用微机原理及应用微机原理及应用微机原理及应用8086指令系统传送类指令数据操作类指令串操作指令控制类指令本章要求本章要求微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作类指令 串操作指令就是用一条指令实现对一串字符或数据的串操作指令就是用一条指令实现对一串字符或数据的操作。操作。它主要由以下几种指令组成:一、一、字符串传送指令:字符串传送指令:MOVSB/MOVSWMOVSB/MOVSW二二、字符串比较指令:字符串比较指令:CMPSB/CMPSWCMPSB/CMPSW三三、字符串检索指令:字符串检索指令:SCASB/SCASWSCASB/SCASW四四、取字符串指令:取字符串指令:LODSB/LODSWLODSB/LODSW 五五、存字符串指令:存字符串指令:STOSB/STOSWSTOSB/STOSW返回返回串操作类指令特点微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令针对数据块或字符串的操作针对数据块或字符串的操作可实现存储器到存储器的数据传送可实现存储器到存储器的数据传送待操作的数据串称为源串,目标地址称为目待操作的数据串称为源串,目标地址称为目标串标串串操作指令是唯一的一组能直接处理源和目串操作指令是唯一的一组能直接处理源和目的操作数都在存储单元的指令的操作数都在存储单元的指令微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令的特点源串一般存放在数据段,偏移地址由源串一般存放在数据段,偏移地址由SISI指定。允指定。允许段重设许段重设目标串必须在附加段,偏移地址由目标串必须在附加段,偏移地址由DIDI指定指定指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DFDF决定。决定。DF=0 DF=0 增地址方向;增地址方向;DF=1 DF=1 减地址方向减地址方向数据块长度值由数据块长度值由CXCX指定指定可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CXCX内容内容微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令流程取源串地址取源串地址取目标串地址取目标串地址设串长度设串长度传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?微机原理及应用微机原理及应用微机原理及应用微机原理及应用重复前缀REP REP 无条件重复无条件重复REPE REPE 相等重复相等重复REPZ REPZ 为零重复为零重复REPNE REPNE 不相等重复不相等重复REPNZ REPNZ 不为零重复不为零重复条件重复条件重复CX0ZF=1CX0ZF=0CX0 重复重复微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令与重复前缀串操作指令串操作指令前缀前缀MOVSREPCMPSREPE/PEPZ REPNE/REPNZSCASREPE/PEPZ REPNE/REPNZLODSREPSTOSREP微机原理及应用微机原理及应用微机原理及应用微机原理及应用示 例LEA SI ,BUFFER1LEA DI ,BUFFER2MOV CX,17CLDREP MOVSB LEA SI ,BUFFER1 LEA DI ,BUFFER2 MOV CX,17 CLDAGAIN:MOVSB DEC CX JNZ AGAIN LEA SI,BUFFER1 LEA DI,BUFFER2 MOV CX,17AGAIN:MOV AL,SI MOV DI,AL INC SI INC DI DEC CX JNZ AGAINREP 执行的操作执行的操作:1)如如(CX)=0则退出则退出REP,否则往下执行否则往下执行.2)(CX)=(CX)-13)执行其后的串指令执行其后的串指令4)重复重复1)3)编写程序实现:将编写程序实现:将BUFFER1BUFFER1中的中的1717个数传送到个数传送到BUFFER2BUFFER2中去。中去。微机原理及应用微机原理及应用微机原理及应用微机原理及应用怎样编写程序?DATA SEGMENTDATA ENDSEXTRA SEGMENTEXTRA ENDSCODE SEGMENTCODE ENDS ASSUME CS:CODE,DS:DATA,ES:EXTRA MOV AX ,DATA MOV DS ,AX MOV AX ,EXTRA MOV ES ,AX BUFFER1 DB Hello,everybody!BUFFER2 DB 17 DUP(?)LEA SI ,BUFFER1LEA DI ,BUFFER2MOV CX,17CLDREP MOVSBSTA:END STA返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串传送指令指令格式:MOVS DST,SRC;(DI)(SI)字节字节 MOVSB ;字节字节 (DI)(DI)1,(SI)(SI)1 MOVSW ;字字 (DI)(DI)2,(SI)(SI)2指令功能:把把DSDS段由段由SISI指出的字节或字传送到指出的字节或字传送到ESES段由段由DIDI指出存储单元中,并修改指出存储单元中,并修改SISI和和DIDI地址指针。地址指针。MOVSBMOVSB完成完成字节操作,字节操作,MOVSWMOVSW完成字操作,通常指令前面加重复前缀完成字操作,通常指令前面加重复前缀REPREP,数据串长度送数据串长度送CXCX寄存器。寄存器。指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串传送指令说明用用CLDCLD指令将指令将DFDF清零,地址指针自动加清零,地址指针自动加(MOVSB(MOVSB1 MOVSW 1 MOVSW 2)2)增址增址用用STDSTD指令将指令将DFDF置置1 1,地址指针自动减,地址指针自动减(MOVSB(MOVSB1 MOVSW 1 MOVSW 2)2)减址减址第二、三种格式明确地注明是传送字节或字,隐含了两第二、三种格式明确地注明是传送字节或字,隐含了两个操作数的地址。第一种格式则应在操作数明确是字还个操作数的地址。第一种格式则应在操作数明确是字还是字节操作是字节操作,如:如:MOVS ES:BYTE PTRDI,DS:SI MOVS ES:BYTE PTRDI,DS:SI 微机原理及应用微机原理及应用微机原理及应用微机原理及应用串传送指令例用串传送指令实现用串传送指令实现200B200B数据的传送:数据的传送:LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串比较指令指令格式:指令格式:CMPS DST,SRC;(DI)(SI)字节字节 CMPSB ;字节字节 (DI)(DI)1,(SI)(SI)1 CMPSW ;字字 (DI)(DI)2,(SI)(SI)2指令功能:指令功能:把把DSDS段由段由SISI指出的字节或字和指出的字节或字和ESES段由段由DIDI指出指出的字或字节相比较,并比较后修改的字或字节相比较,并比较后修改SISI和和DIDI地址指针。指地址指针。指令影响标志位,利用重复前缀可实现在两个字符串中寻令影响标志位,利用重复前缀可实现在两个字符串中寻找第一个不等的元素或第一个相等的元素。找第一个不等的元素或第一个相等的元素。指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串比较指令说明指令前缀有以下三种形式:指令前缀有以下三种形式:(1)REP 重复重复 (2)REPZ/REPE 相等相等/为零则重复为零则重复 (3)REPNZ/REPNE 不相等不相等/不为零则重不为零则重复复微机原理及应用微机原理及应用微机原理及应用微机原理及应用串比较指令例 比较两个字符串是否相等,并找出其中第一个不相等字符比较两个字符串是否相等,并找出其中第一个不相等字符的首地址,将该地址送到的首地址,将该地址送到BXBX中,不想等字符送到中,不想等字符送到ALAL中。设中。设MEM1MEM1为源串首地址,为源串首地址,MEN2MEN2为目的串首地址,两个字串长度为目的串首地址,两个字串长度均为均为200200。LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB TEST CX,00FFH JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串检索指令指令格式:指令格式:SCAS DST;SCASB ;字节字节 (AL)(DI),(DI)(DI)1 SCASW ;字字 (AX)(DI),(DI)(DI)2指令功能:指令功能:用用ALAL中的字节或中的字节或AXAX中的字,与位于中的字,与位于ESES段段由由DIDI寄存器指出内存单元的字节或字相比较。通过前寄存器指出内存单元的字节或字相比较。通过前缀控制,可以实现缀控制,可以实现ALAL中的字节或中的字节或AXAX中的字与内存单元中的字与内存单元相等或不等的比较。相等或不等的比较。指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串检索指令说明指令指令REPNZ SCASBREPNZ SCASB有以下两种退出情况:有以下两种退出情况:(1 1)字符串中某字节与)字符串中某字节与ALAL中的字节相等,从中的字节相等,从而退出。而退出。(2 2)字符串中没有字节与)字符串中没有字节与ALAL中的字节相等,中的字节相等,但检索完毕,从而退出。可通过但检索完毕,从而退出。可通过ZFZF检测来判断检测来判断当前处于哪种情况,当前处于哪种情况,ZF=1ZF=1,为前一种情况,为前一种情况,ZF=0ZF=0,为后一种情况,为后一种情况,ZFZF与与CXCX无关。无关。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用取字符串指令指令格式:指令格式:LODS SRC;LODSB ;字节字节 (AL)(SI),(SI)(SI)1 LODSW ;字字 (AX)(SI),(SI)(SI)2指令功能:指令功能:将位于将位于DSDS段由段由SISI寄存器指出内存单元的寄存器指出内存单元的内容取到内容取到ALAL或或AXAX中。中。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用存字符串指令指令格式:指令格式:STOS DST;STOSB ;字节字节 (AL)(DI),(DI)(DI)1 STOSW ;字字 (AX)(DI),(DI)(DI)2指令功能:指令功能:把把ALAL中的字节或中的字节或AXAX中的字,存到中的字,存到ESES段由段由DIDI寄存器指出内存单元,并自动修改地址指针。加上寄存器指出内存单元,并自动修改地址指针。加上前缀前缀REPREP后,可使一串内存单元中填满相同的数。后,可使一串内存单元中填满相同的数。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用控制类指令此类指令主要由以下几部分组成:此类指令主要由以下几部分组成:一一、子程序调用和返回指令子程序调用和返回指令二二、无条件转移和条件转移指令无条件转移和条件转移指令三三、循环控制指令循环控制指令四、四、中断控制指令中断控制指令五五、处理器控制指令处理器控制指令返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序调用和返回指令子程序结构相当于高级语言中的过程。为子程序结构相当于高级语言中的过程。为了方便模块化程序设计,往往把程序中某了方便模块化程序设计,往往把程序中某些具有独立功能的部分编写成独立的程序些具有独立功能的部分编写成独立的程序模块,称之为程序。子程序调用和返回指模块,称之为程序。子程序调用和返回指令都不影响标志位。令都不影响标志位。一、一、子程序调用指令子程序调用指令:CALL CALL 二、二、子程序返回指令:子程序返回指令:RETRET返回返回指令说明:微机原理及应用微机原理及应用微机原理及应用微机原理及应用调用指令的执行过程将调用指令的下一条指令的地址(断点)压入将调用指令的下一条指令的地址(断点)压入堆栈堆栈获取子过程的入口地址(子过程第获取子过程的入口地址(子过程第1 1条指令的条指令的偏移地址)偏移地址)(执行子过程,含相应参数的保存及恢复)(执行子过程,含相应参数的保存及恢复)将断点偏移地址由堆栈弹出,返回原程序将断点偏移地址由堆栈弹出,返回原程序返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序调用指令该类指令提供了子程序内直接调用指令、段内该类指令提供了子程序内直接调用指令、段内间接调用指令、段间直接调用指令和段间间接间接调用指令、段间直接调用指令和段间间接调用指令。调用指令。一、一、段内直接调用段内直接调用 二二、段内间接调用段内间接调用 三、三、段间直接调用段间直接调用 四、四、段间间接调用段间间接调用 指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用段内直接调用指令格式:CALL DST;(SP)(SP)-2,(SP)-2,(SP)-1)(IP)(IP)(IP)+16位偏移量位偏移量例如:CALL 1000H;段内直接调用,调用地址段内直接调用,调用地址 在指令中给出在指令中给出返回返回l子过程与原调用程序在同一代码段,在调用子过程与原调用程序在同一代码段,在调用之前只需保护断点的偏移地址之前只需保护断点的偏移地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用段内间接调用指令格式:CALL DST;(SP)(SP)-2,(SP)-2,(SP)-1)(IP)(IP)(EA)例如:CALL AX;段内段内间接调用,调用地址间接调用,调用地址 由由AXAX给出。给出。(IP)(AX)返回返回l子过程与原调用程序在同一代码段,在调用子过程与原调用程序在同一代码段,在调用之前只需保护断点的偏移地址之前只需保护断点的偏移地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用段间直接调用指令格式:CALL DST;(SP)(SP)-2,(SP)-2,(SP)-1)(CS)段地址段地址 (SP)(SP)-2,(SP)-2,(SP)-1)(IP)偏移地址偏移地址 例如:CALL 2500:3600 ;段间直接调用,调用段地段间直接调用,调用段地 址和偏移量在指令中给出址和偏移量在指令中给出返回返回l子过程与原调用程序不在同一代码段,子过程与原调用程序不在同一代码段,在调用之前在调用之前需保护断点的段基地址和偏移地址。先将断点的需保护断点的段基地址和偏移地址。先将断点的CSCS压栈,再压入压栈,再压入IPIP微机原理及应用微机原理及应用微机原理及应用微机原理及应用段间间接调用指令格式:指令格式:CALL DST;CALL DST;(SP)(SP)-2,(SP)-2,(SP)-1)(CS)(SP)(SP)-2,(SP)-2,(SP)-1)(IP)(IP)(EA)寻址方式确定的有效地址寻址方式确定的有效地址 (CS)(EA+2)例如:例如:CALL DWORD PTRDI ;段间间接调用,指令给段间间接调用,指令给出出 调用段地址和偏移量的存调用段地址和偏移量的存 放地址放地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用示例设设(DS)=6000H,(SI)=0560H,指指令令 CALL DWORD PTRDI 的操作示意图的操作示意图XXHXXHXXHXXHIPCSCALL 代代码码段段数数据据段段60560H返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序调用指令说明调用指令在执行时,会把下一条指令的地址推入堆栈,这个地址叫返回地址。在段内调用的情况下,只把返回地址的偏移量推入堆栈,在段间调用的情况下,把返回地址的段地址和偏移量都推入堆栈。返回返回断点断点入口入口地址地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序返回指令该该指令有以下两条:指令有以下两条:一、一、子程序返回指令子程序返回指令:RETRET 二、二、带参数的返回指令:带参数的返回指令:RET nRET n 所有返回指令都不影响标志位所有返回指令都不影响标志位返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序返回指令:RET指令格式:指令格式:RET ;(IP)(SP)+1,(SP)(SP)(SP)+2指令说明:指令说明:返回指令返回指令RETRET作为子程序的最后一作为子程序的最后一条指令用来返回高一层的程序。执行时,会从条指令用来返回高一层的程序。执行时,会从堆栈顶部弹出返回地址出栈送堆栈顶部弹出返回地址出栈送IPIP寄存器寄存器 (段内段内或段间或段间)和和CSCS寄存器寄存器(段间段间)。80868086指令系统中,指令系统中,段内返回指令和段间返回指令形式是一样的。段内返回指令和段间返回指令形式是一样的。不影响标志位。不影响标志位。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用带参数的返回指令:RET n指令格式:指令格式:RET EXP;(IP)(SP)+1,(SP)(SP)(SP)+2 (SP)(SP)+D16指令说明:指令说明:EXPEXP是一个表达式,根据它的值计算出常数为是一个表达式,根据它的值计算出常数为指令中的位移量指令中的位移量n n。n n可以表示为可以表示为0FFFFH0FFFFH范围中的任何一范围中的任何一个偶数。个偶数。应用范围:应用范围:主程序为某个子程序提供一定的参数或参数主程序为某个子程序提供一定的参数或参数地址,在进入子程序之前,主程序将这些参数或参数的地址,在进入子程序之前,主程序将这些参数或参数的地址压入堆栈中,通过堆栈供子程序调用,子程序使用地址压入堆栈中,通过堆栈供子程序调用,子程序使用后,这些参数已无使用价值,堆栈中不需要保存这些参后,这些参数已无使用价值,堆栈中不需要保存这些参数,因而在返回指令数,因而在返回指令RETRET中提供参数中提供参数n n在返回同时堆栈指在返回同时堆栈指针自动增加几个字节,以去掉堆栈中的几个字节。针自动增加几个字节,以去掉堆栈中的几个字节。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用无条件转移和条件转移指令一、一、无条件转移指令无条件转移指令 无条件转移到目标地址,执行新的指令无条件转移到目标地址,执行新的指令二二、条件转移指令条件转移指令 在具备一定条件的情况下转移到目标地址在具备一定条件的情况下转移到目标地址返回返回通过修改指令的通过修改指令的偏移地址偏移地址或或段地址及偏移地址段地址及偏移地址实实现程序的转移现程序的转移微机原理及应用微机原理及应用微机原理及应用微机原理及应用无条件转移指令:JMP指令功能:指令功能:无条件转移指令可以转移到内存中存放的任何程序段。无条件转移指令可以转移到内存中存放的任何程序段。指令必须指定转移的目标地址(或称转移地址)。无指令必须指定转移的目标地址(或称转移地址)。无条件转移指令条件转移指令不影响标志位不影响标志位。指令分类:指令分类:段内转移和段间转移。段内转移只须改变段内转移和段间转移。段内转移只须改变IPIP寄存器的寄存器的内容,用新的转移目标地址代替原有的内容,用新的转移目标地址代替原有的IPIP的值就可以。的值就可以。段间则转到另一段去执行程序,因此,不仅要修改段间则转到另一段去执行程序,因此,不仅要修改IPIP寄存器的内容,而且还要修改寄存器的内容,而且还要修改CSCS寄存器的内容。寄存器的内容。指令格式指令格式返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用无条件转移指令格式指令格式:指令格式:JMP LABEL (1)(1)段内直接短转移:段内直接短转移:格式:格式:JMP SHORT OPR;(IP)(IP)(IP)+8(IP)+8位移量位移量 ;8;8位移量是一个带符号位移量是一个带符号 数,转移范围在数,转移范围在 128-+127128-+127 例如:例如:JMP SHORT 10H;JMP SHORT 10H;转移地址偏移量在指令转移地址偏移量在指令 中给出中给出 (2)(2)段内直接近转移:段内直接近转移:格式:格式:JMP NEAR PTR OPRJMP NEAR PTR OPR (IP)(IP)(IP)+16(IP)+16位移量位移量;16;16位移量是一个带符号位移量是一个带符号 数,转移范围在段内任意位置数,转移范围在段内任意位置 例如例如:JMP 1000H JMP 1000H;段内直接转移,转移地址偏段内直接转移,转移地址偏移量在指令中给出移量在指令中给出返回返回下一页下一页微机原理及应用微机原理及应用微机原理及应用微机原理及应用无条件转移指令格式 (3)(3)段内间接转移:段内间接转移:格式:格式:JMP WORD PTR OPR;JMP WORD PTR OPR;(IP)(IP)(EA);(EA);EA EA值由值由OPROPR的寻址方式确定。的寻址方式确定。它可以使用除立即数以外的任一种寻址方式。它可以使用除立即数以外的任一种寻址方式。例如:例如:JMP CX ;JMP CX ;段内间接转移,转移地址偏移段内间接转移,转移地址偏移 量由量由CXCX给出给出(4)(4)段间直接段间直接(远远)转移转移 :格式:格式:JMP FAR PTR OPR;JMP FAR PTR OPR;(IP)OPR (IP)OPR的段内偏移地址的段内偏移地址;(CS)OPR;(CS)OPR所在所在 段的段地址段的段地址例如:例如:JMP 2000:0100H;JMP 2000:0100H;段间直接转移,转移段段间直接转移,转移段 地址和偏移量在指令中给出地址和偏移量在指令中给出返回返回下一页下一页微机原理及应用微机原理及应用微机原理及应用微机原理及应用无条件转移指令格式(5)(5)段间间接转移:段间间接转移:格式:格式:JMP DWORD PTR OPR;JMP DWORD PTR OPR;(IP)(EA)(CS)(EA+2)(IP)(EA)(CS)(EA+2)EA EA值由值由OPROPR的寻址方式确定。它可以使用除立即数以外的寻址方式确定。它可以使用除立即数以外的任一种寻址方式。的任一种寻址方式。例如:例如:JMP DWORD PTRSI JMP DWORD PTRSI 段间间接转移,转移地址在段间间接转移,转移地址在SISI,SI+1SI+1,SI+2SI+2,SI+3SI+3所指的内存单元中,前两个字节为偏移量,后两个所指的内存单元中,前两个字节为偏移量,后两个字节为段地址。字节为段地址。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用条件转移指令条件转移指令是以某一个标志位的值或者某几个标志条件转移指令是以某一个标志位的值或者某几个标志位的值作为判断是否进行转移的依据,如果满足要求位的值作为判断是否进行转移的依据,如果满足要求则转移,否则执行后续指令。则转移,否则执行后续指令。条件转移指令可以分为以下几大类:条件转移指令可以分为以下几大类:一、一、根据单个条件标志的设置情况转移根据单个条件标志的设置情况转移 二、二、比较两个无符号比较两个无符号数数 三、三、比较两个带符号比较两个带符号数数 四、四、CXCX寄存器值判断寄存器值判断 指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用单个条件标志转移指令指令格式:指令格式:JZ/JE OPR ;结果为结果为0 0或相等,则转移或相等,则转移 ZF=1 JNZ/JNE OPR;结果不为结果不为0 0或不相等,则转移或不相等,则转移ZF=0 JS OPR;结果为负,则转移结果为负,则转移 SF=1 JNS OPR;结果为正,则转移结果为正,则转移 SF=0 JO OPR;溢出,则转移溢出,则转移 OF=1 返回返回下一页下一页微机原理及应用微机原理及应用微机原理及应用微机原理及应用单个条件标志转移指令 JNO OPR ;不溢出,则转移不溢出,则转移 OF=0 JP/JPE OPR ;奇偶位为奇偶位为1 1,则转移,则转移 PF=1 JNP/JPO OPR ;奇偶位为奇偶位为0 0,则转移,则转移 PF=0 JB/JNAE/JC OPR;低于低于(不高于也不等于不高于也不等于)或或 进位为进位为1 1,则转移,则转移 CF=1 JNB/JAE/JNC OPR;不低于不低于(高于或等于高于或等于)或进或进 位为位为0 0,则转移,则转移 CF=0返回返回上一页上一页微机原理及应用微机原理及应用微机原理及应用微机原理及应用比较两个无符号数指令格式:指令格式:JB/JNAE/JC OPR;低于,不高于也不等于,或进低于,不高于也不等于,或进 位为位为1 1,则转移,则转移 CF=1 JNB/JAE/JNC OPR;不低于,高于或等于,或进位为不低于,高于或等于,或进位为 0 0,则转移,则转移 CF=0 JBE/JNA OPR;低于或等于,不高于,则转移低于或等于,不高于,则转移 CF=1或或ZF=1 JNBE/JA OPR;不低于也不等于,高于,则转移不低于也不等于,高于,则转移 CF=0且且ZF=0返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用比较两个带符号数指令格式:指令格式:JL/JNGE OPR;小于,不大于也不等于,则转移小于,不大于也不等于,则转移 SF OF=1且且ZF=0 JNL/JGE OPR;不小于,大于或等于,则转移不小于,大于或等于,则转移 SF OF=0或或ZF=1 JLE/JNG OPR;小于或等于,不大于,则转移小于或等于,不大于,则转移 (SF OF)或或ZF=1 JNLE/JG OPR;不小于也不等于,大于,则转移不小于也不等于,大于,则转移 (SF OF)且且ZF=0返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用CX寄存器值判断指令格式:指令格式:JCXZ OPR;JCXZ OPR;根据根据CXCX内容修改情况产生不内容修改情况产生不 同的分支。同的分支。CXCX值为值为0 0,则转移,则转移 返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用条件转移指令说明指令说明:指令说明:(1 1)所有条件转移指令都是相对转移形式,)所有条件转移指令都是相对转移形式,-128-+127-128-+127范围。范围。(2 2)比较两个数的大小后转移,要看是有符)比较两个数的大小后转移,要看是有符号数还是无符号数。无符号数用号数还是无符号数。无符号数用“高于高于”和和“低于低于”来判断,有符号数用来判断,有符号数用“大于大于”和和“小于小于”来判断。来判断。(3 3)大部分可以用两种助记符表示。)大部分可以用两种助记符表示。微机原理及应用微机原理及应用微机原理及应用微机原理及应用调用指令与转移指令的比较用于调用一个子过程用于调用一个子过程调用前须保护断点地址调用前须保护断点地址子过程执行结束后要返回原调用处继续子过程执行结束后要返回原调用处继续执行原程序执行原程序断点恢复断点恢复返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用循环控制指令指令所控制的目的地址都是指令所控制的目的地址都是-128-+127-128-+127范围内,循环次数由范围内,循环次数由CXCX寄存器指定。该寄存器指定。该类类指令主要有以下三种:指令主要有以下三种:一、一、LOOPLOOP循环指令循环指令 二、二、LOOPZ/LOOPELOOPZ/LOOPE指令指令 三、三、LOOPNZ/LOOPNELOOPNZ/LOOPNE指令指令返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用无条件循环指令LOOP指令格式:指令格式:LOOP LABEL;指令功能:指令功能:先将先将CX的内容减的内容减1,再判断,再判断CX中是否为中是否为0,为,为0则退出,否则循环。则退出,否则循环。操作:操作:DEC CX JNZ 符号地址符号地址 返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用条件循环指令LOOPZ/LOOPE指令格式:指令格式:LOOPZ/LOOPE OPR;指令功能:指令功能:先将先将CXCX的内容减的内容减1 1,再判断,再判断CXCX中是中是否为否为0 0,并且判断,并且判断ZFZF是否为是否为1 1。如果。如果ZF=0ZF=0,或,或CX=0CX=0,则退出;只有在则退出;只有在ZF=1ZF=1并且并且CX0CX0情况下,情况下,才继续循环。才继续循环。指令说明:指令说明:(1 1)CXCX中的值为中的值为0 0时,并不会影响时,并不会影响标志位标志位ZFZF,ZFZF由前面其它指令来决定由前面其它指令来决定 (2 2)该指令可用于查找相等的情况。)该指令可用于查找相等的情况。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用条件循环指令LOOPNZ/LOOPNE指令格式:指令格式:LOOPNZ/LOOPNE OPR;指令功能:指令功能:先将先将CXCX的内容减的内容减1 1,再判断,再判断CXCX中是中是否为否为0 0,并且判断,并且判断ZFZF是否为是否为1 1。如果。如果ZF=0,ZF=0,并且并且CX=0CX=0,则继续循环;只有在则继续循环;只有在CX=0CX=0,或,或ZF=1ZF=1情况情况下,则退出循环。下,则退出循环。指令说明:指令说明:(1 1)CXCX中的值为中的值为0 0时,并不会影响时,并不会影响标志位标志位ZFZF,ZFZF由前面其它指令来决定。由前面其它指令来决定。(2 2)该指令用于查找不相等的情况。)该指令用于查找不相等的情况。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用MOV AX,DATA1MOV BX,DATA2CMP AX,BXJL NEXT1MOV CX,AXJMP NEXT2NEXT1:MOV CX,BXNEXT2:MOV AH,4CH INT 21Hv下面程序的功能是什么?下面程序的功能是什么?微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断控制指令一、一、一般中断指令:一般中断指令:INT nINT n二、二、溢出中断指令:溢出中断指令:INTOINTO三、三、中断返回指令:中断返回指令:IRETIRET思考思考:中断与过程调用的区别中断与过程调用的区别?返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断指令中断与过程调用:中断与过程调用:中断是随机事件或异常事件引起,调用则是事中断是随机事件或异常事件引起,调用则是事先已在程序中安排好先已在程序中安排好 响应中断请求不仅要保护断点地址,还要保护响应中断请求不仅要保护断点地址,还要保护FLAGSFLAGS内容内容调用指令在指令中直接给出子程序入口地址,调用指令在指令中直接给出子程序入口地址,中断指令只给出中断向量码,入口地址则在向中断指令只给出中断向量码,入口地址则在向量码指向的内存单元中量码指向的内存单元中返回返回P150微机原理及应用微机原理及应用微机原理及应用微机原理及应用INT n 中断指令指令格式:指令格式:INT n执行的操作:执行的操作:(SP)(SP)-2 (SP)+1,(SP)(PSW)(SP)(SP)-2 (SP)+1,(SP)(CS)(SP)(SP)-2 (SP)+1,(SP)(IP)(IP)(n*4)(CS)(n*4+2)指令说明:指令说明:指令在执行完以上操作后,再把指令在执行完以上操作后,再把IFIF和和TFTF位位置置0 0,但不影响其余的标志位。,但不影响其余的标志位。中断类型码中断类型码n=0 n=0 255 255P149微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断指令n n4 4=存放中断服务子程序入口地址的单元地存放中断服务子程序入口地址的单元地址址n 4 XXHXXHXXHXXH入口偏移地址入口偏移地址IPIP入口段地址入口段地址CSCS操作总结:操作总结:将将FLAGSFLAGS压入堆栈压入堆栈将将INTINT指令下一条指令的指令下一条指令的CSCS、IPIP压栈压栈取中断服务程序入口地址取中断服务程序入口地址 微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断指令例INT 21HIPLIPHCSLCSHSP=1200FLAGSLFLAGSHSP=11FA执行执行INTINT指令后指令后保护断点保护断点微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断指令例执行执行INT 21HINT 21H指令后指令后 IP=IP=?CS=CS=?21H4=0084H 23H11H00H20HIP CS返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用溢出中断指令指令格式:INTO 相当于 INT 4执行的操作:(SP)(SP)-2 (SP)+1,(SP)(PSW)(SP)(SP)-2 (SP)+1,(SP)(CS)(SP)(SP)-2 (SP)+1,(SP)(IP)(IP)(10H)(CS)(12H)返回返回l若若OF=1,OF=1,则启动一个类型为则启动一个类型为4 4的中断过程的中断过程,给出一个出给出一个出错标志错标志,如果如果OF=0,OF=0,不做任何操作。不做任何操作。lINTOINTO指令通常安排在有符号数加减运算指令之后。指令通常安排在有符号数加减运算指令之后。微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断返回指令指令格式:指令格式:IRET执行的操作:执行的操作:(IP)(SP)+1,(SP)(SP)(SP)+2 (CS)(SP)+1,(SP)(SP)(SP)+2 (PSW)(SP)+1,(SP)(SP)(SP)+2指令说明:指令说明:中断服务程序的最后一条指令,负中断服务程序的最后一条指令,负责恢复断点和标志寄存器内容。该指令的标志责恢复断点和标志寄存器内容。该指令的标志位由堆栈中取出的值来设置。位由堆栈中取出的值来设置。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用处理器控制指令该类指令主要有以下两大类指令组成:一、一、标志操作指令标志操作指令 二、二、其他处理器控制指令其他处理器控制指令返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用标志操作指令标志操作指令由以下三种指令组成:一、一、进位标志进位标志CFCF操作指令操作指令 二、二、方向标志方向标志DFDF操作指令操作指令 三、三、中断允许标志中断允许标志IFIF操作指令操作指令返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用进位标志CF操作指令指令组成:指令组成:(1 1)STCSTC进位位置进位位置1 1指令:指令:CF 1CF 1 (2 2)CLCCLC进位位置进位位置0 0指令:指令:CF 0CF 0 (3 3)CMCCMC进位位求反指令:进位位求反指令:CF CFCF CF指令说明:指令说明:用在多字节或字运算中,用来传递低位向高位用在多字节或字运算中,用来传递低位向高位的进位,的进位,STCSTC置置1 1,CLCCLC清清0 0,CMCCMC求反。求反。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用方向标志DF操作指令指令组成:STDSTD方向标志位置方向标志位置1 1指令:指令:DF 1DF 1 CLD CLD方向标志位置方向标志位置0 0指令:指令:DF 0DF 0指令说明:执行串操作指令过程中,决定字符执行串操作指令过程中,决定字符地址的修改方向。地址的修改方向。STDSTD置置1 1:字符地址减量修改,:字符地址减量修改,CLDCLD置置0 0:字符地址增量修改。:字符地址增量修改。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用中断允许标志IF操作指令指令组成:STISTI中断标志位置中断标志位置1 1指令:指令:IF 1I