汇编语言如何取段地址的

mov ax,1000hmov ds,axmov [0],cs 我不明白他是如何取段地址的,为什么会取DS段的地址

代码段(code段)的段基址是有CPU自动装入cs段寄存器中,数据段(ds段)和堆栈段(ss段)的段基址要人为在assume指令后装入,
例如要装入数据段的段基址可以用
MOV AX,DATA
MOV DS,AX
这么两条语句读出并保存在都是段寄存器中

下边是一段程序,请自己对照查看方法
DATA SEGMENT ;数据段定义

INDAT DB 8

DATA ENDS

CODE SEGMENT ;代码段定义

ASSUMECS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX ;初始化DS,也就是将数据段的基地址读入DS寄存器中

MOV DL,INDAT

OR DL,30H

MOV AH 2

INT 21H

MOV DL,'D'

MOV AH,2

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-10
寄存器DS是默认的数据段地址存储位置,在没有指明具体的存储段地址的情况下,以DS内的段地址为当前段地址,mov [0],cs与mov [DS+0] ,cs是等价的,需要提取其他段的数据可以这样实现:mov ax,2000Hmov DI,axmov [DI+0],cs
第2个回答  2015-06-07
mov ax,1000h  ;1000H 是立即数
mov ds,ax    ;设定段寄存器
mov [0],cs   ;这是非法指令

楼主所给出的这三条指令,根本就没有取段地址的意思。
况且,还有一句是错的。

这样的问题,本来就不成立。
怎么能用来挑战高质量的回答?

组织高质量团赛的“专家”们,太需要提高自身的专业水平了。
第3个回答  2013-07-10
这是规定的记住就可以了、像CS、IP默认的段地址是ES、你想要改变的话在它前面加上想要的段地址和冒号

汇编语言如何取段地址的
代码段(code段)的段基址是有CPU自动装入cs段寄存器中,数据段(ds段)和堆栈段(ss段)的段基址要人为在assume指令后装入,例如要装入数据段的段基址可以用 MOV AX,DATA MOV DS,AX 这么两条语句读出并保存在都是段寄存器中 下边是一段程序,请自己对照查看方法 DATA SEGMENT ;数据段定义 IND...

汇编语言中的如何寻找地址的
1,立即寻址方式 操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段,这种操作数成为立即数。例:mov al,5 执行完指令后al的值为05h 2,寄存器寻址方式 操作数在寄存器中,指令指定寄存器号。例:mov ax,bx 3,直接寻址方式 操作数的有效地址包含位移量的一种成分,其值就...

汇编语言:SI、DI、BX、BP、SS、DS分别是什么?怎样根据这些求物理地址...
si、di分别是源、目的变址寄存器,bx是数据基址寄存器,bp是栈基址寄存器,SS、DS是段地址寄存器。物理地址=段地址×16+偏移地址,指令中出现BP作地址,则其段地址为SS,否则就为DS。汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时...

汇编语言中取变量段地址
变量的段地址:就是该变量所属存储器的段基址,比如你定义的数据变量,一般都存放在数据段DS 那么该变量的段地址就是DS的段基址,

关于汇编语言存储器的分段 一小段的首地址是啥?段起始地址?怎么看出 ...
段地址0000h*16(10H)也就是00000H 加上偏移地址也是0000H就是00000H。一个段的空间最大是64KB 也就是偏移地址从0000H-FFFFH。有一点要注意:段地址*16必然是16的整数倍所以一个段的起始地址也应该是16的整数倍。但是好像并没有一个小段 的说法,段的提出只是我们在编程中的一种安排,比如我要...

求汇编语言将一个内存块拷贝到指定地址的代码
用BX和LOOP实现阿 MOV AX,段地址1 MOV DS,AX MOV AX,段地址2 MOV ES,AX MOV BX,偏移地址1 MOV SI,偏移地址2 SUB AX,AX MOV CX,复制数量(字节或字或其他)S:MOV AX(或其他),[BX]MOV ES:[SI],AX ADD BX,2 ADD SI,2 LOOP S 大致是据你情况修改 ...

汇编语言:SI、DI、BX、BP、SS、DS分别是什么?怎样根据这些求物理地址...
有个公式: 物理地址 = 基础地址 + 偏移地址 = CS*10H(基础地址)+ IP(偏移地址)\\x0d\\x0a CS: 16位段寄存器,存放当前代码段的段地址\\x0d\\x0a IP: 存放下一条要执行的指令的偏移地址\\x0d\\x0a \\x0d\\x0aLZ如有不明白的地方,可追问 ...

...汇编语言。求助!如何计算题目中的段起始地址和末地址?2.39题。_百 ...
(1)51000h~60FFFh (2)24680h~3467Fh (3)0B800h~1B7FFh (4)90000h~9FFFFh 将段地址后面加一个0,此即为首地址,将其加上FFFFh后所得的结果即为末地址。

内存寻址中段地址如何确定?如果要用某个段寄存器指出段地址,指令中如何...
1 内存寻址中段地址是由计算机的编译器分配的,它根据计算机当前内存实际使用情况,专为用户分配一个合适的固定的地址空间。2 要用某个段寄存器指出段地址,可以使用下列指令 :MOV AX,CS ;将代码段的段地址送给累加器 MOV AX,DS ;将数据段的段地址送给累加器 MOV AX,ES ;将...

汇编语言中段地址一般用什么符号表示
是汇编语言程序转移的地址?用字母起头(可以是意思相当的英语单词),后面可以跟数字 别太长了,原则上不超过8个字符

相似回答