汇编字符串处理指令stosb、lodsb、movsw、scasb、rep

一、字符串处理指令

(1) lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI

(2) stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI

(3) movsb、movsw:把DS:SI指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI

(4) scasb、scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI

(5) cmpsb、cmpsw:把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI

(6) rep:重复其后的串操作指令。重复前先判断CX是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在LODS前。

上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器AX、计数器CX
           涉及的标志位:DF、AF、CF、OF、PF、SF、ZF

二、使用举例

 把当前数据段中偏移1000H开始的100个字节的数据传送到从偏移2000H开始的单元中

CLD
      PUSH    DS
      POP     ES
      MOV     SI,1000H
      MOV     DI,2000H
      MOV     CX,100
NEXT: LODSB
      STOSB
      DEC     CX
      JNZ     NEXT

CLD
      PUSH    DS
      POP     ES
      MOV     SI,1000H
      MOV     DI,2000H
      MOV     CX,100
NEXT: MOVSB
      DEC     CX
      JNZ     NEXT

CLD
      PUSH    DS
      POP     ES
      MOV     SI,1000H
      MOV     DI,2000H
      MOV     CX,3
NEXT: MOVSB
      LOOP    NEXT

注意jnz和loop中的汇编跳转指令规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值