汇编语言中 栈顶问题~~~ SP=?
assumecs:codesg,ds:data,ss:stackstacksegmentdw0,0,0,0,0,0datasegmentdb'1.display'db'2...
assume cs:codesg,ds:data,ss:stack
stack segment
dw 0,0,0,0,0,0
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
codesg segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov bx,0
mov cx,4
mov si,0
看到书上许多程序 SP都设置成 16 ?这是为什么呢? 栈最小是16字节~~ 当 DW定义一个栈段后~~ 栈顶 不是 十进制的 SP=16 也就是 十六进制的 10H 么? 高手指教下~~ 展开
stack segment
dw 0,0,0,0,0,0
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
codesg segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov bx,0
mov cx,4
mov si,0
看到书上许多程序 SP都设置成 16 ?这是为什么呢? 栈最小是16字节~~ 当 DW定义一个栈段后~~ 栈顶 不是 十进制的 SP=16 也就是 十六进制的 10H 么? 高手指教下~~ 展开
展开全部
首先 栈段最小为16字节 但是栈的作用只是动态的临时的存储数据,而不需要定义多么多么大空间。
SP相当于IP作为偏移地址,只不过固定了,进栈一次SP=SP-2
一个栈有它的起始SP,SS:SP始终指向最顶元素
(1)栈为空,SP指向(0~F)10H(即F的下面一个空间)
它作为起始的,当压栈一次时,先SP=SP-2=0EH,后压栈
当SP指向0FH时,压栈8此后,SP就超出0~F的范围了
(SP=SP-1=01H-2<0了)
(2)栈满, SP指向(0~F)00H(即指向最顶元素)
SP相当于IP作为偏移地址,只不过固定了,进栈一次SP=SP-2
一个栈有它的起始SP,SS:SP始终指向最顶元素
(1)栈为空,SP指向(0~F)10H(即F的下面一个空间)
它作为起始的,当压栈一次时,先SP=SP-2=0EH,后压栈
当SP指向0FH时,压栈8此后,SP就超出0~F的范围了
(SP=SP-1=01H-2<0了)
(2)栈满, SP指向(0~F)00H(即指向最顶元素)
2009-05-14
展开全部
没错啊 有什么问题?16对应十六进制10H
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询