assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset s0 ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:di指向目的地址
mov cx,offset s0end-offset s0 ;设置cx为传输长度
cld ;设置传输方向为正
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0 ;设置中断向量表
mov ax,4c00h
int 21h
s0: push bp
mov bp,sp ;访问栈,使用bp,其段地址默认为ss
dec cx
cmp cx,0
je change ;(cx)-(cx)-1,如(cx)=0,则跳转;此处可用jcxz,更简便
add [bp+2],bx ;主程序内需循环段的末地址加上转移位移,为段首地址
change: pop bp
iret ;恢复cs、ip、flag
s0end: nop
code ends
end start