. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  栈的初始状态一定为空吗,我能不能把一段存了数据的内存定义为栈呢,结果,试了下,不行,必须为空。  [待解决] 回复[ 7次 ]   点击[ 361次 ]  
knights8
[帖 主]   [ 发表时间:2012-12-03 13:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-28 22:41
这好像是个常识,但书里没有明确讲,所以我还是试了一下,必须为空,否则就会自动退出DOS界面,我还在想电脑只管SS:Sp指哪,哪就是栈,书里说电脑不管栈大小,那应该也不管栈初始状态是不是空了,大不了用push的数据直接覆盖掉原有的数据,结果直接退出dos。根本无法设置有数据的内存为栈
chinatree
[第1楼]   [ 回复时间:2012-12-03 21:48 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
怎么可能不可以呢?我们代码中mov ss,ax/mov sp,STACKTOP不就是在设置栈吗?如果不能解决,就请贴代码。
form4.c
[第2楼]   [ 回复时间:2013-04-14 21:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-04-11 23:46
我也在想这个问题,下面这段代码通过编译,用debug,T跟踪,每次都是执行到mov ax,0ffffh 这句时就出现 program terminated normally
代码如下。
assume cs:code,ss:stack

stack segment

        dw 8 dup (24)
        
stack ends

code segment

sa:                mov ax,stack
                mov ss,ax
                mov sp,2h
                
                
                mov ax,0ffffh
                mov ds,ax
                
                mov bx,0h
                mov cx,8
s:                push  ds:[bx]
                add bx,2
                loop s
                                        
                mov ax,4c00h
                int 21h
                
code ends
end sa
stop1204
[第3楼]   [ 回复时间:2013-04-19 03:05 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
mov ax,0ffffh  <<<<< 6位16进制数据,  ax只接收4位的
wildwind
[第4楼]   [ 回复时间:2013-04-19 09:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-04-07 16:06
存了一段数据的内存可以定义为栈,当然必须定义在RAM,如果定义在了ROM,比如ss=fff0,sp=10,对栈进行操作时会出现未知的错误。
stop1204
[第5楼]   [ 回复时间:2013-04-23 22:16 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
有机会 覆盖了重要数据,而导致错误
benbenfei123
[第6楼]   [ 回复时间:2013-07-15 14:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-14 15:44
你定义的栈,已经进入了bios的rom,这是系统不允许的。我们在cmd下运行debug是在保护模式下运行的虚拟8086环境,并不是真正的dos环境。所以报错强制退出了。
呵呵,也不知道解释的有问题没?希望高手斧正
benbenfei123
[第7楼]   [ 回复时间:2013-07-15 14:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-14 15:44
安全的内存空间是0:200h~~0:2ffh。在这定义应该没有问题
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved