汇编语言的段地址与偏移地址的一点小心得:8086CPU是为了方便存储段地址才规定其一定是10H的倍数的
来源:互联网 发布:获取键值对java 编辑:程序博客网 时间:2024/05/22 06:15
如下言论与解析:
具有16位CPU的微机内部有20根地址总线,编码区间为00000H~0FFFFFH,可直接访问1MB(2e20)的内存空间。
16位微机把内存空间划分成若干个逻辑段,每个逻辑段要求如下:
1>逻辑段的起始地址(段地址)必须是16(10H)的倍数,即最低四位二进制数字全部为零,也就是最低一位十六进制数字为零,如:123CH, 43AFH.(有很多书上将武五位地址除去零以外的部分称作段地址,我认为,将其称为五位更好理解,并且也有书上是这么讲的,无碍)。
2>逻辑段的最大容量为64KB,由16位的指针寄存器决定。即2e16 = 64KB。
解析:1>为了用两个四位(十六进制,以下不再赘述)寄存器来存储(表示)一个五位的内存地址,计算机将段地址的末尾位规定为0,即,使得短地址为10H的倍数,这样,则秩序存储前四位于寄存器中,使用时再通过地址加法器并与相应的偏移地址计算得到实际的物理地址。
3>对于一个段地址,其与偏移地址配合可表示的内存空间有64KB即一个段地址可以表示的最大容量。
4>鉴于段地址只能是10H的倍数,对于两个相邻的段地址,偏移地址都为0000H时,其两者在内存空间上相差10H,而一个段地址配合偏移地址所能表示的空间有64KB之大,即10000H个存储单元,所以两个段地址与偏移地址(各自的)配合后所能够表示的内存单元很有可能重叠!所以,同一个物理地址可以有多个逻辑地址,且多个逻辑地址的段地址都不相同。
5>对于16位微机,有20根地址总线,所访问的1MB内存中,最多可分成64KB个段即10000H((0FFFFFH+1)/10H),且这些段相互重叠;至少则可分成16个互不重叠的段(2e10/2e16)
可能有很多跟我一样的菜鸟有这样的问题,给出一个段地址和一个偏移地址可以计算出实际的物理地址,但是就是想不清楚
什么要乘以10H,总结一下就是题目那句话:8086CPU为了可以用两个四位寄存器存储一个五位内存地址,方便存储段地址,才设
定其为10H的倍数的,我的问题……够菜吧?!哈哈哈
- 汇编语言的段地址与偏移地址的一点小心得:8086CPU是为了方便存储段地址才规定其一定是10H的倍数的
- 8086段地址为什么是16的倍数?
- 8086汇编语言 取得一个标号的段地址CS与偏移地址IP
- 汇编语言学习之“段地址*16+偏移地址=物理地址”的本质
- 关于cpu分段的段地址计算
- ip地址段的
- 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。
- 关于段地址,段的起始地址,基础地址
- 关于段地址,段的起始地址,基础地址
- [汇编语言]编译后的段地址是什么性质的地址?内存地址吗?
- 8086汇编语言 段地址与偏移地址存在CS,IP寄存器中
- 网通的IP地址段
- 网通的IP地址段
- 网通的IP地址段
- 网通的IP地址段
- 为何实模式要采用段地址和偏移地址的方式来寻址
- 2.7“段地址×16+偏移地址=物理地址”的本质含义
- 段地址和偏移地址
- 【健康产业的商机】——新世纪的最大商机就是它,你怎么看?
- 单链表反转的递归实现(Reversing a Linked List in Java, recursively)
- TCP/IP详解卷2:实现 第一章 笔记四
- 什么是网络编程,Winsock ,SDK
- SDUTOJ 2482 二叉排序树
- 汇编语言的段地址与偏移地址的一点小心得:8086CPU是为了方便存储段地址才规定其一定是10H的倍数的
- 关于并发服务器的看法
- JNI的某些数组和字符串类型转换
- VNCViewer Windows下远程连接Linux桌面
- 开机动画、反编译、Android 中执行命令
- 为啥我的文字都是顶格的呀?
- 容易搞混的逻辑运算符和位运算符
- Tomcat配置之下载与运行
- C# OpenFileDialog和PictrueBox