问题7.8里的sp的定义
这里sp定义为16,我的理解应该为50H,不知道该怎么理解,附上该程序的一部分代码assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0;用栈来保存cx
stacksg ends
codesg segment
start:
mov ax,stacksg
mov ss,ax
mov sp,16;为什么是16而不是50H
dw 0,0,0,0,0,0,0,0
dw 定义字形数据 ,共 8 个
一个字形数据两个字节组成,8 个字形数据一共有 16 个字节
因为计算机从 0 开始计算,所以 sp 指向 16 ,或者是 10H LinuxDeepin 发表于 2013-11-4 06:54 static/image/common/back.gif
dw 0,0,0,0,0,0,0,0
dw 定义字形数据 ,共 8 个
谢谢 ,不过前面db定义的数据呢 这两个不是放在一起么 我看之前的例题好像都把前面的数据也算进去计数的 你可能写的是王爽的书上的嵌套loop循环那里,保存cx,直接Mov dx,cx这样多方便啊 1236 发表于 2013-11-4 20:09 static/image/common/back.gif
你可能写的是王爽的书上的嵌套loop循环那里,保存cx,直接Mov dx,cx这样多方便啊
王爽老师的意思是有时候寄存器不够用,就放到内存里 羊羽生 发表于 2013-11-5 23:48 static/image/common/back.gif
王爽老师的意思是有时候寄存器不够用,就放到内存里
额 那就按你的方法用栈吧 你dw了8个字形单元 也就是16个字节,正好16 不是50 1236 发表于 2013-11-6 00:35 static/image/common/back.gif
额 那就按你的方法用栈吧 你dw了8个字形单元 也就是16个字节,正好16 不是50
不需要计算前面db的字节单元所占的内存么 羊羽生 发表于 2013-11-6 14:52 static/image/common/back.gif
不需要计算前面db的字节单元所占的内存么
因为内存是不分段的,所以你这个两种情况,第一,如果你mov ax,ds,mov ss,ds,也就是把段地址当做了栈地址,那么你sp设置成50是对的,如果你是mov ax,stacksg,mov ss,ax 那么你应该把sp设置成16 很明显你这个源码是属于第二种情况 sp是堆栈指针吧 别管上面的!
{:1_1:}
页:
[1]