目录

串传送指令MOVS
串存储指令STOS
串读取指令LODS
串比较指令CMPS
串扫描指令SCAS
重复前缀指令REP

指令包括:MOVS,LODS,STOS,CMPS,SCAS,REP

串的概念

串是连续存放再内存中的字节块或字块。每个串有一个起始地址和长度, 待操作的数据串称为源串,目的地址称为目标串

串指令操作的特点

1.源操作数用寄存器SI寻址,默认的数据段DS
中,但允许段超越:DS:[SI]
2.目的操作数用寄存器DI寻址,默认在附加段
ES中,不允许段超越:ES:[DI]
3.每执行一次串操作指令,SI和DI将自动修
改:±1(对于字节串)或±2(对于字串)

执行指令CLD后,DF=0,地址指针增加1或2
执行指令STD后,DF=1,地址指针减1或2

4.数据块长度值有CX指定

串传送指令:MOVS

作用:把字节/子操作数从主存的源地址传送至目的地址

;使用格式,指令包括MOVSB,MOVSW
movsb   ;字节串传送   ES:[DI]<-DS:[SI];DF==0    ,SI<-SI+1,DI<-DI+1,;DF==1    ,SI<-SI-1,DI<-DI-1
movsw    ;字串传送      ES:[DI]<-DS:[SI];DF==0    ,SI<-SI+2,DI<-DI+2;DF==1    ,SI<-SI-2,DI<-DI-2

egl.

mov si,offset source  ;获取源偏移地址
mov di,offset destination ;获取目的偏移地址
mov cx,100     ;cx<-传送次数
cld                    ;置DC=0,地址增加
again:movsb ;传送一个字节
dec cx    ;传送次数减1
jnz    again    ;判断传送次数cx是否为0,不为0则到
again位置执行指令,否则结束

在使用串操作指令前,需要提前将DS,ES,SI,DI, CX, DF设置好

串存储指令STOS

作用:把AL或AX的数据传送至目的地址

;使用格式,指令包括 STOSB,STOSW
STOSB    ;字节串存储:ES:[DI]<-AL;DI<-DI+1
STOSW    ;字串存储: ES:[DI]<-AX;DI<-DI+2

egl.

    mov ax,0mov di,0    mov cx,8000h    ;cx<-传送次数(32x1024)cld            ;DF=0,地址增加
again: stosw    ;传送一个字
dec cx    ;传送次数减1
jnz again ; 传送次数cx是否为0

串读取指令LODS

作用:将字节/字从数据段中读取出来保存在AL或者AX中

;使用格式,指令包括LODSB,LODSW
LODSB    ;字节串存储:AL<-DS:[SI]
;SI<-SI+-1
LODSW   ;字串存储:AX<-DS:[SI]
;SI<-SI+-2
mov si , offset block
mov di , offset dplus
mov bx , offset dminus
mov ax , ds
mov es , ax
;数据都在一个段中,所以设置 es = ds mov cx , count ; cx <﹣字节数 cld go _ on : lodsb ;从 block 取出一个数据test al ,80h       ;检测符号位,判断是正是负
jnz minus  ;符号位为1,是负数,转向 minus stosb        ;符号位为0,是正数,存入 dplus
jmp again  ;程序转移到 again 处继续执行
jnz go _ on ;完成正负数据分离

串比较指令CMPS

作用: 将主存中的源操作数减去目的操作数,以便设置标志,进而比较两操作数之间的关系

;使用格式,指令包括 CMPSB,CMPSW
CMPSB    ;字节串比较:DS:[SI]-ES:[DI];SI<-SI+-1,DI<-DI+-1
CMPSW    ;字串比较    DS:[SI]-ES:[DI];SI<-SI+-2,DI<-DI+-2

串扫描指令SCAS

;使用格式,指令包括SCASB,SCASW
SCASB    ;字节串比较 AL-ES:[DI];DI<-DI+-1
SCASW    ;字串比较 AX-ES:[DI];DI<-DI+-2

egl.

mov di,offset stringmov al,20h    ;空格对应的ASCII码为20mov cx,count cld
again scasb    ;搜索jz found    ;为0(ZF=1),发现空格dec cx    ;不是空格jnz again    ;搜索下一个字符
found: ....    ;不含空格,则继续执行

重复前缀指令REP

重复前缀REP可以加到串传送操作指令。REP前缀是每次执行串指令后CX-1,CX-1后,重复执行串指令,知道CX值为0时,指令才终止。

;使用示例 REP,REPZ,REPNZ,REPE,REPNE
rep movsx    ;无条件重复直到cx==0
repz cmpsx    ;无条件重复直到cx==0 / ZF==0
repnz cmpsx   ;无条件重复直到cx==0 /zf==1
repe cmpsx    ;不断比较,直到cx==0 / zf==0
repne cmpsx    ;不断比较,直到cx==0 / zf==1

egl.

mov si,offset source
mov di,offset destination
mov cx,100    ;cx<-传送次数
cld
rep movsb
;____________$$$_____________
mov si,offset string1
mov di,offset string2
mov cx,count
cld
repz cmpsb    ;重复比较前两个字符
jnz unmat    ;字符串不等,转移到unmat
mov al,0    ;字符串相等,设置00h
jmp output    ;跳转到outputunamt: mov al,0ffh    ;设置ffh,被jnz跳转到
output: mov result,al ;输出结果标记,被jmp跳转到

串操作指令详解 MOVS,LODS,STOS,CMPS,SCAS,REP相关推荐

  1. 串操作指令应用(MOVS/CMPS/SCAS/LODS/STOS)

    串操作指令(MOVS/CMPS/SCAS/LODS/STOS)的使用: 1.串传送指令 使用 上述三种格式的串传送指令在执行前都需要预先设置地址指针DS:SI和ES:DI,设置传送方向,如果要重复执行 ...

  2. 操作指令详解_爱码小士丨 APP稳定性测试(附视频详解)

    在实际的测试过程中,主要是对系统的功能来进行测试,用于校验功能的正确性 还需要考虑到系统在未修改的状态下,是否能够稳定运行,即崩溃.闪退.重启.系统异常等等等地情况 在APP中,稳定性测试一般是交由M ...

  3. adb 操作指令详解

    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具. 注:有部分命令的支持情况可能与 Android ...

  4. mysql 操作指令详解_Mysql常用命令详解

    Mysql安装目录 数据库目录 /var/lib/mysql/ 配置文件 /usr/share/mysql(mysql.server命令及配置文件) 相关命令 /usr/bin(mysqladmin ...

  5. 汇编中的串操作指令(MOVS,CMPS,SCAS,LODS,STOS)

           学汇编的都知道,汇编中很多问题都是对字符串进行的操作,但是我们操作时总是重复相同的操作,用多个指针进行记录,不断判断只针对位置,这样确实很麻烦,于是汇编提供了一种对字符串进行操作的指令, ...

  6. 80x86汇编指令详解

    80x86指令系统,指令按功能可分为以下七个部分. (1) 数据传送指令. (2) 算术运算指令. (3) 逻辑运算指令. (4) 串操作指令. (5) 控制转移指令. (6) 处理器控制指令. (7 ...

  7. LDM与STM指令详解

    title: LDM与STM指令详解 date: 2019/2/26 17:58:00 toc: true --- LDM与STM指令详解 指令形式如下,这里的存储方向是针对寄存器的 Load Mul ...

  8. PUSHA/PUSHAD POPA/POPAD 指令详解

    PUSHA/PUSHAD POPA/POPAD 指令详解 官方文档的解释 在<Intel Architecture Software Developer's Manual Volume 2:In ...

  9. 大数据WEB阶段(十三)JSP(一)JSP基础、JSP指令详解、四大域九大隐式对象总结

    JSP基础.指令.四大作用域九大隐式对象总结 (一)JSP基础 一.JSP概述 jsp其实是java动态页面技术 HTML可以用来组织页面但是HTML是一种静态web资源技术无法嵌入动态数据. Ser ...

最新文章

  1. 虚拟机中LINUX系统的安装
  2. nginx负载均衡分发请求的几种方式
  3. http 几种请求方法的差别
  4. apache开源项目--HttpComponents
  5. 诺顿误杀真相之“为什么诺顿会误杀中文windows”
  6. java课程设计简易记事本
  7. php 检测字符长度,php验证字符串长度问题
  8. Python数学问题2:求100以内素数之和
  9. java中1字节(8位)_Java中基本数据类型占几个字节多少位
  10. 数字图像处理(1): 数字图像处理领域应用——电磁波谱 可见光
  11. 实在人做实干型产品——专访凯特伟业CEO云凤程
  12. 【北邮国院大三上】大三上高编/互联网协议/电信系统笔记
  13. 验证码输入错误怎么再次刷新验证码
  14. Golang GBK转UTF-8
  15. 知到网课英语口语趣谈考试试题|真题|题库(含答案)
  16. uni-app微信公众号(3)——购物车
  17. qc中的流程图怎么画_QC工艺流程图
  18. 研究型读书法 - 主题阅读法
  19. 实时路径追踪篇 重点内容
  20. 模糊理论在机器人传感器中的应用_超声波传感器和激光雷达传感器在机器人避障中的应用...

热门文章

  1. 王道计算机网络课代表 - 考研计算机 第五章 传输层 究极精华总结笔记
  2. Pepper/Nao中级教程:第二章 如何将Python程序部署到机器人内部运行
  3. 打造个人知识库网站(Docsify+GitHub Page)
  4. 物联网它工程就业方向又会在哪里
  5. 【Linux】linux常用基本命令
  6. 一些学习中常被忽略的 JavaScript 小技巧
  7. openwrt取消strip 软件包
  8. 站长说说之网站seo优化主要有哪些方面
  9. 云原生钻石课程|第8课:Kubernetes运维管理详解(上)
  10. 黄中强:一个小老板的日常管理