汇编语言第4章王爽版程序设计(字符串).ppt
《汇编语言第4章王爽版程序设计(字符串).ppt》由会员分享,可在线阅读,更多相关《汇编语言第4章王爽版程序设计(字符串).ppt(40页珍藏版)》请在三一办公上搜索。
1、第4章汇编语言程序设计,一、概述二、顺序程序设计三、DOS系统功能调用四、分支程序设计五、循环程序设计六、串处理类指令及程序设计,六、数据串处理指令,串传送指令(MOVS)ES:DIDS:SI串读取指令(LODS)AL/AXDS:SI3.串存储指令(STOS)ES:DIAL/AX4.串比较指令(CMPS)DS:SIES:DI5.串扫描指令(SCAS)AL/AXES:DI6.重复前缀指令(REP、REPZ、REPNZ),计算机更多的是要进行一些数据处理,主要的是字符串的处理。,熟悉串操作寻址的特点,串操作指令概括说明,为什么要用:数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程
2、(通过循环来实现),这样就浪费了大量的时间和空间。为此8086提供了一组处理内存中连续存放数据的串指令,这就是串操作指令。,串操作指令是8086指令系统中比较独特的一类指令,采用比较特殊的数据串寻址方式,是可以直接实现存储区之间操作的指令。在操作内存连续区域的数据时,特别好用。,串操作指令的操作对象(操作数)是内存中连续存放的数据串(String)即在连续的内存区域中以字(W)为单位的字串,或是以字节(B)为单位的字节串,串寻址方式,名称:“S”、“B”、“W”格式:提供3种格式,常用的有2种。隐含的都是双操作数指令源操作数用寄存器SI寻址,默认在数据段DS中,DS:SI,但允许段超越目的操作
3、数用寄存器DI寻址,默认在附加段ES中,ES:DI,不允许段超越每执行一次串操作指令,SI和DI值将自动修改:1(对于字节串)或2(对于字串)执行指令CLD指令后,DF=0,地址指针增1或2执行指令STD指令后,DF=1,地址指针减1或2,串操作类指令,1.串传送指令*(MOVS)2.串读取指令*(LODS)3.串存储指令*(STOS)4.串比较指令(CMPS)5.串扫描指令(SCAS)6.重复前缀指令(REP*、REPZ、REPNZ),串传送MOVS,功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储
4、单元。即:DS:SIES:DI。当DF=0时,SI和DI自动增量;当DF=1时,SI和DI自动减量。,MOVSB;字节串传送:ES:DIDS:SI;SISI1,DIDI1,演示,MOVSW;字串传送:ES:DIDS:SI;SISI2,DIDI2,演示,特殊性?,内存操作数之间直接传送,例1:字节串传送,mov si,offset sourcemov di,offset destinationmov cx,100;cx传送次数cld;置DF=0,地址增加again:movsb;传送一个字节dec cx;传送次数减1jnz again;判断传送次数cx是否为0;不为0,则到again位置执行指令;
5、否则,结束,传送100个字节操作数的例子,例:字串传送,mov si,offset sourcemov di,offset destinationmov cx,50;cx传送次数cld;置DF=0,地址增加again:movsw;传送一个字dec cx;传送次数减1jnz again;判断传送次数cx是否为0;不为0,则到again位置执行指令;否则,结束,串读取LODS,LODSB;字节串读取:ALDS:SI;SISI1,LODSW;字串读取:AXDS:SI;SISI2,功能:将SI所指的源串中的一个字节(或字)存储单元中的数据取出来送入AL(或AX)中。即:字节操作:SIAL,字操作:SI
6、AX。修改指针SI,使它指向串中的下一个元素。当DF=0时,SI增量。当DF=1时,SI减量。,串存储STOS,STOSB;字节串存储:ES:DIAL;DIDI1,STOSW;字串存储:ES:DIAX;DIDI2,功能:将AL或AX中的数据送入DI所指的目的串中的字节(或字)存储单元中。即:字节操作:ALDI,字操作:AXDI。修改指针DI,使之指向串中的下一个元素。当DF=0时,DI增量;当DF=1时,DI减量。,例:串存储,mov ax,0mov di,0mov cx,1000hcld;DF=0,地址增加again:stosw;传送一个字loop again;传送次数cx是否为0,stos
7、指令应用:数据区初始化,结果是什么?,串比较CMPS,功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。即:(SI)(DI)。修改串指针,使之指向串中的下一个元素。当DF=0时,(SI)和(DI)增量。当DF=1时,(SI)和(DI)减量。,CMPSB;字节串比较:DS:SIES:DI;SISI1,DIDI1,CMPSW;字串比较:DS:SIES:DI;SISI2,DIDI2,特殊?,例:字符串比较,mov si,offset string1mov di,offset string2m
8、ov cx,countcldagain:cmpsb;比较两个字符jnz unmat;有不同字符,转移dec cxjnz again;进行下一个字符比较mov al,0;字符串相等,设置00hjmp output;转向outputunmat:mov al,0ffh;设置ffhoutput:mov result,al;输出结果标记,对string1和string2两个字符串进行比较,若串相同,在result单元中置0,否则置1,Loop again,串扫描SCAS,功能:AL(字节)或AX(字)中的内容与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存。
9、即:字节操作:(AL)(DI),字操作:(AX)(DI)。修改指针使之指向串中的下一个元素。当DF=0时,(DI)增量。当DF=1时,(DI)减量。,SCASB;字节串扫描:ALES:DI;DIDI1,SCASW;字串扫描:AXES:DI;DIDI2,例:查找字符串,利用scas指令可以进行搜索。把要搜索的关键字放在AL或AX中,用以搜索内存的某一数据块或字符串中,有无此关键字,若有,则把搜索次数记下来(若次数为0,表示无要搜索的关键字),并且记录下存放关键字的地址。程序一开始,当然要设置数据块的地址指针(scas指令要求设在DI中),要设立数据块的长度(要求设在CX中),把关键字送入AL或A
10、X中。利用Z标志以判断是否搜索到,以便分别处理。,scas指令应用,例3:查找字符串,mov di,offset stringmov al,20h;空格的ASCII码值mov cx,countcldagain:scasb;搜索jz found;为0(ZF=1),发现空格dec cx;不是空格jnz again;搜索下一个字符.;不含空格,则继续执行found:.,重复前缀指令(rep),串操作指令执行一次,仅对数据串中的一个字节或字进行操作。但是在串操作指令前,都可以加一个重复前缀,实现串操作的重复执行。重复次数隐含在CX寄存器中重复前缀3条指令:REP、REPZ和REPNZ,REP重复前缀指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 章王爽版 程序设计 字符串
链接地址:https://www.31ppt.com/p-6586426.html