第1个回答 2012-12-17
如果是系统默认,那你这程序有何意义?所以程序应使用你自己定义的堆栈,这也是你的目的。
回到你问题,你之前有 assume ss:XX ,但编译器并不会就此认为 XX 就是你定义的堆栈,你得有所表示,所以你在源程序中一定要有语句表明你的意图,例如:MOV AX,XX MOV SS,AX
这样,XX 就跟堆栈段 SS 联系起来了,程序也就知道你定义的堆栈在哪了。
下面给一个简单例子,将数据段data的内容逆序存放到堆栈段stack中
ASSUME CS:CODE, DS:DATA, SS:STACK
DATA SEGMENT
DW 1,2,3,4,5,6,7,8
DATA ENDS
STACK SEGMENT
DW 0,0,0,0,0,0,0,0
STACK ENDS
CODE SEGMENT
START: MOV AX,DATA ;这里将自定义的数据段 DATA 与 DS 联系起来
MOV DS,AX
MOV AX,STACK ;这里将自定义的堆栈段 STACK 与 SS 联系起来
MOV SS,AX
MOV SP,10H
MOV BX,0
MOV CX,8
S: PUSH [BX]
ADD BX,2
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END START本回答被提问者和网友采纳