汇编:获取段地址的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编:获取段地址的问题相关的知识,希望对你有一定的参考价值。
程序里面有一个data数据段、一个codeseg代码段
在代码段中执行
mov ax,data
请问在实际执行过程中,这一句是怎么实现的?data段并没有指定地址,也就说data的空间应该是随机分配的。难道在本条语句中,data是使用偏移地址来确定的?
可以详细讲讲连接程序是如何分配段地址的么?分配出的段地址又是如何表示的?本人新手,先谢谢了~
追答连接程序如何分配段地址这我也不清楚,你只要知道只要你定义了一个段(数据段或代码段或其他),段名即表示该段的段地址
本回答被提问者采纳8086汇编 段寄存器
8086汇编 段寄存器
段寄存器存放内存中不同地址段的存储,专门的寄存器存放段地址来提供使用。
8086CPU中主要使用4个段寄存器下面会有说明。
CS - 代码段寄存器
一、说明
CS 代码段寄存器、专门存储代码指令地址的寄存器、它与指针寄存器IP配合使用。
- 功能:CS:代码段地址存储
- 功能:IP:代码段偏移地址存储
二、使用
三、解析
1、案例
CS与IP根据地址计算得出内存地址,通过地址总线传输查找到内存地址中对应的3字节大小的指令,在通过数据总线取出发送给控制器执行,结果修改AX寄存器值。当任务执行完成后由于这条指令为3字节,IP的寄存器会加3、再次合成内存地址后会依次执行剩下指令。
2、案例
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(2)IP = IP + 所读取指令的长度,从而指向下一条指令;(3)执行指令。 转到步骤 (1),重复这个过程。
DS - 数据段寄存器
一、说明
DS 数据段寄存器、专门存储数据内存地址的寄存器、它与DI变指寄存器配合使用。
- 功能:DS:数据段地址存储
- 功能:DI:数据段偏移地址存储
二、使用
1、赋值使用
; ax 存放数据内存地址 mov ax, 123BH ; 将 ax 内存地址 存入ds数据段 mov ds, ax ; di 存入偏移地址0 mov di, 0
三、解析
SS - 栈段寄存器
ES - 附加段寄存器
以上是关于汇编:获取段地址的问题的主要内容,如果未能解决你的问题,请参考以下文章
汇编数据段地址问题 看我的源代码,从反汇编的代码中可以看到段地址DS应该为075A 但是D命令查看的结果不是