|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请问这里的CS指向的内存地址,是第一个数据栈道DW:的段地址?还是指向了第二个空的栈道DW:的段地址?为什么
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
start:mov ax,cs
mov ss,ax
mov sp,30
mov bx,0
mov cx,8
s:push cs:[bx]
add bx,2
loop s
mov bx,0
mov cx,8
s0:pop cs:[bx]
add bx,2
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
本帖最后由 TyCk 于 2018-7-24 18:51 编辑
这就一个段,只不过在不同位置。
假设codesg位置是在0x400000吧,
你想问如何区分这两部分数据?
0x400000 + 0开始标识第一部分数据,
0x400016 + 0开始标识第二部分数据。
说白了,不同的数据所在地址不同,调用不同的地址的数据,自然也就区分开了。
就是0和1的区别呢,哪一部分是哪取决于你,对于代码而言,你就是上帝,不过,上帝也不一定就能造出活人来。同样道理,由你来告诉机器数据多大,数据在哪,如何使用,如果说错了,代码执行不起来或者崩溃,就这么简单。加油吧,汇编很考验编程思维的,也很锻炼…… 
|
|