当前课程知识点:微机原理与接口技术 >  第6周 串操作指令 >  第23讲 串扫描指令 >  串扫描指令

返回《微机原理与接口技术》慕课在线视频课程列表

串扫描指令在线视频

串扫描指令

下一节:串装入与串存储指令

返回《微机原理与接口技术》慕课在线视频列表

串扫描指令课程教案、知识点、字幕

串扫描指令

经常用来在指定的存储区域中
寻找某个关键字

它所执行的操作

和串比较指令非常的类似

只不过这个时候
它不是在做两个数据串的比较

而是用累加器的里面的值

去在一串数据中去查找

有没有和累加器中内容相等的那个关键字

所以在格式上

串扫描指令是一个单操作数格式的指令

这里显示给出的这个对象是目标操作数

因为串操作指令

规定了目标操作数

必须在附加段 指针必须是DI

因此这种格式我们一般也不会使用

而更多的会采用下边两种格式

就是按字节扫描或者按字扫描

这条指令的操作

刚才我们说和CMPS指令非常的相似

它的唯一的区别就是在这里
它的源操作数

是AX或者AL

也就说如果是按字节去扫描的话

它的源操作数就是AL

而如果按字扫描的话 源操作数就是AX

换句话讲 这一条指令

它的操作过程

就是用AL的值或者AX的值

依次与附加段中

每一个字节单元或者每两个字节单元

去做相减的运算

但是相减的结果

不写回目标

也就说相减完了以后结果是不要了

但是通过标志位的状态来判断

AL或者AX的值

与它所比较的对象是不是一致

我们下边来看一个例

在附加段中从2000H单元开始存放了
10个字符

要求寻找其中有没有大写字母A

如果有则记下搜索次数

并且将搜索次数写入到DATA1单元

然后将存放大写字母A的地址

写入到DATA2单元

好 这几条指令就是完成串操作指令
的初始化过程

首先我们把偏移地址送给DI

这个是将这个偏移地址做一个备份放到BX

为什么要做这个我们后边再来解释

因为有10个字符 所以我们把这个10送给CX

当然你这里写0AH 写10都是可以的

我们要搜索的关键字是大写字母A

我们把它送给AL

好了

当然我们还要设定操作方向

假设我们按增地址方向操作

所以我们将DF清为零

那么下边我们就开始要进行扫描了

扫描的含义刚才我们已经说
是用累加器AL的值

在附加段中一个单元一个单元的去比

看哪个单元里头的值会和AL的值相等

那么

言下之意就说在附加段这个区域中

可能在多数情况下

单元里的内容都跟AL值不相等

因此这个时候如果加

条件重复前缀的话

我们要加不相等则重复的前缀

也就说只要碰到不相等

那么就意味着没找着
那么就可以继续比较下去

因为

SCSB这条指令执行的是和CMPSB
几乎一样的工作

所以呢

它结束这条指令的执行也有两种可能

一种就是CX等于零

还有一种就是CX不等于零

但是ZF等于1了

就说碰到了相等

那么同样的我们下边也就是需要通过ZF
去判断ZF的状态

来判断到底是因为哪一种原因

这一点跟刚下那个例子是一样的

所以 如果ZF等于1

就意味着在这个区域中找到了大写字母A

假设大写字母A在这个位置

按照我们刚才串操作指令的控制流程

我们可以知道

即使找着了这个大写字母A

那么这个时候SCSB这条指令
也不能够立刻停下来

而是要使得指针加1

然后再将CX减1

然后再去判断到底还满足不满足
继续重复的条件

因为这个时候它前面加的是

不相等则重复的前缀

所以如果ZF等于1的话

那么它就不管CX等于零还是不等于零
它都不会

再重复下去了

因此它就会退出这条指令的执行了

那么这个时候

指针会是现在红色箭头所指向的位置

也就是说我们大写字母A所在的这个地址

加1的这个位置上

那么按照题目的要求 我们要去确定

存放大写字母A的地址

因此我们现在需要把这个

地址减1

这才是刚才存放大写字母A的地方

所以下边把这个减1之后呢

这个就是地址写到了DATA2里头

然后呢 再加1

回到这个位置

回到再加1

回到存放大写字母A这个单元的

下一个单元

用它去减去BX

这就相当于得到了搜索次数

把搜索次数送给DATA1

好了 这程序就结束了

那么如果没有找到A 就说刚才执行完以后

ZF等于零

一直都是ZF等于零

但是呢 因为CX等于零的时候

我们就不会再去扫描了

所以那么它就不会转向了FOUND

那么就指向了下边

这个是串扫描指令

它的一个应用

总而言之串扫描

和串比较指令执行着几乎完全一样的操作

唯一的区别就是串比较指令

是实现了源串和目标串之间的比较

而串扫描指令呢

它的源串不是一个串 而是一个操作数

也就说它的源串是累加器AL或者AX

微机原理与接口技术课程列表:

第1周 微型计算机基础概论

-第1讲 关于本课程

--关于本课程

-第2讲 微型计算机系统

--微机系统_01

--微机系统_02

-第3讲 微型计算机一般工作过程

--微机的一般工作过程_01

--微机的一般工作过程_02

-第4讲 数制与编码

--常用计数制及其转换

--计算机中的编码

-第5讲 计算机中数的表示与运算

--数的表示

--符号数的表示

--数的表示与运算

-第6讲 基本逻辑运算与逻辑电路

--基本逻辑运算与逻辑门

--常用逻辑运算及电路

-第7讲 本周小结

--本周小结

-第1周 微型计算机基础概论--第一周单元测验

第2周 8088微处理器

-第8讲 8088微处理器

--8088 CPU_01

--8088 CPU_02

-第9讲 8088 CPU主要引线及机构

--8088 CPU主要引线

--8088 CPU内部结构

--8088 CPU内部寄存器

-第2周 8088微处理器--第二周单元测验

第3周 实模式存储器寻址与总线

-第10讲 实模式存储器寻址

--实模式存储器寻址_01

--实模式存储器寻址_02

--实模式存储器寻址_03

-第11讲 8088系统总线

--8088系统总线

-第12讲 微处理器小结

--微处理器小结

-单元测验--作业

第4周 数据传送指令

-第13讲 指令概述

--指令概述

-第14讲 寻址方式

--寻址方式

-第15讲 通用数据传送指令

--通用数据传送指令_01

--通用数据传送指令_02

--通用数据传送指令_03

-第16讲 地址传送指令

--地址传送指令

-第17讲 输入输出指令

--输入输出指令

-第4周 数据传送指令--第四周单元测验

第5周 算术运算、逻辑运算与移位操作指令

-第18讲 算术运算指令

--加法运算指令

--减法指令

--乘除运算指令

-第19讲 逻辑运算指令

--逻辑运算指令_01

--逻辑运算指令_02

-第20讲 移位操作指令

--移位操作指令

-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验

第6周 串操作指令

-第21讲 关于串操作指令的说明

--串操作指令说明

-第22讲 串传送与串比较

--串传送与串比较

-第23讲 串扫描指令

--串扫描指令

-第24讲 串装入与串存储指令

--串装入与串存储指令

-第六周单元测验--作业

第7周 程序与处理器控制

-第25讲 程序控制指令说明

--程序控制类指令说明

-第26讲 转移类指令

--无条件转移指令

--条件转移指令

-第27讲 循环控制指令

--循环控制指令

-第28讲 过程调用指令

--过程调用指令

-第29讲 中断指令

--中断指令

-第30讲 处理器控制指令

--处理器控制指令

-第31讲 指令系统小结

--指令系统小结

-第7周 程序与处理器控制--第七周单元测验

-第7周 程序与处理器控制--第七周作业

第8周 汇编语言程序设计

-第32讲 汇编语言源程序

-- 汇编语言源程序_01

-- 汇编语言源程序_02

-第33讲 伪指令

--数据定义伪指令

--符号与段定义伪指令

--汇编语言源程序结构例

--其它伪指令

-第34讲 系统功能调用

--系统功能调用_01

--系统功能调用_02

-第35讲 汇编语言程序设计示例详解

--程序设计示例1

--汇编语言程序设计示例_02

-第36讲 汇编语言程序设计小结

--汇编语言程序设计小结

-第8周 汇编语言程序设计--第八周单元测验

-第8周 汇编语言程序设计--第八周作业

第9周 半导体存储器

-第37讲 半导体存储器概述

--半导体存储器概述

-第38讲 内存单元编址

--存储单元编址

-第39讲 随机存取存储器RAM

-- RAM_01

--RAM_02

-第40讲 只读存储器ROM

--ROM_01

--ROM_02

-第九周单元测验--作业

第10周 半导体存储器扩展技术

-第41讲 半导体存储器扩展

--半导体存储器扩展_1

--存储器扩展_2

--半导体存储器扩展_3

-第42讲 半导体存储器小结

--半导体存储器小结

-第十周单元测验--作业

-第十周作业--作业

第11周 输入输出与中断技术

-第43讲 基本I/O接口

--I/O系统概述_01

--I/O系统概述_02

-第44讲 简单接口芯片

--简单接口芯片

-第45讲 基本输入输出方法

--基本I/O方法

-第46讲 简单I/O控制系统设计

--简单I/O控制系统设计1

--简单I/O控制系统设计2

-第47讲 中断技术

--中断技术1

--中断技术2

-第48讲 输入输出与中断技术小结

--本周小结

-第十一周单元测验--作业

第12周 可编程并行数字接口

-第49讲 可编程定时计数器

--可编程定时计数器8253_01

--可编程定时计数器8253_02

--可编程定时计数器8253_03

-第50讲 可编程并行接口

--可编程并接口8255_01

--可编程并行接口8255_02

--可编程并行接口8255_03

-第51讲 可编程接口小结

--本周小结_01

--本周小结_02

-第十二周单元测验

第13周 模拟量的输入输出

-第52讲 模拟量的输入输出

--模拟量的输入输出

-第53讲 D/A转换器

--D/A转换器_01

--D/A转换器_02

-第54讲 A/D转换器

-- A/D转换器_01

--A/D转换器_02

-第十三周单元测验--作业

第14周 系统综合设计示例详解

-第55讲 I/O接口系统综合设计示例详解I

--综合设计示例详解I_01

--综合设计示例详解I_02

-第56讲 综合设计示例详解II

--综合设计示例详解II_01

--综合设计示例详解II_02

-第57讲 结束语

--结束语

串扫描指令笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。