楼主说的:CODE段、DATA段、STACK段,这些,应该是编程时,自己写的段名称吧?
段名称,是自己瞎编的,看看下面的程序,就知道了。
编程时,可以自己定义几十、几百个段,这样的段,互相都是无关的。
程序运行后,段,就只有四个了,数据、代码、堆栈和附加。
程序运行后,把 A(或 B、C),送给 DS,这个 A(或 B、C)就成了数据段。
改变 DS,就可以改变数据段。
编程时定义的几十、几百个段,随意可以拿来一个当做数据段、代码...
数据、代码、堆栈和附加,这四个段,可以互相重叠,可以互相远离。
楼主怎么会认为它们有关系呢?
那么,楼主认为它们,有什么关系呢?
-------------
ASSUME CS:CODE
A SEGMENT ;段名称是A
DB 1, 2, 3, 4, 5, 6, 7, 8
A ENDS
B SEGMENT ;段名称是B
DB 1, 2, 3, 4, 5, 6, 7, 8
B ENDS
C SEGMENT ;段名称是C
DB 0, 0, 0, 0, 0, 0, 0, 0
C ENDS
CODE SEGMENT ;段名称是CODE
START:
MOV AX, A
MOV DS, AX
MOV AX, C
MOV ES, AX
MOV BX, 0
MOV CX, 8
S:
MOV AX, DS:[BX]
ADD ES:[BX], AX
ADD BX, 2
LOOP S
MOV AX, B
MOV DS, AX
MOV AX, C
MOV ES, AX
MOV BX, 0
MOV CX, 8
S0:
MOV AX, DS:[BX]
ADD ES:[BX], AX
ADD BX, 2
LOOP S0
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
楼主说的:CODE段、DATA段、STACK段,这些,
应该是编程时,自己写的段名称吧?
段名称,是自己瞎编的,不是非得写成 CODE ... 。
编程时写的段,是:【逻辑段】。
编程时,你可以编写千千万万个【逻辑段】。
段名称,由你自己随便定义。(当然,随便,也有一定的限制。)
但是,当程序运行时,CPU 只能用四个【逻辑段】。
用那四个呢? 你应该会了。
王爽的教材,就是一滩垃圾,学着学着,就被误导了。
没有任何关系,各个段都是独立的,实验5的code是指令段,data是数据段,stack是栈段,没有联系呀
机器语言自己看的啊
data, stack 和 code段地址没有任何关系,保存在哪个寄存器,完全是x86体系结构决定的。