|
“利用栈,将程序中定义的数据逆序存放”我编写程序如下:
assume cs: pro6_2
pro6_2 segment
; 需要逆序存储的数据
dw 0123H, 0456H, 0789H, 0abch, 0defh, 0fedh, 0cbah, 0987h
; 程序执行的入口
start:
mov bx, 0000H
mov ax, cs
mov ss, ax
mov ds, ax
mov sp, 000EH
mov cx, 4
s:
pop ax
push [bx]
mov [bx], ax
add bx, 2
sub sp, 2
loop s
mov ax, 4c00H
int 21H
pro6_2 ends
end start
但是程序的执行结果却不是预期示范的那样,通过debug追踪发现,当程序执行完“sub sp, 2”时,内存中原先的值竟然发生了改变,如下:
AX=0987 BX=0002 CX=0003 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=1429 ES=1419 SS=1429 CS=1429 IP=0027 NV UP EI PL NZ NA PO NC
1429:0027 83EC02 SUB SP,+02
-d 1429:0 f
1429:0000 87 09 56 04 87 09 00 00-27 00 29 14 13 0E 23 01 ..V.....'.)...#.
-t
AX=0987 BX=0002 CX=0003 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=1429 ES=1419 SS=1429 CS=1429 IP=002A NV UP EI PL NZ NA PE NC
1429:002A E2F3 LOOP 001F
-d 1429:0 f
1429:0000 87 09 87 09 00 00 2A 00-29 14 13 0E 02 33 23 01 ......*.)....3#.
是在不明白其中原由,恳请指点!!!
|
|