我利用前面栈段的push和pop来实现两个内存地址的复制。 请大家指正。
d:\asm>type 59.asm
assume cs:code
code segment
mov ax,0ffffh
mov ss,ax
mov sp,0
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,12
s: push ss:[bx]
pop [bx]
inc bx
loop s
mov ax,4c00h
int 21
code ends
end
d:\asm>
实验结果:
运行前内存地址情况:
-d ffff:0 b
FFFF:0000 EA 5B E0 00 F0 30 38 2F-33 31 2F 30 .[...08/31/0
-d 20:0 b
0020:0000 00 00 00 00 00 00 00 00-00 00 00 00 ............
-r
AX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=13A4 ES=13A4 SS=13B4 CS=13B4 IP=0000 NV UP EI PL NZ NA PO NC
13B4:0000 B8FFFF MOV AX,FFFF
(过程略)
运行后内存地址情况:
-d ffff:0 b
FFFF:0000 EA 5B E0 00 F0 30 38 2F-33 31 2F 30 .[...08/31/0
-d 20:0 b
0020:0000 EA 5B E0 00 F0 30 38 2F-33 31 2F 30 .[...08/31/0
-
-
即:实现了两块内存的复制 |