有关汇编语言的问题。
设程序加载后,code段的段地址为X,则data段的段地址为___?stack段的段地址为___?
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
DW 0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CBAH,0987H
DATA ENDS
STACK SEGMENT
DW 0,0,0,0,0,0,0,0,
STACK ENDS
CODE SEGMENT
START: MOV AX,STACK
MOV SS,AX
MOV SP,16
MOV AX,DATA
MOV DS,AX
PUSH DS:[0]
PUSH DS:[2]
POP DS:[2]
POP DS:[0]
MOV AX,4C00H
INT 21H
CODE ENDS
END START
答案:code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
是按数据段、堆栈段、代码段依次排列的,
数据段
DW 0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CBAH,0987H
是8个字,就是16个字节
堆栈段
DW 0,0,0,0,0,0,0,0
也是16个字节
地址=段地址*16+偏移量
那么段地址每增加1就是16字节
所以DS+1=SS
SS+1=CS
又CS=X,
所以DS=X-2,SS=X-1
上一个:谁知道汇编中0150H [BX] [SI]表示是怎么寻址方法啊,请写出具体的方法
下一个:汇编语言里几条语句的解释 帮帮忙 谢谢