为什么要写多个段的程序,我们之前只有一个代码段。现在要编写多个段的程序,是因为,程序有时候需要处理一些数据,然而这些数据是我们已经给出的,写好了的。也就是说,是程序里面预先定义好了的。
我们知道,在windows下编程的时候,你不得不考虑到操作系统的屏蔽。这个时候,资料显示,有一段安全的内存空间,也就是0:200 ~0:2FF 这段内存空间可以供我们存放数据,但是,如果我们的数据过多。这个时候就必须得使用多个段来保存数据。
下面来看看,多个段的程序结构:
Assume cs:code,ds:data,ss:stack ;从这里我们可以看出,程序有3个段
data segment
dw 0123h,0456h,0789h
data ends
stack segment
dw 0,0,0,0
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov bx,0
mov ax,bx ;初始化各个段寄存器和数据寄存器
mov cx,3 ;设置循环次数
Instack:
push [bx]
add bx,2
loop Instack ;入栈操作
mov cx,3
mov bx,0 ;循环次数和数据寄存器再次初始化
Outstack:
pop [bx]
add bx,2
loop Outstack ;出栈操作
mov ax,4c00h
int 21h ;程序返回
code ends
end start
以上的代码实现了数据的倒序排列。也就是将 123 变成了 321 。
以上程序,定义了数据段data和栈段stack,然后用栈段做中转,将数据倒序排列。