博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
串操作指令2
阅读量:4944 次
发布时间:2019-06-11

本文共 3621 字,大约阅读时间需要 12 分钟。

串操作指令2

1. movs

; multi-segment executable file template.data segment    ; add your data here!    pkey db "press any key...$"          str1 db "howbin"      str2 db 6 dup(0)endsstack segment    dw   128  dup(0)endscode segmentstart:; set segment registers:    mov ax, data    mov ds, ax    mov es, ax    ;1 设置源地址寄存器        lea si,str1;    ;2 设置目的寄存器        lea di,str2;        ;3.设置方向    cld ;std         ;4.设置循环次数    mov cx, 6;              ;5.重复头        rep movsb;             lea dx,  str2     mov ah, 9    int 21h        ; output string at ds:dx        ; wait for any key....        mov ah, 1    int 21h        mov ax, 4c00h ; exit to operating system.    int 21h    endsend start ; set entry point and stop the assembler.

2 stos

; multi-segment executable file template.data segment    ; add your data here!    pkey db "press any key...$"     str1 db 6 dup(0)endsstack segment    dw   128  dup(0)endscode segmentstart:; set segment registers:    mov ax, data    mov ds, ax    mov es, ax    ; add your code here        ;1.选型 stos  stosb        ;2.设置AL/AL填充物  al  源        mov al,'h';        ;3. 设置目的    lea di, str1    ;4.设置方向    cld    ;5.设置次数    mov cx,0    mov cl,6    ;6.设置重复头    rep stosb;                         lea dx, pkey    mov ah, 9    int 21h        ; output string at ds:dx        ; wait for any key....        mov ah, 1    int 21h        mov ax, 4c00h ; exit to operating system.    int 21h    endsend start ; set entry point and stop the assembler.

3 lods

; multi-segment executable file template.data segment    ; add your data here!    pkey db "press any key...$"       block db -1,-2,-3,0,1,2,3,4    count equ 8    dplus db count dup(0)endsstack segment    dw   128  dup(0)endscode segmentstart:; set segment registers:    mov ax, data    mov ds, ax    mov es, ax    ; add your code here        ;从字符串block中取正数存入字节串dplus中                ;1. 确定取出 lodsb  确定放入 stos        ;2. 设置源头 si     目的 di        lea si,block    lea di,dplus        ;3. 设置方向         cld        ;4. 设置次数    mov cx,0;    mov cl,count;    again:    lodsb;     cmp al,0    jle next;    stosbnext:     loop again;                lea dx, pkey    mov ah, 9    int 21h        ; output string at ds:dx        ; wait for any key....        mov ah, 1    int 21h        mov ax, 4c00h ; exit to operating system.    int 21h    endsend start ; set entry point and stop the assembler.

4 cmps 串比较指令

;比较等长俩个字符串,判断他们是否相等    ; multi-segment executable file template.data segment    ; add your data here!    pkey db "press any key...$"           str1 db "abc"    str2 db "abc"    result db dub(0);endsstack segment    dw   128  dup(0)endscode segmentstart:; set segment registers:    mov ax, data    mov ds, ax    mov es, ax          mov result,0    ;1.选择cmps         ;2.设置源与目的      lea si,str1;    lea di,str2        ;3.设置方向    cld        ;4.设置次数        mov cx,0;    mov cl,3        ;5.执重复头        repe cmpsb;      ;6.判断    jnz next;    mov result,1next:                    lea dx, pkey    mov ah, 9    int 21h        ; output string at ds:dx        ; wait for any key....        mov ah, 1    int 21h        mov ax, 4c00h ; exit to operating system.    int 21h    endsend start ; set entry point and stop the assembler.

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)

转载于:https://www.cnblogs.com/Howbin/p/11112084.html

你可能感兴趣的文章
C++常见问题之一void&null&0
查看>>
Apriori算法
查看>>
Python学习【第5篇】:Python之字符编码问题
查看>>
集合set
查看>>
VC 常用资源
查看>>
【个人作品】来电黑名单软件(android)
查看>>
SQL Server创建索引统计信息
查看>>
暑假第十一测
查看>>
Java之枚举
查看>>
安卓五种数据存储的方式
查看>>
hdu 3605(二分图的多重匹配 | 网络流)
查看>>
Memcache学习笔记
查看>>
ios中的UIButton和UIImageView异同点
查看>>
POJ 2002 Squares
查看>>
网易云容器服务微服务化实践—微服务测试及镜像化提测全流程实践
查看>>
Python 常见的错误类型和继承关系
查看>>
UI自动化(2)---CSS基础知识
查看>>
Java 并发:volatile 关键字解析
查看>>
用RadEditorLite替代MOSS中的富文本编辑控件
查看>>
《Java技术》预备作业02计科1501赵健宇
查看>>