汇编笔记之四 包含多个段的程序

  为什么要写多个段的程序,我们之前只有一个代码段。现在要编写多个段的程序,是因为,程序有时候需要处理一些数据,然而这些数据是我们已经给出的,写好了的。也就是说,是程序里面预先定义好了的。

  我们知道,在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,然后用栈段做中转,将数据倒序排列。

  

  

原文地址:https://www.cnblogs.com/LearningC/p/1955749.html