汇编语言段地址的问题

2024-12-28 07:05:51
推荐回答(5个)
回答1:

楼主说的: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

回答2:

楼主说的:CODE段、DATA段、STACK段,这些,

应该是编程时,自己写的段名称吧?

段名称,是自己瞎编的,不是非得写成 CODE ... 。

编程时写的段,是:【逻辑段】。

编程时,你可以编写千千万万个【逻辑段】。

段名称,由你自己随便定义。(当然,随便,也有一定的限制。)

但是,当程序运行时,CPU 只能用四个【逻辑段】。

用那四个呢? 你应该会了。

王爽的教材,就是一滩垃圾,学着学着,就被误导了。

回答3:

没有任何关系,各个段都是独立的,实验5的code是指令段,data是数据段,stack是栈段,没有联系呀

回答4:

机器语言自己看的啊

回答5:

data, stack 和 code段地址没有任何关系,保存在哪个寄存器,完全是x86体系结构决定的。