DF: UP(向上) DN(down 向下)
assume cs:code, ds:data, ss:stack
data segment
db 128 dup(128)
data ends
stack segment
db 128 dup(128)
stack ends
code segment
start: mov dx, stack
mov ss, dx
mov sp, 128
call cpy_Boot
mov ax, 4C00H
int 21H
Boot: mov ax, 1000H
mov ax, 1000H
mov ax, 1000H
mov ax, 1000H
Boot_end: nop
;=======================================
cpy_Boot:
mov bx, cs
mov ds, bx ; ds:[si]
mov si, OFFSET Boot
mov bx, 0
mov es, bx
mov di, 7E00H ; es:[di]
mov cx, OFFSET Boot_end - Boot
cld ; inc si, inc di DF=0
; movsb 复制一个字节从ds:[si] 到 es:[di]
rep movsb ;rep 重复 movsb:复制字节
;rep movsw 移动一个字型数据,同时每次si,di都会再加2
ret
code ends
end start