关于栈的疑问
本帖最后由 幕府幽魂 于 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:05 编辑
mov ax,cs 是设置当前指令的走向,如果省掉,程序可能运行不了,或者执行错误。
mov ss,ax 是设置栈的初始值,如果省掉,栈是无法使用的。
第二个问题,我很纠结。
所以,期待各位鱼友解答。:)
关于cs,ds,ss在同一个段空间的一些疑问
本帖最后由 幕府幽魂 于 2011-5-30 13:39 编辑这段程序是代码,数据,栈段在同一段中,那么代码段的起始地址=DS=SS,所以才会有mov ax,cs
mov ss,ax可不可以省掉的疑问
页:
[1]