Pentium的指令系统(4)——串操作指令
通过加重复前缀,串操作指令可以实现对一串数据的操作。一条带重复前缀的串操作指令的执行过程往往相当于执行一个循环程序。在每次重复之后,都会自动修改地址指针ESI和EDI,如果在执行串操作指令的过程中,有一个外部中断进入,那么,在完成中断处理以后,将返回去执行串操作指令。
字符串传送指令MOVSB/MOVSW/MOVSD
字符串传送指令是唯一的源操作数和目的操作数都在存储器中的传送指令。
MOVSB/MOVSW/MOVSD指令将位于DS段由ESI(SI)所指的存储单元开始的字节、字或双字传送到位于ES段由EDI(DI)所指的存储单元开始的区域,再修改ESI和EDI,从而指向下一个元素。MOVSB用于传送字节,MOVSW用于传送字,MOVSD用于传送双字。
MOVSB/MOVSW/MOVSD指令前通常加重复前缀REP,以便实现字节串、字串和双字串的传输。
作用:
1.源地址为DS:1000H
2.目的地址为ES;2000H
3.字符串长100字节
4.方向标志清0,使地址指针按增量方向修改
5.将源地址开始的100个字节传送到目的地址
注意:
1.源地址默认用ESI寄存器指出,目的地址默认用EDI指出,并默认源地址在DS段,目的地址在ES段
2.CX或ECX寄存器中事先存放好要传送的字节数、字数或双字数。但到底对应的是字节、字还是双字,决定于指令形式
3.如果用CLD指令将方向标志清0,则用MOVSB指令时,每传送一次,地址指针ESI和EDI自动增1,用MOVSW指令时,每传送一次,地址指针ESI和EDI自动增2。反过来,如果用STD指令将方向标志DF置1,则每次传送以后,地址指针自动减1,2,4。对带REP重复前缀的串传送指令来说,每传送一次,CX中的数值总是减1。
字符串比较指令CMPSB/CMPSW/CMPSD
字符串比较指令把DS段由ESI所指的字节、字或双字和ES段由EDI所指的字节、字或双字比较,,并在比较之后自动修改地址指针,通过重复前缀的控制,课实现在两个字符串中寻找第一个不相等的元素或第一个相等的元素。
作用:
3.清方向标志
4.计数器为4
5.如比较结果相等,则继续比较下一个字节,此时DI和SI分别加1,CX减1
6.如4个字节都符合,则说明已经设好加电标志
7.否则返回
注意:
1.要预先将源字符串的首地址设置到ESI寄存器中,目的字符串的首地址设置到EDI寄存器中,比较的字节数、字数或双字数设置到ECX中,并且要设置方向标志以决定地址指针的修改是增量方向还是减量方向
2.DF=0,指针加
3.CMPSB/SMPSW/CMPSD指令的前缀可有REPNZ/REPNE或REPZ/REPE,前一组表示两字符串不等时继续比较,后一组表示两字符串相等时进行比较,REPNZ和REPNE功能一样
字符串检索指令SCASB/SCASW/SCASD
使用字符串检索指令时,将AL中的字节、AX中的字或EAX中的双字与位于ES段由EDI寄存器所指地址开始的字节、字或双字比较。通过前缀,可实现在EDI所指的字符串中,寻找第一个与AL中的内容不同的字节,或寻找第一个与AL中的内容相同的字节。
作用:
1.目的字符串首地址送到DI
2.方向标志清零
3.字符串中共有4个字节
4.保存字节数
5.比较结果不等,则继续往下比较
6.AL中值和字符串中所有字节都不等,则转AAAA
7、8.AL中的值与字符串中的某个字节相等,则算出是第几个字节(相等就停止比较,故要多减1)
9.DI中为字符序号
10.使对应的计数单元加1
注意:
1.目的字符串默认在ES段中,字符串首地址必须用EDI或DI指出
2.根据检测ZF来判断是否检测到字符串中的字节与AL中的字节相等
取字符串指令LODSB/LODSW/LODSD
将位于DS段由ESI所指的存储单元的内容取到AL、AX或EAX中。地址方向取决于DF。
注意:
1.不可加前缀,否则AL中的内容会被后一次的数据覆盖
存字符串指令STOSB/STOSW/STOSD
把AL、AX或EAX中的数据存到ES段由EDI或DI寄存器所指单元,并且自动修改地址指针,加上前缀REP以后可使一串内存单元中填满相同的数
作用:
1.清除方向标志
2.将目的地址0404H送DI
3.共有128个字
4.AX清0
5.将256个字节清0
Pentium的指令系统(4)——串操作指令相关推荐
- 8086CPU指令系统 串操作指令和处理机控制指令
串操作指令和处理机控制指令小节 串操作指令 1,常见的串操作指令 处理机控制指令 1,标志位操作指令 2,同步控制指令 3,暂停及空操作指令 前言:公号 「编程有料」后台回复 "大礼包&qu ...
- 汇编中的串操作指令(MOVS,CMPS,SCAS,LODS,STOS)
学汇编的都知道,汇编中很多问题都是对字符串进行的操作,但是我们操作时总是重复相同的操作,用多个指针进行记录,不断判断只针对位置,这样确实很麻烦,于是汇编提供了一种对字符串进行操作的指令, ...
- 串操作指令应用(MOVS/CMPS/SCAS/LODS/STOS)
串操作指令(MOVS/CMPS/SCAS/LODS/STOS)的使用: 1.串传送指令 使用 上述三种格式的串传送指令在执行前都需要预先设置地址指针DS:SI和ES:DI,设置传送方向,如果要重复执行 ...
- 【微机原理与接口 7】—— 常用指令分析4 (串操作指令剖析)
文章目录 一.关于串操作的一些说明: 1.1 串操作指令执行的一般流程 二.正题--串操作指令 2.1 串传送指令 MOVS 2.2 串比较指令 CMPS 2.3 串扫描指令 2.4 串加载与串存储 ...
- 串操作指令详解 MOVS,LODS,STOS,CMPS,SCAS,REP
目录 串传送指令MOVS 串存储指令STOS 串读取指令LODS 串比较指令CMPS 串扫描指令SCAS 重复前缀指令REP 指令包括:MOVS,LODS,STOS,CMPS,SCAS,REP 串的概 ...
- 汇编串操作指令std 和 cld
CLD与STD是用来操作方向标志位DF(Direction Flag).CLD使DF复位,即DF=0,STD使DF置位,即DF=1.用于串操作指令中. 例如: MOVS ( MOVe String) ...
- 串操作指令及其应用程序的设计与调试运行——汇编实验四 用8086汇编完成下题 编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。要求在屏幕上以右边对齐的形式显示出
文章目录 实验目的和内容 实验要求和步骤 实现右对齐 以下为源码: 方法一 方法二 方法三 测试一--字符串的输入输出 测试二--改进 测试三--改进 测试四--改进 实验目的和内容 实验要求和步骤 ...
- 汇编中的字符串操作指令
每一种语言都有一些字符串操作函数,反汇编后的代码也不例外.网上讲的都比较零碎,我将它们收集起来,并配上自己的理解,形成本文. 一.字节操作指令:lodsb和stosb 1. lodsd需要寄存器esi ...
- 汇编语言--微机CPU的指令系统(五)(字符串操作指令)
(11)字符串操作指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的.字符串操作指令可对内存单元按字节.字或双字进行处理,并能根据操作对象的 ...
最新文章
- 手动建库11.2.0.4
- ListActivity的onListItemClick不响应的解决办法
- VB.NET模块的总结(一)精简版
- MySQL中的Text类型
- MySQL查询指定字段
- linux动态链接库
- 电子商务系统的设计与实现(九):后端管理系统功能细化
- 程序员面试金典 - 面试题 01.06. 字符串压缩(字符串)
- 到底什么培训适合你?
- 程序员面试题100题第28题——全排列
- php中padding,css中padding填充详解
- word无法验证服务器,windows10系统下office2010无法验证的解决方法
- 【运维小分享】整理Apache日志
- native react 图片裁剪_react native 头像上传 react-native-image-crop-picker
- ASP.NET中 CheckBox(复选框)的使用
- mysql flush操作
- 从维基百科到裴松之注三国志
- oracle直接生成xlsx,【玩转Excel】Oracle PLSQL处理生成XLSX文件
- 客户价值模型:RFM
- Apollo Planning决策规划算法代码详细解析 (14):SPEED_BOUNDS_PRIORI_DECIDER
热门文章
- oracle创建视图类型为日期,oracle创建视图包含clob字段,报错:数据类型不一致:应为-,但却获得CLOB...
- android 获取cpu型号_当贝投影带你认识投影仪CPU芯片有哪些?网友:真详细
- IDEA太慢,喵喵要气死了
- python pandas借助pandas-profiling自动生成EDA
- 解决pip无法安装bayes-opt报错:ERROR: Could not find a version that satisfies the requirement bayes-opt
- nginx作用_云服务器:详解Nginx启用proxy_buffer缓冲
- php网页如何做出透明的效果,css+filter实现简单的图片透明效果
- Spring + RocketMQ使用
- 48.孩子们的游戏(圆圈中最后剩下的数)
- nginx 反向代理之 proxy_redirect