幕府幽魂 发表于 2011-5-30 12:19:30

关于栈的疑问

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

assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw0,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:          
                  add bx,2
           loop s
          
           mov bx,0
           mov cx,8
   s0: pop ax
       mov ds: ,ax
           add bx,2
           loop s0
          
           ........
在这段程序中和甲鱼老师的有所不同,mov ax,csmov ss,ax可以省掉吗?另外PUSH不用mov ax做中间人,而直接入内存 ,是写法直接省掉,还是根本没有经过寄存器?

loop 发表于 2011-5-30 13:03:16

本帖最后由 loop 于 2011-5-30 13:05 编辑

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

第二个问题,我很纠结。
所以,期待各位鱼友解答。:)

幕府幽魂 发表于 2011-5-30 13:17:49

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

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

这段程序是代码,数据,栈段在同一段中,那么代码段的起始地址=DS=SS,所以才会有mov ax,cs
mov ss,ax可不可以省掉的疑问
页: [1]
查看完整版本: 关于栈的疑问