电气知识|串操作类指令

   更新日期:2017-03-26     来源:建材之家    作者:安防之家    浏览:50    评论:0    
核心提示:串操作指令 : 在 计算机中,大部分数据存放在主存中, 8086CPU 提供了一组处理主存中连续存放的数据串的指令 —— 串操作指令。串操作指令中,源操作数用寄存器 SI 寻址,默认在数据段 DS 中,但允许段超越;目的操作数用寄存器 DI 寻址,默认在附加段 ES 中,不允许段超越。每执行一次串操作指令,作为源地址指针的 SI 和作为目的地址指针的 DI 将自动修改: +/-1 (对于字节

电力检修|处理小电流接地故障的新思路

推荐简介:摘要:基于目前日趋完善的小电流接地选线技术和智能化的综合自动化系统及馈线自动化技术,提出全新的处理接地故障的新思路。阐述了利用馈线自动化技术隔离故障的过程,并表述了该新方法的实用意义。 中低压配电系统的中性点,一般采用不接地或经消弧线圈接地方式,称为小电流接地系统。该系统中发生单相接地故障时,尽管故障分量不大,但由于其他两相对地电压升为线电压,在没有消弧线圈的情况下,如果发......
安防之家讯:串操作指令 : 在 计算机中,大部分数据存放在主存中, 8086CPU 提供了一组处理主存中连续存放的数据串的指令 —— 串操作指令。串操作指令中,源操作数用寄存器 SI 寻址,默认在数据段 DS 中,但允许段超越;目的操作数用寄存器 DI 寻址,默认在附加段 ES 中,不允许段超越。每执行一次串操作指令,作为源地址指针的 SI 和作为目的地址指针的 DI 将自动修改: +/-1 (对于字节串)或 +/-2 (对于字串)。地址指针时增加还是减少取决于方向标志 DF 。在系统初始化后或者执行指令 CLD 指令后, DF=0, 此时地址指针增 1 或 2 ;在执行指令 STD 后, DF=1 ,此时地址指针减 1 或 2 。

数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程,这样就浪费了大量的时间和空间。为此 8086 提供了一组处理主存中连续存放数据串的指令,这就是串操作指令。



MOVS 串传送

CMPS 串比较

SCAS 串扫描

LODS 从串取

STOS 存入串

INS 串输入

OUTS 串输出



与上述基本指令配使用的前缀有:

REP 重复

REPE/REPZ 相等 / 为零则重复

REPNE/REPNZ 不相等 / 不为零则重复 1 .重复前缀指令 REP 、 REPZ 、 REPNZ

(1) REP :REP 前缀用在 MOVS 、 STOS 、 LODS 、 INS 和 OUTS 指令前。

格式: REP string primitive

其中 string primitive 可为 MOVS , LODS 等指令。

功能:

(1) 如果 (CX)=0 ,则退出 REP ,否则往下执行。

(2)(CX)=(CX) - 1

(3) 执行其后的串指令

(4) 重复 (1)-(3)

(2) REPZ/REPE: 该指令一般用在 CMPS 、 SCAS 指令前。

格式: REPE( 或 REPZ) string primitive

其中 string primitive 可为 CMPS 或 SCAS 指令。

功能:

(1) 如果 (CX)=0 或 ZF=0 时退出,否则往下执行。

(2)(CX)=(CX) - 1

(3) 执行其后的串指令

(4) 重复 (1)-(3)

与 REP 相比,除满足 (CX)=0 的条件可结束操作外,还增加了 ZF=0 的条件,也就是说,如果两数相等就可继续比较,如果遇到了两数不相等可提前结束操作。

(3) REPNZ/REPNE : 该指令一般用在 CMPS 、 SCAS 指令前。

格式: REPE( 或 REPZ) string primitive

其中 string primitive 可为 CMPS 或 SCAS 指令。

功能:

(1) 如果 (CX)=0 或 ZF=1 时退出,否则往下执行。

(2)(CX)=(CX) - 1

(3) 执行其后的串指令

(4) 重复 (1)-(3)

与 REP 相比,除满足 (CX)=0 的条件可结束操作外,还增加了 ZF=1 的条件,也就是说,如果两数不相等就可继续比较,如果遇到了两数相等可提前结束操作。

2传送指令 MOVS

语句格式:① MOVS DST , SRC

② MOVSB ——字节串传送

③ MOVSW ——字串传送

其中后两种明确注明是传送字节还是字 , 第一种格式则应在操作数中表明是字节还是字的操作 . 例如 :

MOVS ES:BYTE PTR[DI],DS:[SI]

功能:将以 SI 为指针的源串中的一个字节(或字)存储单元中的数据传送至以 DI 为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。

即:①( DS : [SI] )→ ES : [DI] 。

② 当 DF=0 时,( SI )和( DI )增量。

当 DF=1 时,( SI )和( DI )减量。

③当操作为字节操作时, (SI) 、 (DI) 增减量为 1 ,当操作为字操作时, (SI) 、 (DI) 增减量为 2 。

④当该指令与前缀 REP 联用时,则可将数据段中的整串数据传送到附加段中去,这里源串必须在数据段中,目的串必须在附加段中,但源串允许使用段跨越前缀来修改。在与 REP 联用时,还必须先把数据串的长度值送到计数寄存器中,以便控制指令结束。因此在执行该指令前,必做如下准备工作:

I. 把存放在数据段中的源串首地址 ( 如反向传送则应是末地址 ) 放入源变址寄存器中 ;

II. 把将要存放数据串的附加段中的目的串首址 ( 反向传送时为末地址 ) 放入目的变址寄存器 ;

Ⅲ . 把数据串长度放入计数寄存器 ;

Ⅳ . 建立方向标志。

例:在数据段中有一个字符串,其长度为 17 ,要求把它们转送到附加段中的一个缓冲区中。



data segment

mess1 db ‘personal computer$'

data ends

extra segment

mess2 db 17 dup(?)

extra ends

code segment

assume cs:code,ds:data,es:extra



mov ax,data

mov ds,ax

mov ax,extra

mov es,ax



lea si,mess1

lea di,mess2

mov cx,17

cld

rep movsb



code ends

3 .串比较指令 CMPS

语句格式:① CMPS SRC , DST ——需指定操作类型字

② CMPSB ——字节串比较

③ CMPSW ——字串比较

功能:将 SI 所指的源串中的一个字节(或字)存储单元中的数据与 DI 所指的目的串中的一个字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。

即:①( [SI] )-( [DI] )。

② 修改串指针,使之指向串中的下一个元素。当 DF=0 时,( SI )和( DI )增量。当 DF=1 时,( SI )和( DI )减量。

③当操作为字节操作时, (SI) 、 (DI) 增减量为 1 ,当操作为字操作时, (SI) 、 (DI) 增减量为 2 。

4 .串搜索指令 SCAS

语句格式:① SCAS DST

② SCASB ——字节串搜索

③ SCASW ——字串搜索

功能: AL (字节)或 AX (字)中的内容与 DI 所指的目的串中的一个字节(

字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存,

即:① 字节操作:( AL )-( [DI] ),字操作:( AX )-( [DI] )。

② 修改指针使之指向串中的下一个元素。当 DF=0 时,( DI )增量。当 DF=1 时,( DI )减量。

③当操作为字节操作时, (SI) 、 (DI) 增减量为 1 ,当操作为字操作时, (SI) 、 (DI) 增减量为 2 。

以上 3 , 4 两条串处理指令和 REPE 或 REPNE 相结合,可以用来比较两个数据串,或从一个字符串中查找一个指定的字符。

当要求从一个字符串中查找一个指定的字符,可用指令 REPNZ SCASB 。

当要求比较两个字符串,找出它们不相区配的位置,则可以使用指令 REPE CMPSB 。

5 .从源串中取数指令 LODS

语句格式:① LODS SRC

② LODSB ——从字节串中取数

③ LODSW ——从字串中取数

功能:将 SI 所指的源串中的一个字节(或字)存储单元中的数据取出来送入 AL (或 AX )中。

即:

① 字节操作:( [SI] )→ AL ,字操作:( [SI] )→ AX 。

② 修改指针 SI ,使它指向串中的下一个元素。当 DF=0 时,( SI )增量。当 DF=1 时,( SI )减量。

③当操作为字节操作时, (SI) 、 (DI) 增减量为 1 ,当操作为字操作时, (SI) 、 (DI) 增减量为 2 。



6 .往目的串中存数指令 STOS

语句格式:① STOS DST

② STOSB ——往字节串中存数

③ STOSW ——往字串中存数

功能:将 AL 或 AX 中的数据送入 DI 所指的目的串中的字节(或字)存储单元中。

即:

① 字节操作:( AL )→ [DI] ,字操作:( AX )→ [DI] 。

② 修改指针 DI ,使之指向串中的下一个元素。当 DF=0 时,( DI )增量)。当 DF=1 时,( DI )减量。

③当操作为字节操作时, (SI) 、 (DI) 增减量为 1 ,当操作为字操作时, (SI) 、 (DI) 增减量为 2 。

对串处理指令,需注意:

(1) 串处理指令在不同的段之间传送或比较数据,如果需要在同一段内处理数据,可以在 DS 和 ES 中设置同样的地址,或者在源操作数字段使用段跨越前缀来实现。例如:

MOVS [DI] , ES : [SI]

(2) 当使用重复前缀时, (CX) 是每次减 1 的,因此对于字指令来说,预置时设置的值应该是字的个数而不是字节数。

安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/
小程序码
 
打赏
 
更多>文章标签:安防之家
更多>同类安防监控资讯
0相关评论

推荐图文更多...
点击排行更多...
安防监控商机更多...
安防监控圈更多...
最新视频更多...
推荐产品更多...
水泥之家 | 橱柜之家 | 机械之家 | 水电之家 | 五金之家 | 家电之家 | 饰品头条 | 墙布头条 | 家纺头条 | 塑料头条 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 漳州建材 | 泉州建材 | 三明建材 | 莆田建材 | 合肥建材 | 宣城建材 | 池州建材 | 亳州建材 | 六安建材 | 巢湖建材 | 宿州建材 | 阜阳建材 | 滁州建材 | 黄山建材 | 安庆建材 | 铜陵建材 | 淮北建材 | 马鞍山建材 |
建材 | 双碳之家 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号
(c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved
Powered by 安防之家