汇编数据串操作和修改标志位指令处理机控制指令

news2025/1/24 17:47:03

目录

不使用数据串操作

数据串指令

数据串操作指令注意:

MOVS数据串传送指令 (重点掌握)

REP重复指令(补充)

LODS取数据串(只有源)

 STOS存入串(只有目标)

CMPS串比较

 可以加重复前缀REPZ/REPE 和REPNZ/REPNE

 SCAS 串搜索(串扫描)

补充指令直接影响标志位

DF标志位

CLD指令

STD指令

IF标志位

CLI指令

STI指令

CF标志位

CLC  指令

STC指令

CMC指令


不使用数据串操作

串操作引入,不适用串操作完成复制需要借助寄存器

 

MOV SI,OFFSET STR1
MOV DI,OFFSET STR2
MOV CX,5
NEXT1:
MOV AL,[SI];需要使用4条指令才可以完成
MOV [DI],AL
INC SI
INC DI
LOOP NEXT1

数据串指令

需要掌握源在哪里,目标在哪里。知道会自动修改,知道方向标志位DF 的影响

数据串操作指令注意:

源串必须在数据段DS当中,必须是用SI作为地址指针

目标段必须定义在附加段ES,使用DI作为地址指针

MOVS数据串传送指令 (重点掌握)

(move string)

MOVSB/W(字节/字)

从内存直接传入内存,就不需要CPU了

也就是刚才的四句话直接换成 MOVSB 就行了

自动修改SI和DI的指针,指针的方向有DF决定是加还是减也就是程序中就不需要

DATA SEGMENT
STR1 DB 'ABCDE'
DATA ENDS 
EXTRA SEGMENT
STR2 DB 5 DUP(?)
EXTRA SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EXTRA
START:
     MOV AX,DATA
     MOV DS,AX
     MOV AX,EXTRA
     MOV ES,AX
     ;开始写程序
     MOV SI,OFFSET STR1
     MOV DI,OFFSET STR2
     MOV CX,5
     CLD;指针方向自增
NEXT1:
     MOVSB;自动修改SI和DI
     LOOP NEXT1
EXIT:
     MOV AH,4CH
     INT 21H
CODE ENDS
END START

可见数据串操作指令注意事项很多

但MOVSB指令并补不能自己循环,所以需要配合LOOP指令

如果你不想用loop指令,也可以用重复指令REP

REP重复指令(补充)

 

也可以自动修改CX,如果CX不为零,会继续执行REP后面的指令。这样就省去的LOOP指令

REP MOVSB 

例题:

将1000H:000H开始的100H个数据顺序下移一个位置。

 

这时候方向标志位就要反着来,如果正方向移动数据就都丢了

MOV  SI,00FFH
MOV DI,0100H
MOV CX,0100H
STD;指针自减
REP MOVSB

LODS取数据串(只有源)

(load string)

 因为它只能往AL中取,取完就要立即进行操作,要不你取下一个

就把上次取的覆盖了,所以不和重复指令REP联用。字节取到AL,字取到AX

 STOS存入串(只有目标)

(store string)

用于初始化

 

 

CMPS串比较

(compare string)

一旦遇到不一样的就会退出

 可以加重复前缀REPZ/REPE 和REPNZ/REPNE

REPZ   CX不等于0,ZF=1执行  

REPNZ   CX不等于0,ZF=0执行

跟前面学的跳转指令差不多,有N就是0有效,没N就是1有效

 

 SCAS 串搜索(串扫描)

(scan string)

在一个数据串(附加段)中,搜索寄存器中的值。找到一样的就退出

 

补充指令直接影响标志位

DF标志位

CLD指令 

(clear  direction)

让DF=0  (地址是加的不是减) 

STD指令

(set  direction)

让DF=1 (地址是减量的)

IF标志位

CLI指令

(clear  interrupt)

IF=0  关中断状态

STI指令

(set  interrupt)

IF=0  开中断状态

CF标志位

CLC  指令

(clear  carry)

CF=0

STC指令

(set  carry)

CF=1

CMC指令

(carry  make   change)

CF=CF取反

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式之责任链模式

Chain of responsibility 责任链模式的概念、责任链模式的结构、责任链模式的优缺点、责任链模式的使用场景、责任链模式的实现示例、责任链模式的源码分析 1、责任链模式的概念 责任链模式,即把请求从链中的一个对象传到下一个对象,知道请求被响应为止…

多数据源事务处理-涉及分布式事务

一. 数据源跨库但是不跨 MySql 实例 这个形式就是数据源在同一个 MySQL 下,但是 jdbc-url 上的数据库配置不同,涉及多个数据库时,如果方法中发生异常,只有开启事务的数据源会发生回滚,其他数据源不会回滚。看到这里可…

禅道 删除回收站

回收站的内容只能进入数据库删 如何访问数据库 1、网页登录数据库 禅道数据库管理用的是adminer,但是为了安全,访问adminer的时候需要身份验证,需要运行/opt/zbox/auth/adduser.sh来添加用户(先 cd /opt/zbox/auth/ 然后执行 ./adduser.sh…

线程和进程 / 进程和线程的区别和联系

💖 欢迎来阅读子豪的博客(JavaEE篇 🤴) 👉 有什么宝贵的意见或建议可以在留言区留言 💻 欢迎 素质三连 点赞关注 收藏 🧑‍🚀码云仓库:补集王子的代码仓库 不要偷走我小…

飞宇医药冲刺创业板:年营收4.56亿 拟募资4.38亿

雷递网 雷建平 12月20日江苏飞宇医药科技股份有限公司(简称:“飞宇医药”)日前递交招股书,准备在深交所创业板上市。飞宇医药计划募资4.38亿元,其中,1.79亿元用于年产6000吨侧链及6,000吨酰氯扩产项目&…

QT Qmake笔记

文章目录概述QT修改样式qmake概述pro文件常见配置项库引用和库路径指定QT创建动态库和使用(重要)小例子写动态库用动态库参考资料附录概述 本文记录一些学习QT过程中的笔记。 QT修改样式 styleSheet: background-image:url("/home/o…

大学生转行,毕业一年半,她是如何从工地走向互联网的?

如果专业与工作不匹配?如果觉得现有工作不适合自己?如果想转行?可以看一下她的成长故事。 领英18年数据显示,职场人第一份工作在职时间显著缩短,70后平均超过4年换一次工作,80后是3年半,90后是…

Bitmap64为什么比bitmap32慢

https://www.bilibili.com/video/BV1vU4y1q7KR/?spm_id_from333.788&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf 原因跟 RoaringBitmap64 的实现有关,RoaringBitmap64 是由一系列 RoaringBitmap32 表示。实现方式有很多种,一种比较通用的做法用 ma…

【MyBatis】MyBatis Plus的使用

1.Mybatis-Plus 1.1 简介 MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。 官网文档地址:   https://mp.baomidou.com/guide/ MyBatis-Plus 特性:  …

非科班出身转行IT难吗?好找工作吗?

大家都知道,IT行业是出了名的高薪行业,很多传统行业/专业的小伙伴由于薪资低、就业机会少而有了想转行IT的想法。 他们通常有以下几个问题: 非计算机专业0基础能学会技术吗?非计算机专业如何转行到IT行业?非计算机专…

记录--可视化大屏-用threejs撸一个3d中国地图

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 不想看繁琐步骤的,可以直接去github下载项目,如果可以顺便来个star哈哈 本项目使用vue-cli创建,但不影响使用,主要绘制都已封装成类 1、使用geoJson绘制…

Java并发系列源码分析(四)--StampedLock

简介 ReentrantReadWriteLock是一个悲观的可重入的读写锁,而StampedLock既支持悲观锁也支持乐观锁但不支持锁的重入, 在ReentrantReadWriteLock下如果多个线程同时获取读锁的时候,获取写锁的线程就会被挂起进行等待,在StampedLock乐观锁下如果有线程加了写锁,其它读线程可以获…

英语不好能不能学好python?试试我的方法就知道了

这是本文的目录前言一、交互环境与print输出(python编程常用单词)二、字符串操作(python编程常用单词)三、重复\替换\转换\原始字符串(python编程常用单词)四、去除\查询\计数(python编程常用单…

JavaWeb之Servelt学习01

目录 1.Servlet 1.1快速入门 1.2Servlet 执行原理 1.3Servlet执行方法 1.3.1Servlet中的生命周期方法 1.4注解配置 1.5.Servlet体系结构 1.6Servlet相关配置 1.Servlet 概念:运行在服务端的小程序 Servlet就是一个接口,定义了java类被浏览器访问到…

高速高精度半导体运动台设计(二)

高速高精运动平台的性能不仅与运动控制器、伺服驱动相关,也与电机本身的性能密切相关。如图 5-2 所示的运动平台采用了雅科贝思的直线电机,直接驱动负载,刚性高,响应快,同时选用了高性能多轴运动控制卡和 GTHD 系列高性…

【Java 数据结构】树和二叉树

篮球哥温馨提示:编程的同时不要忘记锻炼哦!一棵倒立过来的树. 目录 1、什么是树? 1.1 简单认识树 1.2 树的概念 1.3 树的表示形式 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树性质相关习题 3、实…

uniapp 多商品sku组件v3版本

如果您正在寻找一款v3版本的多商品sku组件的话,那我想这款组件刚好可以满足各位。 先来简单看一眼效果图: 看起来是不是还不错,如果我告诉你还可以设置主题色会不会显得更加惊艳些,只需要按照数组格式将rgb的颜色传递给组件,…

智慧医疗中人工智能的7大应用|数据标注

从药物研发到预测肾脏疾病,人工智能在智慧医疗领域应用广泛。 人工智能在许多医学领域和专业中的应用正在成为现实。人工智能、机器学习、自然语言处理和深度学习使智慧医疗利益相关者和医疗专业人员能够更快、更准确地明确智慧医疗需求和解决方案,并依…

【WPF绑定2】 ComboBox SelectedValue复杂数据类型绑定

前言 这次绑定是一次非常痛苦的经历,因为SelectedValue总是不能生效!我一度怀疑是wpf的Bug。其实还是自己没搞清楚。 在之前的一篇文章中: http://t.csdn.cn/A4W6Ahttp://t.csdn.cn/A4W6A我也写个ComboBox的绑定,但是当时没有指…

css实现两列/三列布局

文章目录css实现两列/三列布局两列布局三列布局css实现两列/三列布局 两列布局 第一种方式&#xff1a;浮动实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…