;程序描述:
assume cs:code,ds:data,ss:stack ;将code,data,stack段依次与代码段寄存器,数据段寄存器,栈段寄存器联系起来。
data segment
dw 0123h,0456h,0789h,0abch,0fedh,0cbah,0987h ;用dw定义8个字型数据,程序加载后将取得16个字节的空间。
data ends
stack segment
dw 0,0,0,0,0,0,0,0 ;用dw定义8个字型数据,程序加载后将取得16个字节的空间。
stack ends
code segment
start: mov ax,stack ;start标识cpu要执行的第一条指令。将栈段的段地址存入ax中。
mov ss,ax ;将ax中的内容存入栈段寄存器中。
mov sp,16 ;指定ss:sp指向ss:16。
mov ax,data
mov ds,ax ;设置数据段段地址。
push ds:[0] ;sp=sp-2=14,将ds:[0]内存的字型数据存入ss:[14]。
push ds:[2] ;sp=sp-2=12,将ds:[2]内存的字型数据存入ss:[12]。
pop ds:[2] ;将ss:[12]内存的字型数据存入ds:[2]。sp=sp+2=14。
pop ds:[0] ;将ss:[12]内存的字型数据存入ds:[2]。sp=sp+2=16。
mov ax,4c00h
int 21h ;程序返回。
code ends
end start |