指令系统(串操作类指令)

上传人:豆浆 文档编号:48480103 上传时间:2018-07-16 格式:PPT 页数:13 大小:95.50KB
返回 下载 相关 举报
指令系统(串操作类指令)_第1页
第1页 / 共13页
指令系统(串操作类指令)_第2页
第2页 / 共13页
指令系统(串操作类指令)_第3页
第3页 / 共13页
指令系统(串操作类指令)_第4页
第4页 / 共13页
指令系统(串操作类指令)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《指令系统(串操作类指令)》由会员分享,可在线阅读,更多相关《指令系统(串操作类指令)(13页珍藏版)》请在金锄头文库上搜索。

1、第六节第六节 串操作指令串操作指令 定义定义 串串指存储器中地址连续的若干单元字符或数据。指存储器中地址连续的若干单元字符或数据。vv串传送指令串传送指令 vv串比较指令串比较指令 vv串扫描指令串扫描指令vv串装入指令串装入指令 vv串存储指令串存储指令 80868086提供的处理串的指令包含:提供的处理串的指令包含:串处理指令只能处理单个串处理指令只能处理单个 字节或字,应用中需要串字节或字,应用中需要串 重复前缀配合使用。重复前缀配合使用。由多个字节数据组成的数据串称为字节数据串,简称由多个字节数据组成的数据串称为字节数据串,简称字节串字节串;由多个字数据组成的数据串称为字数据串,简称由

2、多个字数据组成的数据串称为字数据串,简称字串字串。组成数据串的字节数据或字数据称为数据组成数据串的字节数据或字数据称为数据串元素串元素。若对数据串元素作同样的操作,就称为若对数据串元素作同样的操作,就称为串操作串操作。把能完成串操作功能的指令称为数据串操作指令或简称为把能完成串操作功能的指令称为数据串操作指令或简称为串操作指令串操作指令 。串重复前缀指令:串重复前缀指令:REPREP( (重复重复) )、REPE/REPZREPE/REPZ( (相等相等/ /为零重复为零重复) )、REPNE/REPNZREPNE/REPNZ( (不相等不相等/ /不为零重复不为零重复) ); CXCX寄存器

3、存放重复操作的次数;寄存器存放重复操作的次数; 一般源串存放在数据段一般源串存放在数据段DSDS中,偏移地址由中,偏移地址由SISI指定;指定;目的串存放在附加段目的串存放在附加段ESES中,偏移地址由中,偏移地址由DIDI指定;指定; 设置方向标志指令:设置方向标志指令:CLDCLD(DF=0DF=0)和)和STDSTD(DF=1DF=1)来设置来设置SISI、DIDI偏移地址在重复操作过程中的移动方向。偏移地址在重复操作过程中的移动方向。教学进程教学进程基本的字符指令基本的字符指令 1.1.(1) (1) 串传送指令串传送指令MOVSMOVS 指令功能:把位于数据段指令功能:把位于数据段D

4、S:SIDS:SI中一个字节或字的数据传送到中一个字节或字的数据传送到附加段附加段ES:DIES:DI中。中。 指令格式:指令格式:MOVSBMOVSB;传送字节数据;传送字节数据MOVSWMOVSW;传送字数据;传送字数据 指令操作:指令操作:字节操作:字节操作: ( (DI) DI) (SI)(SI),SISI(SI)1(SI)1,DIDI(DI)1 (DI)1 字字 操操 作:作: ( (DI) DI) (SI)(SI),SISI(SI)2(SI)2,DIDI(DI)2(DI)2(方向标志方向标志DF=0DF=0时用;时用;DF=1 DF=1 时用)时用) 本指令对标志位无影响本指令对标

5、志位无影响例414 将数据段中首地址为SOURCE的100个字节串元素传送到附加段中首 地址为DEST的内存单元中。实现该功能的程序段如下: CLD ;使DF=0LEA SI,SOURCE;SI指向源串LEA DI,DEST ;DI指向目的串MOV CX,100AGAIN: MOVSB ;(DS:SI)ES:DI, ;(SI)+1SI,(DI)+1DI DEC CX JNZ AGAIN HLT本例中MOVSB指令可用以下4条指令替代:MOV AL,SI MOV ES:DI,AL INC SI INC DI(2)(2) 串比较指令串比较指令CMPSCMPS 指令功能:指令功能:将将ESES:DI

6、DI指定的单元的内容减去由指定的单元的内容减去由DSDS:SISI指定单元的内容指定单元的内容,不送回结果,只影响标志位,不送回结果,只影响标志位CFCF、PFPF、AFAF、ZFZF、SFSF和和OFOF。 指令格式:指令格式:CMPSBCMPSB ;比较字节数据;比较字节数据CMPSWCMPSW ;比较字数据;比较字数据 指令操作:指令操作:(DI)-(SI(DI)-(SI), , 根据比较结果置条件标志位:根据比较结果置条件标志位:相等相等 ZF=1ZF=1,不等不等 ZF=0ZF=0字节操作:字节操作:SISI(SI)(SI) 1 1, DIDI(DI)(DI) 1 1字字 操操 作:

7、作:SISI(SI)(SI) 2 2, DIDI(DI)(DI) 2 2(方向标志方向标志DF=0DF=0时用;时用;DF=1 DF=1 时用)时用)例例415 415 检查数据段中首地址分别为检查数据段中首地址分别为STR1STR1和和STR2STR2的两个长度为的两个长度为5050的字节串是的字节串是 否相等。若相等,则(否相等。若相等,则(BXBX)=0=0;若不相等,则;若不相等,则BXBX保存保存STR1STR1中第中第1 1个不相同元素个不相同元素 的偏移地址,并将该元素保存到的偏移地址,并将该元素保存到ALAL中。中。 实现该功能的程序段如下:实现该功能的程序段如下:CLDCLD

8、 MOVMOVCXCX,5050 MOVMOVAXAX,DSDS MOVMOVESES,AXAX;使附加段与数据段重叠;使附加段与数据段重叠 LEALEASISI,STR1STR1 LEALEADIDI,STR2STR2 LP1LP1:CMPSBCMPSB;(ES:DI)-(DS:SI),(SI)+1SI,(DI)+1DI(ES:DI)-(DS:SI),(SI)+1SI,(DI)+1DI JNZJNZLP2LP2 DECDECCXCX JNZJNZLP1LP1 MOVMOVBXBX,0 0 JMPJMPDONEDONE LP2LP2:DECDECSISI MOVMOVBXBX,SISI MOV

9、MOVALAL,SISI DONEDONE: HLTHLT(3)(3) 指令功能:指令功能:ALAL或或AXAX中的内容与附加段中的内容与附加段ESES: :DIDI所指的目的串中的所指的目的串中的一个字节(或字)的数据相减,并根据结果设置标一个字节(或字)的数据相减,并根据结果设置标志位,但结果不回送任何单元。志位,但结果不回送任何单元。 指令格式:指令格式:SCASBSCASB ;比较字节数据;比较字节数据SCASWSCASW ;比较字数据;比较字数据 指令操作:字节操作:指令操作:字节操作:( (AL)AL)(DI), (DI), DIDI(DI)(DI) 1 1字字 操操 作:作: (

10、 (AX)AX)(DI), (DI), DIDI(DI)(DI) 2 2(方向标志方向标志DF=0DF=0时用;时用;DF=1 DF=1 时用)时用) 串扫描指令串扫描指令SCASSCAS 指令功能:指令功能:将将DS:DS:SISI所指定的字节(或字)单元的内容取出来送入所指定的字节(或字)单元的内容取出来送入ALAL(或或AXAX)中。中。 指令格式:指令格式:LODSBLODSB ;存字节数据;存字节数据LODSWLODSW ;存字数据;存字数据 指令操作:指令操作:字节操作:字节操作:ALAL(SI)(SI),SISI(SI)(SI) 1 1字字 操操 作:作:AXAX(SI)(SI)

11、,SISI(SI)(SI) 2 2(方向标志方向标志DF=0DF=0时用;时用;DF=1 DF=1 时用)时用) (4) (4) 串装入指令串装入指令LODSLODS 指令功能:指令功能:将将ALAL或或AXAX中的数据送入中的数据送入ESES:DIDI所指定的目标单元中。所指定的目标单元中。 指令格式:指令格式:STOSBSTOSB ; 存字节数据存字节数据STOSWSTOSW ; 存字数据存字数据 指令操作:指令操作:字节操作:字节操作: ( (DI) DI) (AL)(AL),DIDI(DI)(DI) 1 1字字 操操 作:作: ( (DI) DI) (AX)(AX),DIDI(DI)(

12、DI) 2 2(方向标志方向标志DF=0DF=0时用;时用;DF=1 DF=1 时用)时用) (5)(5) 串存储指令串存储指令STOSSTOS 指令功能:指令功能:重复执行指令规定的操作,直到(重复执行指令规定的操作,直到(CXCX)=0=0。 指令格式:指令格式:REP MOVSREP MOVS(B/WB/W)或)或STOSSTOS(B/WB/W)或)或LODSLODS(B/WB/W) 指令操作:指令操作: 如(如(CXCX)=0 =0 则退出则退出 REPREP,否则转否则转;(CXCX)(CXCX)1 1; 执行其后的串操作指令;执行其后的串操作指令; 重复重复。 (1)(1) 无条件

13、重复前缀无条件重复前缀REPREP重复前缀重复前缀 2.2.(2)(2) 指令功能:重复执行指令规定的操作,每执行一次串指令功能:重复执行指令规定的操作,每执行一次串指令(指令(CXCX)1 1,并判断并判断ZFZF标志是否为标志是否为0 0,只要(只要(CXCX)=0=0或或ZF=0ZF=0,则停止执行串操作指令。则停止执行串操作指令。 指令格式:指令格式:REPE/REPZREPE/REPZ MOVSMOVS(B/WB/W)或)或STOSSTOS(B/WB/W)或)或LODSLODS(B/WB/W) 指令操作:指令操作: 如(如(CXCX)=0=0或或 ZF=0ZF=0则退出,否则转则退出

14、,否则转; (CXCX)(CXCX)1 1; 执行其后的串操作指令;执行其后的串操作指令; 重复重复 。 相等或为零时重复串前缀相等或为零时重复串前缀REPE/REPZREPE/REPZ例例4-164-16比较首地址分别为比较首地址分别为STR1STR1和和STR2STR2的两个长度为的两个长度为5050的字节串,找出第一的字节串,找出第一 个不相等的字节(要求用个不相等的字节(要求用REPZREPZ指令实现)。若两串相同,则(指令实现)。若两串相同,则(BXBX)=0=0;若找;若找 到不相等的字节,则将到不相等的字节,则将STR1STR1串中的这个数送到串中的这个数送到ALAL,基地址送,基地址送BXBX中。中。CLDCLD MOV MOV CXCX,100100 LEA LEA SISI,STR1STR1 LEA LEA DIDI,STR2STR2 REPZ REPZ CMPSBCMPSB JZ JZ OVEROVER DEC DEC SISI MOV MOV BXBX,SISI MOV MOV ALAL,SISI JMP JMP STOPSTOP OVEROVER: MOV MOV BXBX,0 0 STOPSTOP: HLTHLT(3)(3) 指令功能:指令功能:重复执行指令规定的操作,

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

当前位置:首页 > 行业资料 > 其它行业文档

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