文档详情

微机原理第06次课第03章-3-NEW培训课件

yulij****0329
实名认证
店铺
PPT
473KB
约74页
文档ID:242068615
微机原理第06次课第03章-3-NEW培训课件_第1页
1/74

微机原理及应用微机原理及应用8086指令系统传送类指令数据操作类指令串操作指令控制类指令本章要求微机原理及应用微机原理及应用串操作类指令 串操作指令就是用一条指令实现对一串字符或数据的操作 它主要由以下几种指令组成:一、字符串传送指令:MOVSB/MOVSW二、字符串比较指令:CMPSB/CMPSW三、字符串检索指令:SCASB/SCASW四、取字符串指令:LODSB/LODSW 五、存字符串指令:STOSB/STOSW返回串操作类指令特点微机原理及应用微机原理及应用串操作指令 针对数据块或字符串的操作 可实现存储器到存储器的数据传送 待操作的数据串称为源串,目标地址称为目标串 串操作指令是唯一的一组能直接处理源和目的操作数都在存储单元的指令微机原理及应用微机原理及应用微机原理及应用微机原理及应用串操作指令流程取源串地址取目标串地址设串长度传送一个字节或字修改地址指针修改串长度值传送完否?微机原理及应用微机原理及应用重复前缀重复前缀 REP 无条件重复 REPE 相等重复 REPZ 为零重复 REPNE 不相等重复 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)编写程序实现:将BUFFER1中的17个数传送到BUFFER2中去。

微机原理及应用微机原理及应用怎样编写程序?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 指令功能:把DS段由SI指出的字节或字传送到ES段由DI指出存储单元中,并修改SI和DI地址指针MOVSB完成字节操作,MOVSW完成字操作,通常指令前面加重复前缀REP,数据串长度送CX寄存器。

指令说明返回微机原理及应用微机原理及应用字符串传送指令说明 用CLD指令将DF清零,地址指针自动加(MOVSB1 MOVSW 2)增址 用STD指令将DF置1,地址指针自动减(MOVSB1 MOVSW 2)减址 第二、三种格式明确地注明是传送字节或字,隐含了两个操作数的地址第一种格式则应在操作数明确是字还是字节操作,如: MOVS ES:BYTE PTRDI, DS:SI 微机原理及应用微机原理及应用串传送指令例串传送指令例 用串传送指令实现200B数据的传送: 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 指令功能:把DS段由SI指出的字节或字和ES段由DI指出的字或字节相比较,并比较后修改SI和DI地址指针指令影响标志位,利用重复前缀可实现在两个字符串中寻找第一个不等的元素或第一个相等的元素。

指令说明返回微机原理及应用微机原理及应用字符串比较指令说明 指令前缀有以下三种形式: (1)REP 重复 (2)REPZ/REPE 相等/为零则重复 (3)REPNZ/REPNE 不相等/不为零则重复微机原理及应用微机原理及应用串比较指令例串比较指令例 比较两个字符串是否相等,并找出其中第一个不相等字符的首地址,将该地址送到BX中,不想等字符送到AL中设MEM1为源串首地址,MEN2为目的串首地址,两个字串长度均为200LEA 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 指令功能:用AL中的字节或AX中的字,与位于ES段由DI寄存器指出内存单元的字节或字相比较通过前缀控制,可以实现AL中的字节或AX中的字与内存单元相等或不等的比较。

指令说明返回微机原理及应用微机原理及应用字符串检索指令说明 指令REPNZ SCASB有以下两种退出情况: (1)字符串中某字节与AL中的字节相等,从而退出 (2)字符串中没有字节与AL中的字节相等,但检索完毕,从而退出可通过ZF检测来判断当前处于哪种情况,ZF=1,为前一种情况,ZF=0,为后一种情况,ZF与CX无关返回微机原理及应用微机原理及应用取字符串指令 指令格式: LODS SRC ; LODSB ; 字节 (AL) (SI) ,(SI) (SI) 1 LODSW ; 字 (AX) (SI) ,(SI) (SI) 2 指令功能:将位于DS段由SI寄存器指出内存单元的内容取到AL或AX中返回微机原理及应用微机原理及应用存字符串指令 指令格式: STOS DST ; STOSB ; 字节 (AL) (DI) ,(DI) (DI) 1 STOSW ; 字 (AX) (DI) ,(DI) (DI) 2 指令功能:把AL中的字节或AX中的字,存到ES段由DI寄存器指出内存单元,并自动修改地址指针加上前缀REP后,可使一串内存单元中填满相同的数返回微机原理及应用微机原理及应用控制类指令此类指令主要由以下几部分组成:一、子程序调用和返回指令二、无条件转移和条件转移指令三、循环控制指令四、中断控制指令五、处理器控制指令返回微机原理及应用微机原理及应用子程序调用和返回指令子程序结构相当于高级语言中的过程。

为了方便模块化程序设计,往往把程序中某些具有独立功能的部分编写成独立的程序模块,称之为程序子程序调用和返回指令都不影响标志位一、子程序调用指令:CALL 二、子程序返回指令:RET返回指令说明:微机原理及应用微机原理及应用调用指令的执行过程 将调用指令的下一条指令的地址(断点)压入堆栈 获取子过程的入口地址(子过程第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 ; 段内间接调用,调用地址 由AX给出。

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子过程与原调用程序不在同一代码段,在调用之前需保护断点的段基地址和偏移地址先将断点的CS压栈,再压入IP微机原理及应用微机原理及应用段间间接调用 指令格式: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返回微机原理及应用微机原理及应用子程序调用指令说明 调用指令在执行时,会把下一条指令的地址推入堆栈,这个地址叫返回地址。

在段内调用的情况下,只把返回地址的偏移量推入堆栈,在段间调用的情况下,把返回地址的段地址和偏移量都推入堆栈返回断点入口地址微机原理及应用微机原理及应用子程序返回指令 该指令有以下两条: 一、子程序返回指令:RET 二、带参数的返回指令:RET n 所有返回指令都不影响标志位返回微机原理及应用微机原理及应用子程序返回指令:RET 指令格式:RET ; (IP) (SP)+1, (SP) (SP) (SP)+2 指令说明:返回指令RET作为子程序的最后一条指令用来返回高一层的程序执行时,会从堆栈顶部弹出返回地址出栈送IP寄存器 (段内或段间)和CS寄存器(段间)8086指令系统中,段内返回指令和段间返回指令形式是一样的不影响标志位 返回微机原理及应用微机原理及应用带参数的返回指令:RET n 指令格式:RET EXP ; (IP) (SP)+1, (SP) (SP) (SP)+2 (SP) (SP)+D16 指令说明:EXP是一个表达式,根据它的值计算出常数为指令中的位移量nn可以表示为0FFFFH范围中的任何一个偶数 应用范围:主程序为某个子程序提供一定的参数或参数地址,在进入子程序之前,主程序将这些参数或参数的地址压入堆栈中,通过堆栈供子程序调用,子程序使用后,这些参数已无使用价值,堆栈中不需要保存这些参数,因而在返回指令RET中提供参数n在返回同时堆栈指针自动增加几个字节,以去掉堆栈中的几个字节。

返回微机原理及应用微机原理及应用无条件转移和条件转移指令一、无条件转移指令 无条件转移到目标地址,执行新的指令二、条件转移指令 在具备一定条件的情。

下载提示
相似文档
正为您匹配相似的精品文档