汇编里面内存访问的一个小疑问

HowardS 2009-03-31 10:45:59
各位,问个简单的问题,在网上搜索了许久,都掌握不了要点。

在linux里面用nasm写一段小代码

如:
...
prompt_msg1 db "abc",0
prompt_msg2 db "hi",0
...

编译成功后,我用GDB查看这两个变量的地址
输入命令 (gdb) x/2sb &prompt_msg1
得到
0x80493e4 "abc"
0x80493e8 "hi"

输入命令 (gdb) x/nfu 0x80493e4
查看0x80493e4这个地址存储的值,得到:
0x80493e4 97
97为a的ASCI的值

我刚开始接触汇编编程,现在搞不懂的是:
1. 0x80493e4和0x80493e8这两个是什么地址? 是真实的物理地址还是逻辑地址?
2. 0x80493e4这个地址存放在哪里?是放在内存里面吗?
3. 97这个数值是直接存储在0x80493e4的吗?怎么存的?从0x80493e4到0x80493e8存不了3个字节吧,如果不是,那么是怎么通过0x80493e4找到97的,0x80493e4上只能存0或1吧,存储97要8个bit

问题太多了,请大家帮下忙,谢谢。


...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-03-31
  • 打赏
  • 举报
回复
DOS系统没有虚拟内存。
cnzdgs 2009-03-31
  • 打赏
  • 举报
回复
1字节是8位,地址是按字节描述的。
ufofind 2009-03-31
  • 打赏
  • 举报
回复
你去看一下杨季文的书
80286开始有虚拟的概念
HowardS 2009-03-31
  • 打赏
  • 举报
回复
还有个,如果是在dos下用masm,也会有虚拟地址和虚拟内存吗
HowardS 2009-03-31
  • 打赏
  • 举报
回复
谢谢,不过能不能讲详细点扫扫盲。

为什么是4字节,计算机里面的最小单位不是bit吗

cnzdgs 2009-03-31
  • 打赏
  • 举报
回复
1、虚拟地址
2、虚拟内存
3、0x80493e4到0x80493e8是4字节。1字节是8位。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧