微机原理第06次课第03章-3-NEW.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《微机原理第06次课第03章-3-NEW.ppt》由会员分享,可在线阅读,更多相关《微机原理第06次课第03章-3-NEW.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理及应用微机原理及应用微机原理及应用微机原理及应用8086指令系统传送类指令数据操作类指令串操作指令控制类指令本章要求本章要求微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作类指令 串操作指令就是用一条指令实现对一串字符或数据的串操作指令就是用一条指令实现对一串字符或数据的操作。操作。它主要由以下几种指令组成:一、一、字符串传送指令:字符串传送指令:MOVSB/MOVSWMOVSB/MOVSW二二、字符串比较指令:字符串比较指令:CMPSB/CMPSWCMPSB/CMPSW三三、字符串检索指令:字符串检索指令:SCASB/SCASWSCASB/SCASW四四、取字符串指令:
2、取字符串指令:LODSB/LODSWLODSB/LODSW 五五、存字符串指令:存字符串指令:STOSB/STOSWSTOSB/STOSW返回返回串操作类指令特点微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令针对数据块或字符串的操作针对数据块或字符串的操作可实现存储器到存储器的数据传送可实现存储器到存储器的数据传送待操作的数据串称为源串,目标地址称为目待操作的数据串称为源串,目标地址称为目标串标串串操作指令是唯一的一组能直接处理源和目串操作指令是唯一的一组能直接处理源和目的操作数都在存储单元的指令的操作数都在存储单元的指令微机原理及应用微机原理及应用微机原理及应用微机原理及
3、应用串操作指令的特点源串一般存放在数据段,偏移地址由源串一般存放在数据段,偏移地址由SISI指定。允指定。允许段重设许段重设目标串必须在附加段,偏移地址由目标串必须在附加段,偏移地址由DIDI指定指定指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DFDF决定。决定。DF=0 DF=0 增地址方向;增地址方向;DF=1 DF=1 减地址方向减地址方向数据块长度值由数据块长度值由CXCX指定指定可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CXCX内容内容微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令流程取源串地址取源串地址取目标串地址取目标
4、串地址设串长度设串长度传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?微机原理及应用微机原理及应用微机原理及应用微机原理及应用重复前缀REP REP 无条件重复无条件重复REPE REPE 相等重复相等重复REPZ REPZ 为零重复为零重复REPNE REPNE 不相等重复不相等重复REPNZ REPNZ 不为零重复不为零重复条件重复条件重复CX0ZF=1CX0ZF=0CX0 重复重复微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令与重复前缀串操作指令串操作指令前缀前缀MOVSREPCMPSREPE/PEPZ REPNE/
5、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
6、执行的操作执行的操作: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 M
7、OV 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指出的字节或
8、字传送到指出的字节或字传送到ESES段由段由DIDI指出存储单元中,并修改指出存储单元中,并修改SISI和和DIDI地址指针。地址指针。MOVSBMOVSB完成完成字节操作,字节操作,MOVSWMOVSW完成字操作,通常指令前面加重复前缀完成字操作,通常指令前面加重复前缀REPREP,数据串长度送数据串长度送CXCX寄存器。寄存器。指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串传送指令说明用用CLDCLD指令将指令将DFDF清零,地址指针自动加清零,地址指针自动加(MOVSB(MOVSB1 MOVSW 1 MOVSW 2)2)增址增址用用STDSTD指令
9、将指令将DFDF置置1 1,地址指针自动减,地址指针自动减(MOVSB(MOVSB1 MOVSW 1 MOVSW 2)2)减址减址第二、三种格式明确地注明是传送字节或字,隐含了两第二、三种格式明确地注明是传送字节或字,隐含了两个操作数的地址。第一种格式则应在操作数明确是字还个操作数的地址。第一种格式则应在操作数明确是字还是字节操作是字节操作,如:如:MOVS ES:BYTE PTRDI,DS:SI MOVS ES:BYTE PTRDI,DS:SI 微机原理及应用微机原理及应用微机原理及应用微机原理及应用串传送指令例用串传送指令实现用串传送指令实现200B200B数据的传送:数据的传送:LEA
10、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地址指针。指地址指针。指令影响标志位,利
11、用重复前缀可实现在两个字符串中寻令影响标志位,利用重复前缀可实现在两个字符串中寻找第一个不等的元素或第一个相等的元素。找第一个不等的元素或第一个相等的元素。指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串比较指令说明指令前缀有以下三种形式:指令前缀有以下三种形式:(1)REP 重复重复 (2)REPZ/REPE 相等相等/为零则重复为零则重复 (3)REPNZ/REPNE 不相等不相等/不为零则重不为零则重复复微机原理及应用微机原理及应用微机原理及应用微机原理及应用串比较指令例 比较两个字符串是否相等,并找出其中第一个不相等字符比较两个字符串是否相等,并找
12、出其中第一个不相等字符的首地址,将该地址送到的首地址,将该地址送到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;SCAS
13、B ;字节字节 (AL)(DI),(DI)(DI)1 SCASW ;字字 (AX)(DI),(DI)(DI)2指令功能:指令功能:用用ALAL中的字节或中的字节或AXAX中的字,与位于中的字,与位于ESES段段由由DIDI寄存器指出内存单元的字节或字相比较。通过前寄存器指出内存单元的字节或字相比较。通过前缀控制,可以实现缀控制,可以实现ALAL中的字节或中的字节或AXAX中的字与内存单元中的字与内存单元相等或不等的比较。相等或不等的比较。指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用字符串检索指令说明指令指令REPNZ SCASBREPNZ SCASB有以下两
14、种退出情况:有以下两种退出情况:(1 1)字符串中某字节与)字符串中某字节与ALAL中的字节相等,从中的字节相等,从而退出。而退出。(2 2)字符串中没有字节与)字符串中没有字节与ALAL中的字节相等,中的字节相等,但检索完毕,从而退出。可通过但检索完毕,从而退出。可通过ZFZF检测来判断检测来判断当前处于哪种情况,当前处于哪种情况,ZF=1ZF=1,为前一种情况,为前一种情况,ZF=0ZF=0,为后一种情况,为后一种情况,ZFZF与与CXCX无关。无关。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用取字符串指令指令格式:指令格式:LODS SRC;LODSB ;字节字节 (
15、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寄存器指出内存单元,并自动修
16、改地址指针。加上寄存器指出内存单元,并自动修改地址指针。加上前缀前缀REPREP后,可使一串内存单元中填满相同的数。后,可使一串内存单元中填满相同的数。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用控制类指令此类指令主要由以下几部分组成:此类指令主要由以下几部分组成:一一、子程序调用和返回指令子程序调用和返回指令二二、无条件转移和条件转移指令无条件转移和条件转移指令三三、循环控制指令循环控制指令四、四、中断控制指令中断控制指令五五、处理器控制指令处理器控制指令返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序调用和返回指令子程序结构相当于高级语言中的过程。
17、为子程序结构相当于高级语言中的过程。为了方便模块化程序设计,往往把程序中某了方便模块化程序设计,往往把程序中某些具有独立功能的部分编写成独立的程序些具有独立功能的部分编写成独立的程序模块,称之为程序。子程序调用和返回指模块,称之为程序。子程序调用和返回指令都不影响标志位。令都不影响标志位。一、一、子程序调用指令子程序调用指令:CALL CALL 二、二、子程序返回指令:子程序返回指令:RETRET返回返回指令说明:微机原理及应用微机原理及应用微机原理及应用微机原理及应用调用指令的执行过程将调用指令的下一条指令的地址(断点)压入将调用指令的下一条指令的地址(断点)压入堆栈堆栈获取子过程的入口地址
18、(子过程第获取子过程的入口地址(子过程第1 1条指令的条指令的偏移地址)偏移地址)(执行子过程,含相应参数的保存及恢复)(执行子过程,含相应参数的保存及恢复)将断点偏移地址由堆栈弹出,返回原程序将断点偏移地址由堆栈弹出,返回原程序返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序调用指令该类指令提供了子程序内直接调用指令、段内该类指令提供了子程序内直接调用指令、段内间接调用指令、段间直接调用指令和段间间接间接调用指令、段间直接调用指令和段间间接调用指令。调用指令。一、一、段内直接调用段内直接调用 二二、段内间接调用段内间接调用 三、三、段间直接调用段间直接调用 四、四、段间
19、间接调用段间间接调用 指令说明指令说明返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用段内直接调用指令格式:CALL DST;(SP)(SP)-2,(SP)-2,(SP)-1)(IP)(IP)(IP)+16位偏移量位偏移量例如:CALL 1000H;段内直接调用,调用地址段内直接调用,调用地址 在指令中给出在指令中给出返回返回l子过程与原调用程序在同一代码段,在调用子过程与原调用程序在同一代码段,在调用之前只需保护断点的偏移地址之前只需保护断点的偏移地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用段内间接调用指令格式:CALL DST;(SP)(SP)-2,(SP)
20、-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 ;段间直接调用,调用段地段间直
21、接调用,调用段地 址和偏移量在指令中给出址和偏移量在指令中给出返回返回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
22、+2)例如:例如:CALL DWORD PTRDI ;段间间接调用,指令给段间间接调用,指令给出出 调用段地址和偏移量的存调用段地址和偏移量的存 放地址放地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用示例设设(DS)=6000H,(SI)=0560H,指指令令 CALL DWORD PTRDI 的操作示意图的操作示意图XXHXXHXXHXXHIPCSCALL 代代码码段段数数据据段段60560H返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序调用指令说明调用指令在执行时,会把下一条指令的地址推入堆栈,这个地址叫返回地址。在段内调用的情况下,只把返回地址的偏移
23、量推入堆栈,在段间调用的情况下,把返回地址的段地址和偏移量都推入堆栈。返回返回断点断点入口入口地址地址微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序返回指令该该指令有以下两条:指令有以下两条:一、一、子程序返回指令子程序返回指令:RETRET 二、二、带参数的返回指令:带参数的返回指令:RET nRET n 所有返回指令都不影响标志位所有返回指令都不影响标志位返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用子程序返回指令:RET指令格式:指令格式:RET ;(IP)(SP)+1,(SP)(SP)(SP)+2指令说明:指令说明:返回指令返回指令RETRET作为子程
24、序的最后一作为子程序的最后一条指令用来返回高一层的程序。执行时,会从条指令用来返回高一层的程序。执行时,会从堆栈顶部弹出返回地址出栈送堆栈顶部弹出返回地址出栈送IPIP寄存器寄存器 (段内段内或段间或段间)和和CSCS寄存器寄存器(段间段间)。80868086指令系统中,指令系统中,段内返回指令和段间返回指令形式是一样的。段内返回指令和段间返回指令形式是一样的。不影响标志位。不影响标志位。返回返回微机原理及应用微机原理及应用微机原理及应用微机原理及应用带参数的返回指令:RET n指令格式:指令格式:RET EXP;(IP)(SP)+1,(SP)(SP)(SP)+2 (SP)(SP)+D16指令
25、说明:指令说明:EXPEXP是一个表达式,根据它的值计算出常数为是一个表达式,根据它的值计算出常数为指令中的位移量指令中的位移量n n。n n可以表示为可以表示为0FFFFH0FFFFH范围中的任何一范围中的任何一个偶数。个偶数。应用范围:应用范围:主程序为某个子程序提供一定的参数或参数主程序为某个子程序提供一定的参数或参数地址,在进入子程序之前,主程序将这些参数或参数的地址,在进入子程序之前,主程序将这些参数或参数的地址压入堆栈中,通过堆栈供子程序调用,子程序使用地址压入堆栈中,通过堆栈供子程序调用,子程序使用后,这些参数已无使用价值,堆栈中不需要保存这些参后,这些参数已无使用价值,堆栈中不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 06 次课第 03 NEW
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内