• 串操作指令


    1. movs

    ;字符串传送  movs
    ;1.  ds   es
    ;2.  si   di 
    ;3.  ctd   std
    ;4.  cl
    ;5.  rep  
    data  sesment
    mess1 db 'personal_computer'
    data  ends
    extra sesment
    mess2 db sizeof mess1 dup(?)
    extra ends
    code sesment
    ....
    lea si, mess1
    lea di, mess2
    mov cl, sizeof mess1
    cld
    rep movsb
    ....
    
    code ends
    enter code here
    

    2 stosb

    ;把附加段中的5个字节缓冲区设置为20H
    ;使用的指令为stos   把AL或者AX送入指定区域   ES:DI 
    ; 1. 设置ES 设置AX
    ; 2. 设置si
    ; 3. 设置cl
    ; 4. rep
    lea di,buffer
    mov al,20h
    mov cl,5
    rep stos
    enter code here
    

    3 lodsb

    ;从字符串block中取正数存入字节串dplus中   都在ds
    ;1.  ds   es
    ;2.  si   di
            mov ax,ds       ;
            mov es,ax       ;seg之前不可以直接操作  
            lea si,block    ;源
            lea di,dplus    ;目的
            mov cx,count    ;字符串数目
            cld             ;设置df=0
    go_on:  lodsb          
            test al,80h     ;符号测试
            jnz again       ;负数
            stosb           ;整数  很巧妙
    again:  dec cx
            loop go_on
    
    enter code here
    

    4 cmps

    ;比较等长俩个字符串,判断他们是否相等
            lea si,string1
            lea di,string2
            mov cx,lengthof string1
            cld
            repe cmpsb
            jnz  no
            mov  dl,'y'   ;相等
            jmp output    
    no:     mov  dl,'n'   ;不相等
    output: mov  ah,2     ;输出一个字符
            int 21h
    

    5 scas

    ;从一个字符串中查找一个指定字符
            lea di,string
            mov al,	''      ;20h 空格
            mov cl, sizeof string
            cld             ;设置方向
            repnz scasb
            jz        found
            .....
            
    found:....
    enter code here
    

    6 总结

     1. 串操作,确定指令
     2. 根据串的位置准备ds,es(ds可超越,但是es不可以)
     3. 利用了lea,或者 设置offset si,di
     4. 利用 sizeof lenghof 设置cx
     5. 选择合适的rep 
     6. 设置不同分支程序(针对repz或者repnz)
  • 相关阅读:
    上下伸展的JS菜单
    [ZZ]Debug VBScript with Visual Studio
    面试总结之杂题
    [ZZ]9 Confusing Naming Conventions for Beginners
    Robocopy
    [ZZ]什么是Alpha,Beta,RC,RTM,CTP版
    使用位运算交换两个值,不用临时变量
    学习笔记之编程之美微软技术面试心得(一)
    C#中如何获取系统环境变量
    学习笔记之SQL教程 from W3School
  • 原文地址:https://www.cnblogs.com/Howbin/p/9945396.html
Copyright © 2020-2023  润新知