《内存地址和内存内容的关系.ppt》由会员分享,可在线阅读,更多相关《内存地址和内存内容的关系.ppt(23页珍藏版)》请在三一办公上搜索。
1、理解内存地址和内存内容,汇编语言理解8086内存地址空间主讲人:王驰,汇编存储单元的地址和内容,内存地址空间是一个抽象的概念。就像你家的门牌号。比如门牌号是100。人家就知道到门牌号100的地方去找你。而内存就像你家的房子,是物理上存在的,你住在你家的房子里,汇编存储单元的地址和内容,程序加载到内存地址空间是一个笼统的概念,意思就是你(可以认为是数据)住到你家(门牌号为100的地方)了。而在物理上,数据是存放于物理地址中的,就像你住在你家的房子里。地址空间不是物理上存在的。只是对地址的描述(就像门牌的概念)。数据是存在内存中的。,汇编存储单元的地址和内容,内存地址空间是一个抽象的概念。就像你家
2、的门牌号。比如门牌号是100。人家就知道到门牌号100的地方去找你。而内存就像你家的房子,是物理上存在的,你住在你家的房子里,汇编存储单元的地址和内容,存储单元地址:8086系统中,为了标识和存取每一个存储单元,给每个存储单元规定一个编号,这就是存储单元地址 存储单元的内容:一个存储单元中存放的信息称为该存储单元的内容。8086系统中一个存储单元可存放一个字节数据。,从图可看到,地址为34560H的存储单元中的内容是34H;而地址为34561H的字节存储单元中的内容是12H。,汇编存储单元的地址和内容,8086CPU的地址线是20位的,存储器的物理地址是20位,而8086CPU中的寄存器都是1
3、6位的。那么如何用16位寄存器来表达20位物理地址信息?,汇编存储单元的地址和内容,思考:为什么8086CPU的地址线设计为20位(或内存单元的物理地址为什么设计成20位?)?如果设计成16位(和寄存器的宽度一样),内存访问的地址表达就简单了。请问设计者这样设计的优点是?可以扩大CPU的访存空间。220=1024KB,216=64KB,汇编存储单元的地址和内容,问题解决方法1:将存储器分成若干段,对某一单元的地址用段地址和相对于段地址的偏移量(偏移地址)综合表示。这种方法类似于电影院里对座位的编号,这种分段表示可有效缩减地址的长度。,汇编存储单元的地址和内容,汇编存储单元的地址和内容,这样上图
4、中第一个标注单元的地址为:段地址为:00000000000000000000偏移量(或偏移地址)为:01它的物理地址为:段地址+偏移量即:000000000000000000001,汇编存储单元的地址和内容,这样上图中第二个标注单元的地址为:段地址为:偏移量(或偏移地址)为:10它的物理地址为:段地址+偏移量即:,汇编存储单元的地址和内容,汇编存储单元的地址和内容,-逻辑地址(2个16)是程序中使用的地址,它由段基址和段内偏移值所组成,段基址与段内偏移值都为16位的二进制数。段地址:段起始地址的高16位(DS)偏移地址:段内相对于段起始地址的偏移值(16位)(有效地址EA),汇编存储单元的地址
5、和内容,-物理地址(1个20)也叫实际地址或绝对地址,是CPU访问存储器时实际使用的地址,为20位地址。,汇编存储单元的地址和内容,小结:(1)在1M字节的存储器里,每一个单元都有一个唯一的20位地址,称为该单元的物理地址。CPU访问存储器时,必须先确定要访问的存储单元的物理地址才能取得(或存入)该单元的内容。,汇编存储单元的地址和内容,(2)根据要求可把1M字节地址空间划成若干逻辑段。每个逻辑段必须满足两个条件:一是逻辑段的起始地址(简称段首址)必须是16的倍数(即末尾4位是0);二是逻辑段的最大长度为64K。,汇编存储单元的地址和内容,(3)20位物理地址由16位段地址和16位偏移地址组成
6、。段地址是每一段的起始地址,其低4位一定是0,这样就可以规定段地址只取段起始地址的高16位来表示。偏移地址是指在段内相对于段起始地址的偏移值。,汇编存储单元的地址和内容,汇编存储单元的地址和内容,段寄存器(CS、DS、SS、ES、FS、GS)存放段地址,确定一个段的的起始地址.用途各不相同:代码段(CS):存放当前正在运行的程序数据段(DS):存放当前运行程序所用的数据,或串处理指令中的源操作数,汇编存储单元的地址和内容,堆栈段(SS):定义堆栈(后进先出)的所在区域附加段(ES):附加的数据区,或串处理指令中的目的操作数各段在存储器中的分配:由操作系统负责负责,但需要时也可指定.,汇编存储单元的地址和内容,汇编存储单元的地址和内容,练习用DEBUG在内存中输入命令A编程并逐条运行,查看结果并截图,采用立即寻址方式把数89D8H送到内存单元1373:1100中用jmp指令 jmp 1373:1100,然后用R指令查看CPU状态,体会代码和数据,