自制ppt讲义-微机原理幻灯片第7讲

上传人:F****n 文档编号:88163851 上传时间:2019-04-20 格式:PPT 页数:69 大小:1.10MB
返回 下载 相关 举报
自制ppt讲义-微机原理幻灯片第7讲_第1页
第1页 / 共69页
自制ppt讲义-微机原理幻灯片第7讲_第2页
第2页 / 共69页
自制ppt讲义-微机原理幻灯片第7讲_第3页
第3页 / 共69页
自制ppt讲义-微机原理幻灯片第7讲_第4页
第4页 / 共69页
自制ppt讲义-微机原理幻灯片第7讲_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《自制ppt讲义-微机原理幻灯片第7讲》由会员分享,可在线阅读,更多相关《自制ppt讲义-微机原理幻灯片第7讲(69页珍藏版)》请在金锄头文库上搜索。

1、,第3章 8086的寻址方式和指令系统,H,串处理指令,H,字符串 一系列存放在存储器中的字或字节数据,字符串长度可达64K字节。 字符串元素 组成字符串的字节或字。每种字符串指令对字符串元素只进行同一种操作。 字符串操作指令 对字符串进行的传送、比较、扫描、存储及装入等5种操作。,相关概念,H,源串 起始地址(或末地址)为DS:SI。源串允许使用段超越前缀来修改段地址。 目的串 起始地址(或末地址)为ES:DI。目的串不允许使用段超越前缀修改ES。如果要在同一段内进行串运算,必须使DS和ES指向同一段。 指针 每执行一次字符串指令,指针SI和DI会自动修改,以指向下一个待操作单元。,隐含约定

2、,H,DF标志:控制字符串处理的方向。 DF0为递增方向。DS:SI指向源串首地址,每执行一次串操作:字节串操作时,SI、DI分别增1;字串操作时,SI和DI分别增2; DF1为递减方向。DS:SI指向源串末地址,每执行一次串操作:字节串操作时减1;字串操作时减2。 STD使DF置1,CLD将DF清0。 串长度 要处理的字符串长度(字节或字数)放在CX寄存器中。,隐含约定,H,功能 在基本指令前加重复前缀,可加快串运算指令的执行速度。每重复执行一次,地址指针SI和DI按方向标志自动修改,CX的值自动减1。 类型和格式 REP:无条件重复,重复操作直到CX0为止。 REPE/REPZ:相等/结果

3、为零则重复,重复直到ZF0或CX0为止。 REPNE/REPNZ :不相等/结果非零则重复,重复直到ZF1或CX0为止。,重复前缀,带有重复前缀的串指令执行过程中允许有中断进入。,H,MOVS字符串传送指令,MOVS字符串传送指令 (Move String) 格式 MOVS 目的串,源串。 功能 SI作指针的源串中的一个字节或字,DI作指针的目的串;自动修改指针SI和DI。 应用 解决MOV指令不能直接在存储单元间进行数据传送的问题。 若使用重复前缀,还可以利用一条指令传送一批数据。,H,H,MOVS字符串传送指令,举例 要求把数据段中以SRC_MESS为偏移地址的一串字符“HELLO!”,传

4、送到附加段中以NEW_LOC开始的单元中。,DATA SEGMENT ;数据段 SRC_MESS DB HELLO! ;源串 DATA ENDS; EXTRA SEGMENT ;附加段 NEW_LOC DB 6 DUP(?) ;存放目的串 EXTRA ENDS; CODE SEGMENT ASSUME CS:CD, DS:DATA, ES:EXTRA,START: MOV AX,DATA MOV DS,AX ;DS数据段段址 MOV AX,EXTRA MOV ES,AX ;ES附加段段址 LEA SI,SRC_MESS ;SI指向源串偏移地址 LEA DI,NEW_LOC ;DI指向目的串偏移

5、地址 MOV CX,6 ;CX作串长度计数器 CLD ;清方向标志,地址增量 REP MOVSB ;重复传送串中各字节,直到CX=0 Code ENDS End start,CMPS字符串比较指令,CMPS字符串比较指令 (Compare String) 格式 CMPS 目的串,源串。 功能 SI作指针的源串减去DI作指针的目的串数据,结果反映在标志位上;两个数据串的原始值不变;源串和目的串指针自动修改,指向下一对待比较的串。常用来比较两个字符串是否相等。,H,CMPS字符串比较指令,加重复前缀 REPE/REPZ CMPS ;直至CX0(比完了)或ZF0(两串不相等)时停止操作。 REPNE

6、/REPNZ CMP;直至CX0(比完了)或ZF1(两串相等)时停止比较。,H,SCAS字符串扫描指令,SCAS字符串扫描指令 (Scan String) 格式 SCAS 目的串。 功能 AL/AX(字节/字操作)内容减去ES:DI中的串元素,结果反映在标志位上,源操作数不变,操作后目的串指针会自动修改,指向下一个待搜索的串元素。 应用 利用SCAS指令,可在内存中搜索关键字。指令执行前,必须事先将关键字存在AL(字节)或AX(字)中,才能用SCAS指令进行搜索。 SCAS指令可以加重复前缀。,H,H,SCAS字符串扫描指令,举例 在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下来,送到

7、BX寄存器中,若没有查到,则将BX寄存器清0。设字符串起始地址STRING的偏移地址为0,字符串长度为CX。,解: MOV DI,OFFSET STRING ;DI字符串偏移地址 MOV CX,COUNT ;CX字符串长度 MOV AL,A ;AL关键字A的ASCII码 CLD ;清标志方向 REPNE SCASB ;CX0(没查完)和ZF=0(不相等)时重复 JZ FIND ;若ZF=1,表示已搜到,转出 MOV DI,0 ;若ZF=0,表示没搜到,DI0 FIND:MOV BX,DI ;BX搜索次数 HLT,LODS取字符串指令,LODS取字符串指令 (Load String) 格式 LO

8、DS 源串。 功能 DS:SI中的串元素AL/AX(字节/字操作)中,修改SI,以指向串中的下一个元素。SI的修改量由方向标志DF和源串的类型确定。,H,STOS存字符串指令,STOS存字符串指令 (Store String) 格式 STOS 目的串。 功能 AL/AX(字节/字操作)的一个字节或字ES:DI所指的目的串;修改DI,以指向串中的下一个单元。 关于重复前缀:“REP STOS” ,可用累加器中的常数,对数据串初始化。如初始化为全0串。,H,控制转移指令,作用 改变CS和IP的值,从而改变指令的执行顺序。 类型 无条件转移和过程调用指令 条件转移指令 条件循环控制指令 中断指令,H

9、,控制转移指令(28条),H,无条件转移和过程控制指令,H,JMP无条件转移指令,JMP无条件转移指令 (Jump) 格式 JMP 目的。 功能 程序无条件地转移到指定的目的地址去执行。 转移类型 段内转移或近(NEAR)转移 转移指令的目的地址和JMP指令在同一代码段中,转移时,仅改变IP寄存器的内容,段地址CS的值不变。 段间转移,又称为远(FAR)转移 转移时,CS和IP的值都要改变,转到另一代码段去执行。,H,JMP无条件转移指令,两种提供地址的方式 直接转移 指令码中直接给出转移的目的地址,目的操作数用一个标号来表示,它又可分为段内直接转移和段间直接转移。 间接转移 目的地址包含在某

10、个16位寄存器或存储单元中,CPU根据寄存器或存储器寻址方式,间接求出转移地址。,H,JMP无条件转移指令,无条件转移指令的类型和方式,H,JMP无条件转移指令,段内直接转移指令 格式 JMP SHORT 标号 JMP NEAR PTR 标号(或:JMP 标号)。 特点 目的操作数均用标号表示; 程序转向的有效地址当前IP寄存器的内容8/16位位移量(DISP)。 16位:近转移,范围在-32768+32767个字节之间; 8位:短转移,范围在-128+127个字节之间;,H,JMP无条件转移指令,段内间接转移指令 格式 JMP 16位寄存器/字存储单元 特点 16位有效地址存放在一个16位寄

11、存器、字存储器单元; 寄存器间接寻址:有效地址存放在寄存器中,即IP 寄存器内容; 存储单元间接寻址:有效地址存放在存储单元中,即IP字存储单元内容; 要计算出存储单元的物理地址,再从该地址处取一个字送到IP。,H,段内间接转移指令,【例】JMP BX 解:若该指令执行前BX4500H; 则指令执行时,将当前IP修改成4500H; 程序转向段内偏移地址为4500H处执行。 【例】JMP WORD PTR 5BX 解:设指令执行前,DS2000H,BX100H,(20105H)04F0H;则指令执行后,IP(20000H+100H+5H)(20105H)04F0H;转到代码段内偏移地址为04F0

12、H处执行。,H,JMP无条件转移指令,段间直接(远)转移指令 格式 JMP FAR 标号 特点 用远标号直接给出了转向的段地址和偏移量,即 IP 标号的段内偏移量 CS 标号所在段的段地址,H,段间直接(远)转移指令,【例】 JMP FAR PTR PROG_F 解:设标号PROG_F所在段的基地址3500H,偏移地址080AH; 则指令执行后,IP080AH,CS3500H; 程序转到3500:080AH处执行。,H,JMP无条件转移指令,段间间接转移指令 格式 JMP DWORD PTR存储单元 特点 目的地址的段地址和偏移量放在存储器中的4个连续地址单元中:前两个字节为偏移量;后两个字节

13、为段地址。指令中给出存放目标地址的存储单元的首字节地址值;,H,段间间接转移指令,【例】 JMP DWORD PTR SI+0125H 设指令执行前:CS1200H,IP05H,DS2500H,SI1300H;内存单元(26425H)4500H,(26427H)32F0H。 解:目的操作数地址DS16SIDISP 25000H1300H0125H 26425H 从单元中取出转移地址,赋与IP和CS:IP4500H,CS32F0H;程序转到32F0:4500H处执行。,H,过程调用及返回指令,过程:程序中能完成特定功能而又独立的模块,也称子程序。 过程嵌套:在过程运行中又去调用另一个过程。 过程

14、调用和返回指令的格式:CALL 过程名 RET 近过程调用:调用指令CALL和被调用的过程在同一代码段中。 远过程调用:两者在不同代码段中。,H,CALL过程调用指令,CALL过程调用指令(Call) 格式 Call 过程名 功能 将当前主程序的返回地址压入堆栈保存,转到子程序入口地址执行子程序。 近调用时:IP入栈;远调用时,CS和IP入栈。,H,RET过程返回指令,RET过程返回指令(Return) 格式 RET。 功能 从堆栈中弹出返回地址,使程序返回主程序继续执行。 如果从近过程返回:从栈中弹出一个字 IP,并且使SP SP+2。 如果从远过程返回:先从栈中弹出一个字 IP,并且使SP

15、 SP+2;再从个字栈中弹出一个字CS,并使SP SP+2。,H,RET n过程返回指令,RET n过程返回指令(Return) 格式 RET n。 功能 n称为弹出值,CPU在弹出返回地址后,再从堆栈中弹出n个字节的数据。其值可以是0000-0FFFFH范围内的任何一个偶数。,H,RET n过程返回指令,用途 调用过程的主程序通过堆栈向过程传递参数。 参数在调用过程前推入堆栈,过程运行中通过堆栈指针寻找; 过程返回时,用RET n把它们从栈中弹出。,H,过程调用与返回指令,寻址方式 段内直接调用; 段内间接调用; 段间直接调用; 段间间接调用,H,过程调用与返回指令,段内直接调用 【例】 C

16、ALL PROG_N ;PROG_N是一个近标号 CS=2000H,IP=1050H,SS=5000H,此指令含3字节。SP=0100H,PROG_N与CALL指令之间的距离等于1234H(即DISP1234H)。 CALL(机器码E83412)执行过程。,SP SP-2,即新的SP0100H-200FEH; 返回地址IP入栈。返回地址应该为CALL执行完后的地址,即IP=IP+3=1053H,将此数入栈; 计算程序入口地址IP=IP+DISP=1053+1234=2287H。,H,H,:1053H,CALL段内直接调用,CS=2000H,IP=1050H,SS=5000H SP SP-2,即新的SP0100H-200FEH; 返回地址IP入栈。返回地址应该为CALL执行完后的地址,即IP=IP+3=1053H,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号