当前位置: 首页 > news >正文

串操作指令详解 MOVS,LODS,STOS,CMPS,SCAS,REP

指令包括:MOVS,LODS,STOS,CMPS,SCAS,REP
串的概念:串是连续存放再内存中的字节块或字块。每个串有一个起始地址和长度, 待操作的数据串称为源串,目的地址称为目标串

目录

串传送指令:MOVS
串存储指令STOS
串读取指令LODS
串比较指令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    ;传送次数减1jnz    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<-传送次数(80x1024)    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

串比较指令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

指令包括&#xff1a;MOVS&#xff0c;LODS&#xff0c;STOS&#xff0c;CMPS&#xff0c;SCAS&#xff0c;REP 串的概念&#xff1a;串是连续存放再内存中的字节块或字块。每个串有一个起始地址和长度&#xff0c; 待操作的数据串称为源串&#xff0c;目的地址称为目标串 目录…...

Java实现判断素数

1 问题 判断101-200之间有多少个素数&#xff0c;并输出所有素数。 2 方法 package homework04; public class Test05 { public static void main(String[] args) { for (int i 101; i < 201; i) { boolean flag true; for (int j 2; j…...

PHP初级教程------------------(2)

目录 运算符 赋值运算符 算术运算符 比较运算符 逻辑运算符 连接运算符 错误抑制符 三目运算符 自操作运算符 ​编辑 计算机码 位运算符 运算符优先级 流程控制 控制分类 顺序结构 分支结构 If分支 ​ Switch分支 循环结构 For循环 while循环 do-while循环 循环控制 ​ …...

【SQL开发实战技巧】系列(三十五):数仓报表场景☞根据条件返回不同列的数据以及Left /Full Join注意事项

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…...

springBoot自动配置过程介绍

什么是自动配置 以前整合spring mybatis框架时候&#xff0c;需要加很多的bean, 比如说sqlSessionFactory等等 现在springboot帮我们干了&#xff0c;我们只需要引入对应的starter就可以了。 springBoot可以帮我们配置好了一些bean. 如mysql, mogondb相关操作等等&#xff…...

PostgreSQL最后的救命稻草 — pg_resetwal

pg_resetwal— 重置 PostgreSQL 数据库集群的预写日志和其他控制信息 适用版本&#xff1a;PostgreSQL 12/13/14/15语法 pg_resetwal [ -f | --force ] [ -n | --dry-run ] [option...] [ -D | --pgdata ]datadir描述pg_resetwal清除预写日志 WAL&#xff0c;并可选地重置pg_c…...

彻底关闭Windows更新

一、关闭Windows Update服务 1、按“Windows R”键&#xff0c;打开运行对话框&#xff0c;并输入“services.msc”&#xff0c;然后再单击“确定”。 2、在弹出的服务窗口中&#xff0c;找到“Windows Update”选项并双击打开它。 3、在弹出的“Windows Update的属性”对话框…...

Java正则表达式语法

Java正则表达式的语法与示例 | |目录 1匹配验证-验证Email是否正确 2在字符串中查询字符或者字符串 3常用正则表达式 4正则表达式语法 1匹配验证-验证Email是否正确 public static void main(String[] args) { // 要验证的字符串 String str "servicexsoftlab.net&q…...

【2023-3-29】JavaScript使用promise顺序调用函数并抛出异常

JavaScript使用promise顺序调用函数并抛出异常 场景 新建或者编辑时&#xff0c;一个页面中存在多个表单&#xff0c;每个表单都有单独进行表单验证。点击提交时&#xff0c;若有一个表单校验失败&#xff0c;则不能提交。 ps&#xff1a;为啥不放在一个表单中&#xff1f; (…...

Python实现GWO智能灰狼优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能…...

从redis到epoll到mmap

redis为什么这么快&#xff1f; 比较容易答出的答案 1)纯粹的内存操作 2)单线程操作,不用考虑线程切换 其他优势 3)I/O 多路复用,使用epoll 4)Reactor 设计模式 I/O 多路复用有三种 select、poll、epoll select&#xff1a;使用数组存储轮询 poll&#xff1a;使用链表轮询 epo…...

STM32CubeMX快速构造工程模板(一)

STM32CubeMX作为一个免费开源的软件,能够可视化配置STM32或其他产品硬件资源,能过快速地构造工程模板,很是方便!!! 目录 STM32CubeMX快速构造工程模板 首先第一步,打开软件-点击按钮-输入型号-双击打开。...

Java Web中的ServletContext对象

目录 ServletContext对象 获取上下文初始化参数的相关方法 创建ServletContext对象 1&#xff09;通过 GenericServlet 提供的 getServletContext() 方法 2&#xff09;通过 ServletConfig 提供的 getServletContext() 方法 3&#xff09;通过 HttpSession 提供的 getServletCo…...

回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测

回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测 目录回归预测 | MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现PSO-RF粒子群算法优化随机森林多输入单输出回归预测 粒子…...

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年&#xff0c;从早到晚&#xff0c;加班到深夜&#xff0c;一年又一年&#xff0c;直至刚入职场的首个黄金三年过年都去了&#xff0c;而职位却仍在原地踏步。尽管感觉自己努力过&#xff0c;但是实际上&#xff0c;自身的能力从没得到过多少提升。 所以在无数个夜晚…...

基于 OpenCV 与 Java 两个语言版本实现获取某一图片特定区域的颜色对比度

本文目录一、什么是对比度二、什么是颜色直方图三、如何通过RGB计算颜色对比度什么是HSV、Lab颜色空间四、OpenCV代码五、Java代码5.1 平滑处理5.2 完整代码一、什么是对比度 对比度是指图像中不同区域之间的明暗差异程度&#xff0c;它是图像质量中的重要指标之一。除了颜色对…...

Book:实战Java高并发程序设计(第二版)

实战Java高并发程序设计&#xff08;第二版&#xff09;为什么会有并行计算&#xff1f;并行计算需要回答的问题基本概念并发级别有哪些&#xff1f;Amdahl定律和Gustafson定律Java并发三特性进程和线程线程的生命周期Thread类run()与start()的区别为什么会有并行计算&#xff…...

LeetCode 831. Masking Personal Information【字符串,正则表达式】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

递增三元组

[蓝桥杯 2018 省 B] 递增三元组 题目描述 给定三个整数数组 A[A1,A2,⋯,AN]A [A_1, A_2,\cdots, A_N]A[A1​,A2​,⋯,AN​]&#xff0c;B[B1,B2,⋯,BN]B [B_1, B_2,\cdots, B_N]B[B1​,B2​,⋯,BN​]&#xff0c;C[C1,C2,⋯,CN]C [C_1, C_2,\cdots,C_N]C[C1​,C2​,⋯,CN​…...

java源码阅读 - TreeSet

往期文章 用最简单的话讲最明白的红黑树java源码阅读 - HashMap数据结构 - 堆与堆排序 文章目录往期文章一、介绍二、类的声明三、成员变量四、构造函数五、常用方法1. NavigableSet接口的实现2. SortedSet接口的实现六、总结一、介绍 在上期文章中&#xff0c;我们从源码层面…...

写毕业论文经验贴

首先说一句不要靠近word&#xff0c;会变得不幸。最好用latex写&#xff0c;不过我当时懒得下载latex了&#xff0c;于是后期改格式花了点时间 写论文之前 事先把所有的论文都查好并且整理好&#xff0c;论文第一、二章写起来就会很快&#xff1b; 把实验做顺溜&#xff0c;实…...

2.7 进程退出、孤儿进程、僵尸进程+2.8 wait函数+2.9 waitpid函数

1.进程退出 子进程退出时&#xff1a;父进程帮助子进程回收内核区的资源 exit.c /*#include <stdlib.h>void exit(int status);#include <unistd.h>void _exit(int status);status参数&#xff1a;是进程退出时的一个状态信息。父进程回收子进程资源的时候可以获取…...

【新2023Q2模拟题JAVA】华为OD机试 - 预订酒店

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:预订酒店 题目 放暑假了,橡…...

一个完整的渗透学习路线是怎样的?如何成为安全渗透工程师?

前言 1/我是如何学习黑客和渗透&#xff1f; 我是如何学习黑客和渗透测试的&#xff0c;在这里&#xff0c;我就把我的学习路线写一下&#xff0c;让新手和小白们不再迷茫&#xff0c;少走弯路&#xff0c;拒绝时间上的浪费&#xff01; 2/学习常见渗透工具的使用 注意&…...

刷完这60个标准库模块,成为Python骨灰级玩家

python强大&#xff0c;主要是因为包多&#xff0c;且不说第三方包&#xff0c;单是标准库就已让人望而生畏。 如果从第一篇整理标准库的博客算起&#xff0c;如今已有三个年头。在整理标准库的过程中&#xff0c;查阅了大量资料和官方文档&#xff0c;很多中文资料都有一个共…...

EasyExcel的简单使用(easyExcel和poi)

EasyExcel的简单使用 前言 Excel读 1.实体类 2.读监听器与测试类 3.输出结果 Excel写 1.实体类 2.写入Excel的测试类 3.输出结果 填充Excel 1.Excel模板 2.测试类 3.输出结果 前言 EasyExcel类是一套基于Java的开源Excel解析工具类&#xff0c;相较于传统的框架如Apache poi、…...

命名空间 namespace

一、命名空间的定义 定义命名空间&#xff0c;使用namespace关键字&#xff0c;后面跟命名空间的名字&#xff0c;然后接一对花括号{ } 即可&#xff0c;{ }中即为命名空间的成员。 1.一般定义 namespace test {int a 10;int b 100;int ADD(int x, int y){return x y;} }…...

我能“C”——初阶指针(上)

目录 1.什么是指针&#xff1f; 2. 指针和指针类型 3.野指针 3.1野指针的成因 3.2 如何规避野指针 1.什么是指针&#xff1f; 指针理解的2个要点&#xff1a; 1. 指针是内存中一个最小单元的编号&#xff0c;也就是地址 2. 平时口语中说的指针&#xff0c;通常指的是指针…...

Android高级工程师工资为何让人艳羡不已

很多人都想有一个月入过万的梦想&#xff0c;为了实现这个梦想&#xff0c;很多人都付出了一定的努力&#xff0c;但除了付出&#xff0c;选择一个好的行业的也是非常重要的&#xff0c;就眼下而言&#xff0c;最为多金的职业莫过于Android高级工程师&#xff0c;为什么Android…...

什么猫猫最受欢迎?Python采集猫咪交易数据

前言 在日常生活中&#xff0c;我们看到可爱的猫咪表情包&#xff0c;总是会忍不住收藏 认识的一些朋友也养了猫&#xff0c;比如橘猫、英短、加菲猫之类的 看他们发朋友圈撸猫&#xff0c;老羡慕了&#xff0c;猫咪真的太可爱啦。 你是不是也动过养猫猫的小心思呢~反正我是动…...