+ -
当前位置:首页 → 问答吧 → 书上的复制字符例子,add si,2不会漏掉一个字符吗?

书上的复制字符例子,add si,2不会漏掉一个字符吗?

时间:2010-11-29

来源:互联网

王爽书上的例子:
功能是将一句话移到后面的内存单元中

用到了add si,2
  add di,2
这样做不会漏掉一个字符吗?
会什么可以两两个的复制?
如果add si,4,那不是就4个4个的复制了?



  ASSUME CS:CODES,DS:DATAS
DATAS segment
db 'welcome to masm!'
db '................'
DATAS ends


codes SEGMENT
  ;此处输入堆栈段代码


START:
  MOV ax,datas
  MOV ds,ax
  mov si,0
  mov di, 16
  mov cx,8
  s:mov ax,[si]
  mov [di],ax
  add si,
  2
  and di,2
   
  loop s
  ;此处输入代码段代码
  MOV AH,4CH
  INT 21H
CODES ENDS
  END START

作者: SHOUYU2   发布时间: 2010-11-29

引用楼主 shouyu2 的回复:
王爽书上的例子:
功能是将一句话移到后面的内存单元中

用到了add si,2
add di,2
这样做不会漏掉一个字符吗?
会什么可以两两个的复制?


mov ax,[si]
mov [di],ax
是字操作,所以内存地址要加2


引用楼主 shouyu2 的回复:
如果add si,4,那不是就4个4个的复制了?

8086最多就可用16位的寄存器,32位的(EAX)不让用,所以这样写就只好最多字操作了!!!

作者: nanlingcg   发布时间: 2010-11-29

在一个循环中处理2个字符,然后当然要跳过2个字符

作者: mydo   发布时间: 2010-11-29

楼上正解

作者: liuyaling1988   发布时间: 2010-11-29