QQ550544814 发表于 2012-7-12 14:06:40

sp值设置的问题。。。

书上的程序。
mov ax,1000
mov ss,ax
mov sp,0010
mov ax,001a
mov bx,001b
push ax
push bx
pop ax
pop bx

sp的值为什么是0010???还是说可以随便取?为什么在debug里面,有时候出现的情况不同。

极品飞车 发表于 2012-7-12 15:51:54

这里是debug里面的显示,debug里面的数值默认都是16进制的。ss=1000,sp=0010的意思是定义了一个空的栈,它的长度是16个字节,0010是16进制数,也就是10进制的16,就是16个字节的意思,从1000:0000到1000:000f刚好16个字节,由于是空的栈,栈顶指针sp就应该指向下一个地址——1000:0010。
所以设置sp=0010的意义首先是定义了栈的长度,其次是将栈顶指针sp指向下一个地址。

极品飞车 发表于 2012-7-12 15:54:20

sp的值是根据你自己的需要来设置的,所以可以随便取,但是最大不能大于64K,而且最好是16的倍数。

QQ550544814 发表于 2012-7-13 08:22:18

极品飞车 发表于 2012-7-12 15:54 static/image/common/back.gif
sp的值是根据你自己的需要来设置的,所以可以随便取,但是最大不能大于64K,而且最好是16的倍数。

那个64K怎么算的啊?怎样算不超过64K

极品飞车 发表于 2012-7-13 09:51:12

1个二进制位=1bit
8个二进制位=8bit=1byte
1024byte=1Kb
64Kb=64*1024byte
页: [1]
查看完整版本: sp值设置的问题。。。