. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
基础知识
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
新手求问
[待解决]
回复[
2
次 ] 点击[
215
次 ]
814003560
[帖 主]
[ 发表时间:2012-08-03 20:21 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-08-03 09:59
datasg segment
dw '123456789abcdefg'
dw '123456789abcdefg'
dw '123456789abcdefg'
dw '123456789abcdefg'
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start:mov ax,stacksg
mov ss,ax
mov sp,16(这个16是几进制的?)
如果start:mov ax,datasg sp应该怎么求?
rambolei
[第
1
楼]
[ 回复时间:2012-08-09 11:57 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-06-12 09:31
这个16是10进制数。因为你初始化了一个16字节(8字)的栈段。
mov ax,stacksg
mov ss,ax
mov sp,16
这三条指令都是初始化一栈。8086栈中只能存放一个字而且8086栈他是向低地址增长的。在加上8086中各个段都只能是16的倍数,也就是说ss肯定是从一个xxxx0的位置开始的。这不就简单了吗,你分配了16字节的空间就用ss+16,最后sp=0+16了吗。
rambolei
[第
2
楼]
[ 回复时间:2012-08-09 11:59 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-06-12 09:31
还是多看看书中关于栈的那一块
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved