鱼C论坛

 找回密码
 立即注册
查看: 3491|回复: 2

关于栈的疑问

[复制链接]
发表于 2011-5-30 12:19:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 幕府幽魂 于 2011-5-30 12:35 编辑

assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw  0,0,0,0,0,0,0,0
kaisi:        mov ax,cs
               mov ss,ax

               mov sp,32
                mov bx,0
                mov cx,8
          
        s: push ds:[bx]          
                  add bx,2
           loop s
          
           mov bx,0
           mov cx,8
   s0: pop ax
       mov ds:[bx] ,ax
           add bx,2
           loop s0
          
           ........
在这段程序中和甲鱼老师的有所不同,mov ax,cs  mov ss,ax可以省掉吗?另外PUSH不用mov ax做中间人,而直接入内存 ,是写法直接省掉,还是根本没有经过寄存器?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-30 13:03:16 | 显示全部楼层
本帖最后由 loop 于 2011-5-30 13:05 编辑

mov ax,cs 是设置当前指令的走向,如果省掉,程序可能运行不了,或者执行错误。
mov ss,ax 是设置栈的初始值,如果省掉,栈是无法使用的。

第二个问题,我很纠结。
所以,期待各位鱼友解答。:)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-30 13:17:49 | 显示全部楼层

关于cs,ds,ss在同一个段空间的一些疑问

本帖最后由 幕府幽魂 于 2011-5-30 13:39 编辑

这段程序是代码,数据,栈段在同一段中,那么代码段的起始地址=DS=SS,所以才会有mov ax,cs
mov ss,ax可不可以省掉的疑问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 22:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表