当前课程知识点:微机原理与接口技术 > 第6周 串操作指令 > 第24讲 串装入与串存储指令 > 串装入与串存储指令
串操作指令的第四条我们称为串装入
这条指令的助记符叫LODS
它也是一条单操作数格式的指令
这里的这个操作数是源操作数
也就说它的指针必须是SI
一般情况下或者默认情况下
它是在数据段的
如果采用默认
我们同样也使用下边这两种格式
这条指令的操作是这样
将数据段中
SI所指向单元的内容送给AL
或者是
在数据段中
SI所指向的自单元的内容送给AX
串装入是传送类操作的指令
它是将内存某个区域的数据串
依次装入累加器
目的是什么呢? 目的是为了显示输出
或者通过I/O接口输出
因为它一个一个的往累加器里装
如果我们加前缀的话
那么也就说它会连续的装入
那么后边装入的就把前面的覆盖
因此这条指令前面我们一般不加重复前缀
因为这条指令和MOVS指令
执行着几乎完全一样的操作
无非是它的目标不再是一串区域
而是一个累加器而已
因此这条指令我们就不再过多的去解释了
第五条串操作指令
称为串存储 也叫串送存
这条指令也是传送类操作的指令
这里显示给出的操作对象是目标操作数
当然我们也可以用
这样两种格式 这条指令的操作
是这样
如果是按字节操作的话
它是将AL的内容
依次装入到附加段一片区域中去
如果是按字操作的话
那么它就是将AX的内容依次装入到附加段
一块区域中
这条指令在程序中经常用来将
内存的某个区域
置成同样的值
作为传送类指令 它的前面
只能加无条件重复前缀
这个时候会将要送存的数据
放入AL或者是AX中
然后确定操作方向
和区域的大小 也就是串的长度值
然后呢使用串存储指令
再加上无条件重复前缀
就可以实现将一串区域中置成同样的值了
好 串操作指令我们就介绍完了
下边我们来对串操作指令做一个简单的小结
首先
在有串操作指令的程序中
我们未来必须要定义附加段
原因就是
串操作指令规定
它的目标串必须在附加段里头
具体如何定义附加段
我们在第四章学习的时候会介绍给大家
另外呢 请大家注意
我们串操作指令因为一条指令就
在加前缀的情况下
就是一个循环结构
因此我们需要设定串的操作方向
我们可以通过设置DF的状态
来决定数据串的操作方向
另外串操作指令规定源串的指针
必须由SI来给出
目标串的指针必须由DI来给出
而且串的长度值必须是由CX来给出的
这些都是没有道理的
这些就是一些具体的规定
所以大家学习的时候必须要去记住
作为一个非常特殊的
就说唯一可以加前缀的这种指令呢
请大家在使用串操作指令的时候
一定要注意合理的使用重复前缀
除了串装入指令以外
其他的串操作指令在使用的时候
我们都建议大家使用前缀
因为这样子的话可以简化程序的编写
但是前缀请大家注意这几点
就说 无条件重复前缀只能加在
传送类的指令的前面
也就说只能加在串传送和串送存指令的前边
而条件重复前缀
可以加在
串比较和串扫描指令的前边
具体是加相等则重复还是不相等则重复的前缀
那要根据具体的情况来确定
但是有一点要注意
就说前缀虽然完成了修改CX的值
这样的一个工作 但是即使CX为零
它也不会影响ZF的状态
在条件重复前缀后边
对于这种串比较或串扫描指令
它们最后ZF的状态
完全取决于
指令本身执行的结果
这一点是希望大家务必注意的
也就说回顾我们前面讲串比较指令
所举的那个例子
当你完成一次串比较
这条指令
退出这条指令的执行
也就是这条指令执行完
能够执行到下一行指令
它的条件有两个
一个就是
CX为零了
或者是
ZF的状态不满足重复的条件了
那么到底是哪一种情况?
使得这种串比较指令结束执行
或者串扫描指令结束执行
这个直接影响着我们最后的判断
也就是像我们前面讲串比较指令举得那个
200个字节数去比较的那样一个例子里头
就说如果是因为CX为零
来结束这条串比较指令的话
那么就意味着我们两个串是完全一样的
就是说明我们可能
刚才在这之前的数据传送是正确的
那么如果不是因为CX为零
而是因为ZF等于1而退出这个
而是因为ZF等于零
退出这个CMPS的执行
那么就意味着两个数据串是不相等的
所以这个非常重要
到底是因为哪一个因素呢?
我们在那个例子里
我们曾经说到用条件转移指令就是
JZ指令 就说去判断ZF的状态这条指令
来看一下到底是什么因素
所以在这个程序里头 大家千万要注意
在CMPS指令的后边不能再随便的去跟一条
类似于TEST或者ADD这种
影响ZF状态的指令
而是要直接去判断当前ZF的状态
这一点是很重要的
这个在我们前面那个
这一点是很重要的
好 有关串操作指令呢我们就介绍到这里
希望大家通过实际的编程
能够去理解这一类指令
这一类指令
本身它的这个看上去
原理并不复杂
因为它做的就是传送和比较
但是它因为
一条指令就对应着一个循环体
所以在
有时候大家在理解起来 它的底层原理上
可能会造成一些 错误
可能会造成一些错误
还有一点需要注意的是什么呢? 就说
我们前面的那个
控制流程里头
大家一定要去理解那个流程图
从那个流程图里 大家会有
那个流程图反映出来这么一个信息
就说每一次的串操作完成
不论是串传送完成还是串比较完成
不管是满足还是不满足
继续重复的条件
它都要先修改指针
然后再去修改串的长度值
然后再去判断是不是满足重复的条件
这一点非常重要
这就说我们
哪怕它两个串比较是不相等
我们应该不再继续了
但是不再继续了之后呢
它的指针实际上已经在
刚才操作的那个单元的下边
这个也是希望提醒大家注意的
这个我们在前面讲指令的时候
用例子已经跟大家解释了
所以在这里就是再次提醒大家
学习的时候关注这一点
好 有关串操作指令我们就介绍到这里
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语