串操作指令和处理机控制指令小节
前言:公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书
串操作指令
什么叫数据串,什么叫串操作呢?
数据串是存储器中一块字节或字的存储区域,其长度可以是1字节一64K字节。
串操作就是对数据串中每个元素所进行的操作,这种操作通常是组合操作,能完成几条指令的功能。
1,常见的串操作指令
-
1,串传送指令MOVSB/MOVSW
格式:MOVSB/MOVSW
功能:将源串指针所指单元的一个数据(字节或字)传送到目的串指针所指单元中,指针作相应变化。
另外一个指令:重复 REP:
格式:REP 串操作指令
功能:使串操作指令重复执行CX指定的次数
说明:若CX≠0则重复执行串指令,并置CX←CX-1,直到CX=0为止。REP指令主要用于串传送和串写入指令前。
一个例题:将内存100H:200H开始的100个字节送到300H:400H开始的内存单元中。
分析:
(1)源串起始地址:100H:200H →DS:[SI]
(2)目的串起始地址:300H:400H→ES:[DI]
(3)串长度:100→cX
(4)方向标志:地址增加→DF=0
程序如下:
MOV AX,100H
MOV DS,AX ;源串段地址
Mov SI,200H ;源串指针
MOV AX,300H
MOV ES,AX ;目的串段地址
MOV DI,400H ;目的串指针
Mov CX,100 ;串长度
CLD ;地址增量
REP MOVSB ;这条指令很重要
-
2,串比较指令 CMPSB/CMPSW
格式: CMPSB/CMPSW
-
相等则重复 REPE/REPZ
格式:REPE/REPZ 串操作指令
功能:若串操作指令执行结果相等,且CX 指定次数未到,则重复执行串指令,直到结果不相等,或CX 指定次数已到则停止。
说明:若ZF=1且CX-1→CX≠0则重复执行串指令,直到ZF=0或CX一1→cX=0为止。REPE指令主要用于串比较和串搜索指令前。
-
不相等则重复 REPNE/REPNZ
格式:REPNE/REPNZ串操作指令
功能:若串操作指令执行结果不相等,且CX指定次数未到,则重复执行串指令,直到结果相等,或CX指定次数已到则停止。
说明:若ZF=O且CX-1→CX≠0 则重复执行串指令,直到ZF=1或CX一1→cX=0为止。REPNE指令主要用于串比较和串搜索指令前。
-
3,串搜索指令 SCASB/SCASW
格式: SCASB/SCASW
功能:将累加器(AL或AX)内容与目的串指针DI 所指单元的一个数据(字节或字)相减但结果不回送,只影响标志位,指针作相应变化。
处理机控制指令
处理机控制指令用于控制处理器某些功能
1,标志位操作指令
- 进位标志CF
- CLC ;CF=0
- STC ;CF=1
- CMC ;CF=-CF
- 方向标志DF
- CLD ;DF=0
- STD ;DF=1
- 中断标志IF
- CLI ;IF=0
- STI ; IF=0
2,同步控制指令
-
(1)等待指令 WAIT
格式:WAIT
功能:使CPU进入空闲等待状态。在等待状态时,每隔5个时钟周期对TEST非的状态进行一次测试,若 TEST非 =0,则退出WAIT,开始执行下一条指令。在等待期间,处理器也接受中断,但从中断返回后,又进入WAIT执行状态。
-
(2)封锁总线指令LOCK
格式:LOCK 指令
功能:封锁总线使其他处理器不能使用总线
说明:LOCK是可以加在任何指令前面的单字节前缀指令,它使处理器在执行该指令期间保持一个总线封锁信号LOCK非,使其他处理器不能使用总线。这样可以在多处理器系统中,实现对共享资源的存取控制。
-
(3)交权指令ESC
格式:ESC 外部操作码,源操作数
说明:要求协处理器完成某种任务。ESC是在最大模式下使用的一条指令,主要用在CPU与外部处理器(如协处理器8087)配合工作的情形。CPU执行该指令时,可使外部协处理器获得一个操作码和一个操作数,并使用8086的寻址方式。
3,暂停及空操作指令
-
暂停指令 HLT
格式:HLT
功能:使CPU进入暂停状态
-
空操作指令 NOP
格式:NOP
功能:不执行任何操作,只是占用了CPU用来获取该指令的4个时钟周期时间