+ -
当前位置:首页 → 问答吧 → 请教一个编程题目

请教一个编程题目

时间:2011-03-29

来源:互联网

题目是:编写程序,把10字节的数据块从偏移地址BUF开始的单元传送到偏移地址BUF+5开始的缓冲区

我是这么写的(省略了定义):
MOV SI,OFFSET BUF
MOV DI,OFFSET BUF+5
MOV CX,10
LAST:MOV AL,[SI]
  MOV ES:[DI],AL
  INC SI
  INC DI
  LOOP LAST

我这么写对吗?

作者: uuszqqh   发布时间: 2011-03-29

应该倒着来,因为两个区域有重叠,你这样原始数据覆盖掉了。

如果学过串操作指令,可用rep movsb代替你这段循环,但要注意df的设置。

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

最好用串操作指令,比较合适。
Assembly code

;
;This Program Compiled Sucess by Masm 6.15
;
assume  cs:code,ds:data,es:data
data    segment
a       db      1,2,3,4,5,6,7,8,9,10
b       equ     $-offset a+5
data    ends
code    segment
start:
        mov ax,data
        mov ds,ax
        mov es,ax
        mov si,offset a
        mov di,offset b
        mov cx,lengthof a
        cld
        rep movsb

        mov ah,4ch
        int 21h
code    ends
end     start


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

热门下载

更多