+ -
当前位置:首页 → 问答吧 → 一个简单的问题

一个简单的问题

时间:2011-03-21

来源:互联网

刚写汇编不久。
PadLen db 1,63 dup (3)
block db 512 dup(0)
我想把PadLen里的内容复制到block中,写了下面代码
Assembly code

mov cx,64
mov bx,offset PadLen
mov bp,offset block
loop3:
  mov dx,[bx]
  mov [bp],dx
  inc bx
  inc bp
  loop loop3


调试看了下,好像不对。希望各位汇编的高手们指点一下,如果要实现这样的功能该怎么做???

作者: shaotine_wu   发布时间: 2011-03-21

assume cs:code,ds:data,es:data
mov ax,data
mov ds,ax
mov es,ax
mov si,offset PadLen
mov di,offset block
mov cx,lengthof PadLen
cld
rep movsb

作者: masmaster   发布时间: 2011-03-21

bp在8086汇编里有专门的用途, 不要擅自使用!

作者: masmaster   发布时间: 2011-03-21

不要用bp,这个是SS专用的
用si和di设置偏移地址
然后用rep movsb进行复制

作者: WhiteBird99   发布时间: 2011-03-21

mov cx,64
mov bx,offset PadLen
mov bp,offset block
loop3:
  mov dx,[bx]
  mov ds:[bp],dx  
;bp默认的段地址为ss,所以需要加段前缀(ds:)指明。若用si或di代替bp则可省去段前缀。
  inc bx
  inc bp
  loop loop3

作者: shzhfu   发布时间: 2011-03-21

assume cs:code,ds:data,es:data
mov ax,data
mov ds,ax
mov es,ax
mov si,offset PadLen
mov di,offset block
mov cx,lengthof PadLen

change:
mov al,[si]
xchg [di],al  
inc si
inc di
loop change

作者: angel_kong   发布时间: 2011-03-21