1 assume cs:code
2
3 a segment
4 dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
5 a ends
6
7 b segment
8 dw 0,0,0,0,0,0,0,0
9 b ends
10
11 code segment
12 start:
13 mov ax,0020h //13~15行代码在已知安全空间开辟一个大小为20字节的栈,用于后面逆序储存
14 mov ss,ax
15 mov sp,0020h
16 mov ax,a
17 mov ds,ax //定义第一个段
18 mov ax,b
19 mov es,ax //定义第二个段
20 mov bx,0 //20,26行代码代表偏移地址
21 mov cx,8 //21,27行代码用寄存器cx来存放loop次数
22 s:
23 push ds:[bx] //从第一个段入栈
24 add bx,2
25 loop s
26 mov bx,0
27 mov cx,8
28 s0:
29 pop es:[bx] //从第二个段出栈
30 add bx,2
31 loop s0
32 mov ax,4c00h
33 int 21h
34 code ends
35
36 end start