微机原理第三版第3章-7.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理第三版第3章-7

串操作指令 串操作指令概括说明 为什么要用:数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程(通过循环来实现),这样就浪费了大量的时间和空间。为此8086提供了一组处理内存中连续存放数据的串指令,这就是串操作指令。 串操作指令寻址方式说明 名称:“S”、“B”、“W” 格式:提供3种格式,常用的有2种。 隐含的都是双操作数指令,源操作数用SI寄存器寻址,默认在DS:[SI] 中, 但允许段超越;目的操作数用DI寄存器寻址,默认在ES:[DI]中,不允许段超越 每执行一次串操作指令,SI和DI值将自动修改: ±1(对于字节串)或±2(对于字串) 执行指令CLD指令后,DF = 0,地址指针自动增1或增2 执行指令STD指令后,DF = 1,地址指针自动减1或减2 1、串传送指令MOVS 功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。 即:① DS:[SI]→ES:[DI]。 ② 当DF=0时,SI和DI自动增量;当DF=1时,SI和DI自动减量。 例:字节串传送例子。编写一程序段,将源数据串中的100个字节数据传送到目的串数据区中。设源数据串的首偏移地址为 2000H,目的串的首偏移地址为5000H mov si,2000H mov di,5000H mov cx,100 ;cx←传送次数 cld ;置DF=0,地址增加 again: movsb ;传送一个字节 dec cx ;传送次数减1 jnz again ;判断传送次数cx是否为0 ;不为0,则到again位置执行指令 ;否则,结束 如果改用字串传送,相应程序段如下: mov si,offset source mov di,offset destination mov cx,50 ;cx←传送次数 cld ;置DF=0,地址增加 again: movsw ;传送一个字 dec cx ;传送次数减1 jnz again ;判断传送次数cx是否为0 ;不为0,则到again位置执行指令 ;否则,结束 2、串读取指令LODS 功能:将SI所指的源串中的一个字节(或字)存储单元中的数据取出来送入AL(或AX)中。 即:① 字节操作:[SI]→AL,字操作:[SI]→AX。   ② 修改指针SI,使它指向串中的下一个元素。   当DF=0时,SI增量。当DF=1时,SI减量。 3、串存储指令STOS 例:串存储指令应用。 ┆ MOV AL,’#’ MOV DI,100H MOV CX,200 CLD AGAIN:STOSB LOOP AGAIN ┆ 4、串比较指令CMPS 功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。 即:①([SI])-([DI])。 ② 修改串指针,使之指向串中的下一个元素。 当DF=0时,(SI)和(DI)增量。 当DF=1时,(SI)和(DI)减量。 例:字符串比较。对str1和str2两个字符串进行比较,若串相同,在result单元中置0,否则置-1 mov si,offset str1 mov di,offset str2 mov cx,count cld again: cmpsb ;比较两个字符 jnz unmat ;有不同字符,转移 dec cx jnz again ;进行下一个字符比较 mov al,0 ;字符串相等,设置00h jmp output ;转向output unmat: mov al,0ffh ;设置ffh output: mov result,al ;输出结果标记 5、串扫描指令SCAS 功能:AL(字节)或AX(字)中的内容与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存。 即: ① 字节操作:AL-([DI]),字操作:AX-([DI])   ② 修改指针使之指向串中的下一个元素。   当DF=0时,DI增量。当DF=1时,DI减量。 例:在字符串STRING中搜索字符“#” mov di,offset string mov al, ‘#’  mov cx,count cld again: scasb jz found dec

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档