安防监控知识
电气知识|串操作类指令
2017-08-22  浏览:65
安防之家讯:串操作指令 : 在 计算机中,大部分数据存放在主存中, 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评
  • 评论登陆
  • 移动社区 天花之家 木门之家 灯具之家 铁艺之家 幕墙之家 五金头条 楼梯头条 墙纸头条 壁纸头条 玻璃头条 老姚之家 灯饰之家 电气之家 全景头条 照明之家 防水之家 防盗之家 区快洞察 建材 枣庄建材 临沂建材 南昌建材 上饶建材 抚州建材 宜春建材 吉安建材 赣州建材 鹰潭建材 新余建材 九江建材 萍乡建材 景德镇陶瓷 石家庄建材 衡水建材 廊坊建材 沧州建材 承德建材 建材之家 企业之家 720全景
    (c)2015-2017 Bybc.cn SYSTEM All Rights Reserved