assume cs:code
code segment
mov ax, 0ffffh
mov ds, ax
mov bx, 0
mov dx, 0
mov cx, 12
s: mov al, [bx] ;将ffff:0000处的值赋给al
mov ah, 0 ;ah置0
add dx, ax ;dx+=ax
inc bx ;bx++
loop s ;最终实现的是将地址ffff:0000到地址ffff:0011的值相加,和赋值给dx
mov ax, 4c00H
int 21H
code ends
end
另一段:
assume cs:code
code segment
mov bx, 0
mov cx, 12 ;循环12次
s: mov ax, 0ffffH ;ax=ffffH
mov ds, ax ;ds=ax=ffffH
mov dl, [bx] ;dl=ffff:0
mov ax, 0020H ;ax=0020H
mov ds, ax ;ds=ax=0020H
mov [bx], dl ;0020:0=dl=ffff:0
inc bx ;bx++
loop s ;最终实现的是把ffff:0到ffff:11处的值挪到0020:0到0020:11处
mov ax, 4c00h
int 21H
code ends
end
针对上一个程序的另一种写法:
assume cs:code
code segment
mov ax, 0ffffh ;ax=ffffH
mov ds, ax ;ds=ax=ffffH
mov ax, 0020h ;ax=0020H
mov es, ax ;es=ax=0020H
mov bx, 0 ;bx=0
mov cx, 12 ;cx=12,循环12次
s: mov dl, [bx] ;dl=ffff:0
mov es:[bx], dl ;0020:0=dl=ffff:0
inc bx ;bx++
loop s ;最终实现的是把ffff:0到ffff:11处的值挪到0020:0到0020:11处
mov ax, 4c00h
int 21H
code ends
end