回 帖 发 新 帖 刷新版面

主题:堆段的问题

DSEG SEGMENT
  A DB 23,6,19
DSEG ENDS
[b]SSEG SEGMENT STACK
  DB 200 DUP(?)
SSEG ENDS[/b]
CSEG SEGMENT
  ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START:MOV AX,DSEG
      MOV DS,AX
      LEA BX,A
      MOV AL,[BX]
      CMP AL,[BX+1]
      JB NEXT1
      XCHG AL,[BX+1]
NEXT1:CMP AL,[BX+2]
      JB NEXT2
      XCHG AL,[BX+2]
NEXT2:MOV [BX],AL
      MOV AL,[BX+1]
      CMP AL,[BX+2]
      JB NEXT3
      XCHG AL,[BX+2]
NEXT3:MOV [BX+1],AL
EXIT:MOV AH,4CH
     INT 21H
CSEG ENDS
  END START


我想问一下这定义堆栈段有什么作用,似乎没有用到??
SSEG SEGMENT STACK
  DB 200 DUP(?)
SSEG ENDS

回复列表 (共4个回复)

沙发


堆栈段用来存放局部变量,还有你在一个函数调用另一个函数的时候,你的函数的地址,以及寄存器里面的值都要保存到堆栈,以便返回时恢复.你可以显示分配一块内存做堆栈,也可以不分配.当你不分配时,系统自动为你分配一块内存作为堆栈.当堆栈不够用时,会报错!

板凳

明白了,谢谢。还有个问题,SSEG SEGMENT STACK中的STACK是什么?是随便取的名字吗?

3 楼

SSEG SEGMENT STACK中的STACK是什么
stack 表示堆栈的意思 可有可无
sseg 可以随便取

4 楼

明白了,多谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册