微机接口ppt课件第4章8086指令系统(下).ppt





《微机接口ppt课件第4章8086指令系统(下).ppt》由会员分享,可在线阅读,更多相关《微机接口ppt课件第4章8086指令系统(下).ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理与接口技术微机原理与接口技术作者:徐建平作者:徐建平 成贵学成贵学第第4 4章章 80868086指令系统(下)指令系统(下)【本章内容提要本章内容提要】n掌握字符串操作指令的功能与用法掌握字符串操作指令的功能与用法n掌握处理器控制类指令的功能与用法掌握处理器控制类指令的功能与用法n掌握程序控制类指令的功能与用法掌握程序控制类指令的功能与用法4.1 字符串操作指令字符串操作指令n存储器中若干个连续地址存储的字符称为存储器中若干个连续地址存储的字符称为字符串,一个字符串可能包含若干个字节字符串,一个字符串可能包含若干个字节或字。或字。n字符串操作指令用于对存储器中的字节串字符串操作指令用
2、于对存储器中的字节串或字串进行处理。或字串进行处理。n字符串操作指令可以在两组存储单元之间字符串操作指令可以在两组存储单元之间进行操作。进行操作。n源串(源操作数)一般存放在当前数据段中,即源串(源操作数)一般存放在当前数据段中,即寄存器寄存器DSDS中的内容为其段地址,寄存器中的内容为其段地址,寄存器SISI中的内中的内容为其偏移地址,因此,容为其偏移地址,因此,源串地址为源串地址为DSDS:SISI;n目的串(目的操作数)一般存放在附加数据段目的串(目的操作数)一般存放在附加数据段ESES中,即寄存器中,即寄存器ESES中的内容为其段地址,寄存器中的内容为其段地址,寄存器DIDI中的内容为
3、其偏移地址,因此,中的内容为其偏移地址,因此,目的串地址为目的串地址为ESES:DIDI。n另外,若要使用重复前缀指令时,另外,若要使用重复前缀指令时,字符串的长度字符串的长度必须存放在必须存放在CXCX寄存器中寄存器中。n每次执行字符串操作后,每次执行字符串操作后,SISI和和DIDI中的内容中的内容会自动修改,从而指向下一个字节或字。会自动修改,从而指向下一个字节或字。nSISI和和DIDI的修改方式取决于标志位的修改方式取决于标志位DFDF的值:的值:n如果如果DFDF0 0,则字符串操作由低地址向高地,则字符串操作由低地址向高地址进行,址进行,SISI和和DIDI的值自动增加;的值自动
4、增加;n如果如果DFDF1 1,则字符串操作由高地址向低地,则字符串操作由高地址向低地址进行,址进行,SISI和和DIDI的值自动减少。的值自动减少。n增减量的大小取决于操作数类型:字节操作增减量的大小取决于操作数类型:字节操作时,增减量为时,增减量为1 1;字操作时,增减量为;字操作时,增减量为2 2。n字节型和字型数据对应的指令的助记符为字节型和字型数据对应的指令的助记符为B B和和W W。4.1.1 基本串操作指令基本串操作指令 1串传送指令串传送指令n格式:格式:MOVSBMOVSB(字节串传送)(字节串传送)或或MOVSWMOVSW(字串传送)(字串传送)或或MOVS DSTMOVS
5、 DST,SRCSRCn功能:将功能:将SISI所指向的源串中的一个字节或所指向的源串中的一个字节或字传送到字传送到DIDI所指向的目的串中。所指向的目的串中。n注意:该指令对标志位无影响。注意:该指令对标志位无影响。n在执行串传送指令前,一般要预先设置在执行串传送指令前,一般要预先设置源串地址源串地址DSDS:SISI、目的串地址、目的串地址ESES:DIDI和和方向标志位方向标志位DFDF的值。的值。n方向标志位方向标志位DFDF的设置方法为:的设置方法为:CLDCLD指令可指令可将将DFDF的设置为的设置为0 0;STDSTD指令可将指令可将DFDF的值设的值设置为置为1 1。2串比较指
6、令串比较指令n格式:格式:CMPSBCMPSB(字节串比较)(字节串比较)或或CMPSWCMPSW(字串比较)(字串比较)或或CMPS DSTCMPS DST,SRCSRCn功能:将功能:将SISI所指向的源串中的一个字节或字所指向的源串中的一个字节或字与与DIDI所指向的目的串中的一个字节或字相减,所指向的目的串中的一个字节或字相减,不保存结果,只是根据结果设置标志位。不保存结果,只是根据结果设置标志位。n注意:受影响的标志位有:注意:受影响的标志位有:OFOF、SFSF、ZFZF、AFAF、PFPF和和CFCF。n在执行串比较指令前,一般要预先设置在执行串比较指令前,一般要预先设置源串地址
7、源串地址DSDS:SISI、目的串地址、目的串地址ESES:DIDI和和方向标志位方向标志位DFDF的值,方法同上。的值,方法同上。3串扫描指令串扫描指令n格式:格式:SCASBSCASB(字节串扫描)(字节串扫描)或或SCASWSCASW(字串扫描)(字串扫描)或或SCAS DSTSCAS DSTn功能:将寄存器功能:将寄存器ALAL(字节操作)或(字节操作)或AXAX(字操作)中(字操作)中的内容与的内容与DIDI所指向的目的串中的一个字节或字相减,所指向的目的串中的一个字节或字相减,不保存结果,只是根据结果设置标志位。不保存结果,只是根据结果设置标志位。n注意:受影响的标志位有:注意:受
8、影响的标志位有:OFOF、SFSF、ZFZF、AFAF、PFPF和和CFCF。n在执行串扫描指令前,一般要预先设置寄存在执行串扫描指令前,一般要预先设置寄存器器ALAL(或(或AXAX)、目的串地址)、目的串地址ESES:DIDI和方向标和方向标志位志位DFDF的值。的值。4 4串装入指令串装入指令n格式:格式:LODSBLODSB(字节串装入)(字节串装入)或或LODSWLODSW(字串装入)(字串装入)或或LODS SRCLODS SRCn功能:将功能:将SISI所指向的源串中的一个字节或字所指向的源串中的一个字节或字送入寄存器送入寄存器ALAL(字节操作)或(字节操作)或AXAX(字操作
9、)(字操作)中。中。n注意:此指令对标志位无影响。注意:此指令对标志位无影响。n在执行串装入指令前,一般要预先设置在执行串装入指令前,一般要预先设置源串地址源串地址DSDS:SISI和方向标志位和方向标志位DFDF的值。的值。此指令一般不使用重复前缀。此指令一般不使用重复前缀。5 5串存储指令串存储指令n格式:格式:STOSBSTOSB(字节存储)(字节存储)或或STOSWSTOSW(字存储)(字存储)或或STOS DSTSTOS DSTn功能:将寄存器功能:将寄存器ALAL(字节操作)或(字节操作)或AXAX(字操(字操作)中的一个字节或字存入作)中的一个字节或字存入DIDI所指向的目的所指
10、向的目的串中。串中。n注意:此指令对标志位无影响。注意:此指令对标志位无影响。n在执行串存储指令前,一般要预先设置寄在执行串存储指令前,一般要预先设置寄存器存器ALAL(或(或AXAX)、目的串地址)、目的串地址ESES:DIDI和方和方向标志位向标志位DFDF的值。的值。4.1.2 4.1.2 重复前缀指令重复前缀指令n基本串操作指令每完成一次操作后,只能对基本串操作指令每完成一次操作后,只能对字符串中的一个字节或字进行操作,字符串中的一个字节或字进行操作,n若要对一个字节串或字串进行操作,就要在若要对一个字节串或字串进行操作,就要在这些指令的前面加一个重复前缀,使该指令这些指令的前面加一个
11、重复前缀,使该指令能重复执行。能重复执行。n使用重复前缀指令前,先要将字符串的长度使用重复前缀指令前,先要将字符串的长度装入装入CXCX寄存器,每执行一次基本串操作指令寄存器,每执行一次基本串操作指令后,后,CXCX的值自动减的值自动减1 1,直到,直到CXCX0 0。1REP前缀前缀n格式:格式:REP REP 串操作指令串操作指令n功能:重复执行串操作指令,直到功能:重复执行串操作指令,直到CXCX中的值中的值为为0 0时结束操作。时结束操作。n串传送指令与串传送指令与REPREP连用,常用于从存储器到连用,常用于从存储器到存储器的字符串成块传送,可简化程序,提存储器的字符串成块传送,可简
12、化程序,提高程序运行速度。高程序运行速度。n串存储指令与串存储指令与REPREP连用,常用于对某一存储连用,常用于对某一存储区域进行初始化。区域进行初始化。2REPE/REPZ前缀前缀n格式:格式:REPE/REPZ REPE/REPZ 串比较或串扫描指令串比较或串扫描指令n功能:在执行串比较或串扫描指令时,若功能:在执行串比较或串扫描指令时,若CX0CX0且且ZFZF1 1(要比较的两个字节或字相等或(要比较的两个字节或字相等或相减为零)时重复执行串比较或串扫描指令;相减为零)时重复执行串比较或串扫描指令;否则,结束操作。否则,结束操作。3REPNE/REPNZ前缀前缀n格式:格式:REPN
13、E/REPNZ REPNE/REPNZ 串比较或串扫描指令串比较或串扫描指令n功能:在执行串比较或串扫描指令时,若功能:在执行串比较或串扫描指令时,若CX0CX0且且ZFZF0 0(要比较的两个字节或字不相(要比较的两个字节或字不相等或相减不为零)时重复执行串比较或串扫等或相减不为零)时重复执行串比较或串扫描指令;否则,结束操作。描指令;否则,结束操作。n串比较指令与串比较指令与REPE/REPZREPE/REPZ或或REPNE/REPNZREPNE/REPNZ连用,连用,常用于判断两个字符串是否相等。常用于判断两个字符串是否相等。n串扫描指令与串扫描指令与REPE/REPZREPE/REPZ
14、或或REPNE/REPNZREPNE/REPNZ连用,连用,常用于搜索字符串中是否存在某个特定的字常用于搜索字符串中是否存在某个特定的字符。符。注意:注意:n重复前缀指令不能单独使用,后面必须跟基重复前缀指令不能单独使用,后面必须跟基本串操作指令。本串操作指令。n重复前缀指令不影响标志位。重复前缀指令不影响标志位。【例例4-1】n将将1000H1000H:0200H0200H地址开始的地址开始的100100个字节传送个字节传送到到2000H:1000H2000H:1000H开始的存储单元中。程序段开始的存储单元中。程序段如下:如下:MOV AXMOV AX,1000H 1000H MOV DS
15、MOV DS,AXAX ;设置源串段地址设置源串段地址MOV AXMOV AX,2000H 2000H MOV ESMOV ES,AXAX ;设置目的串段地址设置目的串段地址MOV SIMOV SI,0200H0200H;设置源串偏移地址设置源串偏移地址MOV DIMOV DI,1000H1000H;设置目的串偏移地址设置目的串偏移地址MOV CXMOV CX,100100 ;将串的长度送入将串的长度送入CXCXCLDCLD ;将将DFDF置为置为0 0,地址自动递增,地址自动递增REP MOVSBREP MOVSB;重复执行串传送指令,每次重复执行串传送指令,每次传送一个字节传送一个字节n【
16、例例4-2】对附加段中从对附加段中从BUFF开始的开始的100个连续的内存单元进行清个连续的内存单元进行清0操作。程操作。程序段如下:序段如下:LEA DILEA DI,BUFFBUFF;将目的串的偏移地址送入将目的串的偏移地址送入DIDIMOV ALMOV AL,00H00H;将将0 0送入送入ALALMOV CXMOV CX,100100;将串的长度送入将串的长度送入CXCXCLDCLD ;将将DFDF置为置为0 0,地址自动递增,地址自动递增REP STOSBREP STOSB;重复执行串存储指令,将重复执行串存储指令,将100100 ;个连续的内存单元清个连续的内存单元清0 04.2
17、4.2 处理器控制类指令处理器控制类指令n处理器控制类指令用于对处理器控制类指令用于对CPUCPU进行控制。进行控制。4.2.1 4.2.1 标志位操作指令标志位操作指令n标志位操作指令共标志位操作指令共7 7条,用于设置标志位条,用于设置标志位CFCF、DFDF和和IFIF的值,对其他标志位无影响,如表的值,对其他标志位无影响,如表4-14-1所示。所示。4.2.2 外部同步指令外部同步指令n外部同步指令共外部同步指令共5 5条,用于控制处理器的状条,用于控制处理器的状态,它们的操作不影响标志位,如表态,它们的操作不影响标志位,如表4-24-2所所示。示。实训实训4-1 4-1 寻找字符串中
18、指定字符寻找字符串中指定字符n【算法分析算法分析】n在文章的每一段开头,一般要缩进几个空格。在文章的每一段开头,一般要缩进几个空格。现有一个以空格开头的字符串,找出其中第现有一个以空格开头的字符串,找出其中第一个非空格字符,并把其偏移地址存入指定一个非空格字符,并把其偏移地址存入指定内存单元内存单元ADDRADDR中。中。n首先,将字符串首地址送入首先,将字符串首地址送入DIDI,设置字符串,设置字符串操作方向,将字符串长度送入操作方向,将字符串长度送入CXCX,并为,并为ADDRADDR设置初值。设置初值。n重复执行传扫描指令,直到找到第一个非空重复执行传扫描指令,直到找到第一个非空格字符,
19、使格字符,使DIDI指向第一个非空格字符,并将指向第一个非空格字符,并将其偏移地址存入其偏移地址存入ADDRADDR。n若未找到非空格字符,则程序结束。若未找到非空格字符,则程序结束。【源程序】DSEG SEGMENT;DSEG SEGMENT;数据段,给变量指定数据,分配存储空间数据段,给变量指定数据,分配存储空间 STR DB This is a string!$STR DB This is a string!$;定义源字符串定义源字符串 NUM EQU$-STRNUM EQU$-STR;NUM;NUM为字符串为字符串STRSTR的长度的长度DSEG ENDSDSEG ENDSESEG S
20、EGMENT ESEG SEGMENT ;附加段附加段 DB NUM DUP(?)DB NUM DUP(?)ESEG ENDSESEG ENDSSSEG SEGMENT STACKSSEG SEGMENT STACK;堆栈段堆栈段 DB 100 DUP(?)DB 100 DUP(?)SSEG ENDSSSEG ENDSCSEG SEGMENTCSEG SEGMENT;代码段代码段ASSUME CS:CSEG,DS:DSEG,SS:SSEG,ES:ESEGASSUME CS:CSEG,DS:DSEG,SS:SSEG,ES:ESEGSTART:START:MOV AX,DSEG MOV AX,DS
21、EG;将源串的段地址送入数据段寄存器将源串的段地址送入数据段寄存器MOV DS,AXMOV DS,AXLEA DI,STRLEA DI,STR;将字符串的首地址送入将字符串的首地址送入DIDICLDCLD ;设置方向标志,使设置方向标志,使DFDF0 0MOV CX,NUMMOV CX,NUM;将字符串长度将字符串长度NUMNUM送入送入CXCX MOV AL,20H MOV AL,20H;将空格字符的将空格字符的ASCIIASCII码送入码送入ALAL MOV ADDR,0FFFFH MOV ADDR,0FFFFH;将将ADDRADDR的初始值设为的初始值设为0FFFFH0FFFFHREPZ
22、 SCASB ;REPZ SCASB ;若当前字符是空格,若当前字符是空格,;则重复执行串扫描指令则重复执行串扫描指令 JZ EXITJZ EXIT ;若全部是空格,则程序转移至若全部是空格,则程序转移至EXITEXIT DEC DI DEC DI ;使使DIDI指向第一个非空格字符指向第一个非空格字符 MOV ADDR,DIMOV ADDR,DI;将第一个非空格字符的偏移地址存入将第一个非空格字符的偏移地址存入ADDRADDREXIT:MOV AH,4CH;系统功能调用,;结束程序返回DOS INT 21H CSEG ENDSEND START4.3 程序控制类指令程序控制类指令n一般情况下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 接口 ppt 课件 8086 指令系统

限制150内