上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
字符串存储指令(STOre String)
作者:未知 申领版权
2010年12月12日 共有 2145 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    字符串存储指令(STOre String)
    字符串存储指令的格式如下:
    STOSB        ;存储字节
    STOSW        ;存储字
    字符串存储指令只是把累加器的值存到字符串中,即替换字符串中的一个字符。
    字节存储指令STOSB把累加器AL的内容送到寄存器DI所指向的存储单元中,然后根据方向标志DF复位置位使DI之值 增1或减1。它类似下面的两条指令:
    MOV    ES:[DI],AL
    INC    DI     或  DEC    DI
    字装入指令STOSW把累加器AX的内容送到寄存器DI所指向的存储单元中,然后根据方向标志DF复位或置位使DI之值增2或减2。类似于如下的两条指令:
    MOV   ES:[DI],AX
    ADD     DI,2    或   SUB    DI,2
    字符串存储指令的源操作是累加器AL或AX,目的操作是存储操作数,所以引用当前附加段寄存器ES。
    字符串存储指令不影响标志。
    在汇编语言中,两条字符串存储指令的格式可统一为如下一种格式:
    STOS   OPRD
    汇编程序根据操作数OPRD的类型决定使用字节存储指令还是字存储指令。操作数OPRD不影响指针寄存器DI之值。
    例如;如下程序片段把当前数据段中便移1000H开始的100个字节的数据传送到从便移2000H开始的单元中。
    CLD                      ;方向标志(以便按增值方式调整指针)
    PUSH    DS               ;由于在当前数据段中传送数据
    POP     ES               ;所以使ES等于DS
    MOV     SI,1000H        ;置源串指针初值
    MOV     DI,2000H        ;置目的串指针初值
    MOV     CX,100          ;置循环次数
    NEXT:LODSB                    ;取一字节数据
    STOSB                    ;存一字节数据
    4).字符串传送指令(MOVe String)
    字符串传送指令的格式如下:
    MOVSB           ;字节传送
    MOVSW           ;字传送
    字节传送指令MOVSB把寄存器SI所指向的一个字节数据传送到由寄存器DI所指向的存储单元中,然后根据方向标志DF复位或置位使SI和DI之值分别增1或减1。字传送指令MOVSW把寄存器SI所指向的一个字数据传送到由寄存器DI所指向的存储单元中,然后根据方向DF标志复位或置位使SI和DI之值分别增2或减2。注意,根据DS和SI计算源操作数地址,根据ES和DI计算目的操作数地址。
    字符串传送指令不影响标志。
    该指令的源操作数和目的操作均在存储器中,它与下面的字符串比较指令一起属于特殊情况。
    在汇编语言中,两条字符串传送指令的格式可统一为如下一种格式:
    MOVS         ORPD1,  ORPD2
    两个操作数的类型应该一致。汇编程序根据操作数的类型决定使用字节传送指令还是字传送指令。也即,如果操作数的类型为字节,则采用MOVSB指令;如果操作数的类型为字,则采用MOVSW指令。请注意,操作数OPRD1或OPRD2可起到方便阅读程序的作用,但不影响寄存器SI和DI之值,所以在使用上述格式的串传送指令时,仍必须先给SI和DI赋合适的值。
    上面我们利用了字符串装入指令和字符串存储指令的结合实现数据块的移动,现在利用字符串传送指令实现数据块的移动。假设要求同上,程序片段如下,请作比较。
    CLD              ;清方向标志
    ……             ;其它指令同上
    MOV    CX,100    ;置循环次数
    NEXT:NOVSB            ;每次传送以字节数据
    LOOP   NEXT
    现在循环体中只有一条串传送指令,指令速度可明显提高。在这个程序片段中,把100个字节的数据当作以字为单元的字符串,那么这个字符串也就执友50个单元了,于是循环次数可减少一半,执行速度还会提高。改写后的程序片段如下:
    CLD                            ;清方向标志
    ……                             ;其它指令同上
    MOV     CX,100/2                 ;置循环次数
    NEXT:   MOVSW                    ;每次传送一字节数据
    LOOP        NEXT
    5).字符串扫描指令(SCAn String)
    字符串比较指令的格式如下:
    SCASB          ;串字节扫描
    SCASW          ;串字扫描
    串字节扫描指令SCASB芭累加器的内容与由寄存器所指向一个字节数据采用相减方式比较,相减结果反映到各有关标志位(AF,CF,OF,PF,SF和ZF),但不影响两个操作数,然后根据方向标志复位或置位使之值增1或减1。串字扫描指令SCASW把累加器AX的内容由寄存器DI所指向的一个字数据比较,结果影响标志,然后DI之值增2或减2。
    下面的程序片段AL中的字符是否为十六进制数符:
    ……
    STRING    DB   ’0123456789ABCDEFabcdef’
    STRINGL   EQU      $    —  STRING
    ……
    CLD
    MOV  DX,SEG STRING
    MOV  ES,DX
    MOV  CX,STRINGL
    MOV  DI,OFFSET  STRING
    NEXT:   SCASB
    LOOPNZ  NEXT
    JNZ    NOT_FOUND
    FOUND:    ……
    ……
    NOT_FOUND:
    ……
    在汇编语言中,两条字符串比较指令的格式可统一为如下一种格式:
    SCAS        OPRD
    汇编程序根据操作数的类型决定使用串字节扫描指令还是串字扫描指令。
    6).字符串比较指令(COMPare String)
    字符串比较指令的格式如下:
    CMPSB       ;串字节比较
    CMPSW       ;串字比较
    串字节比较指令CMPS把寄存器SI所指向的一个字节数据与由寄存器DI所指向一个字节数据采用相减方式比较,相减结果反映到各有关标志位(AF,CF,OF,PF,SF和ZF),但不要影响两个操作数,然后根据方向标志DF复位或置位使SI和DI之值分别增1或减1。串字比较指令CMPSW把寄存器SI所指向的一个字数据与由寄存器DI所指向的一个字数据比较,结果影响标志,然后按调整2调整和之值。
    在汇编语言中,两条字符串比较指令的格式可统一为如下一种格式:
    CMPS OPRD1, OPRD2
    两个操作数的类型应该一致。汇编程序根据操作数的类型决定使用串字节比较指令还是串字比较指令。请注意,OPRD1或OPRD2不影响寄存器SI和DI之值和段寄存器DS和ES之值。

    

 

相关新闻

肢体语言塑造你自己
运用购买指令成功缔结客户,最具诱惑力的催眠式销售方法
杂谈语言(之六)——文字改革(下):一失足成千古恨的文字改革
杂谈语言(之五)——文字改革(上):半吊子的改革最糟糕!
杂谈语言(之四)——续谈广东话的口头语(2)
杂谈语言(之四)——续谈广东话的口头语(1)
杂谈语言(之三)——那些深受古汉语影响的语言(方言)
杂谈语言(之二)——语言学习的边际成本递减效应
波兰(二)
捷克(二)

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》