通过加重复前缀,串操作指令可以实现对一串数据的操作。一条带重复前缀的串操作指令的执行过程往往相当于执行一个循环程序。在每次重复之后,都会自动修改地址指针ESI和EDI,如果在执行串操作指令的过程中,有一个外部中断进入,那么,在完成中断处理以后,将返回去执行串操作指令。

字符串传送指令MOVSB/MOVSW/MOVSD

字符串传送指令是唯一的源操作数和目的操作数都在存储器中的传送指令。
MOVSB/MOVSW/MOVSD指令将位于DS段由ESI(SI)所指的存储单元开始的字节、字或双字传送到位于ES段由EDI(DI)所指的存储单元开始的区域,再修改ESI和EDI,从而指向下一个元素。MOVSB用于传送字节,MOVSW用于传送字,MOVSD用于传送双字。
MOVSB/MOVSW/MOVSD指令前通常加重复前缀REP,以便实现字节串、字串和双字串的传输。
Pentium的指令系统(4)——串操作指令
作用:
1.源地址为DS:1000H
2.目的地址为ES;2000H
3.字符串长100字节
4.方向标志清0,使地址指针按增量方向修改
5.将源地址开始的100个字节传送到目的地址

注意:
1.源地址默认用ESI寄存器指出,目的地址默认用EDI指出,并默认源地址在DS段,目的地址在ES段
2.CX或ECX寄存器中事先存放好要传送的字节数、字数或双字数。但到底对应的是字节、字还是双字,决定于指令形式
3.如果用CLD指令将方向标志清0,则用MOVSB指令时,每传送一次,地址指针ESI和EDI自动增1,用MOVSW指令时,每传送一次,地址指针ESI和EDI自动增2。反过来,如果用STD指令将方向标志DF置1,则每次传送以后,地址指针自动减1,2,4。对带REP重复前缀的串传送指令来说,每传送一次,CX中的数值总是减1。

字符串比较指令CMPSB/CMPSW/CMPSD

字符串比较指令把DS段由ESI所指的字节、字或双字和ES段由EDI所指的字节、字或双字比较,,并在比较之后自动修改地址指针,通过重复前缀的控制,课实现在两个字符串中寻找第一个不相等的元素或第一个相等的元素。
Pentium的指令系统(4)——串操作指令
Pentium的指令系统(4)——串操作指令
作用:
3.清方向标志
4.计数器为4
5.如比较结果相等,则继续比较下一个字节,此时DI和SI分别加1,CX减1.

相关文章: