汇编中8086机器是如何存储16位字长的信息的?

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:50:45
它访问存储器时,机器为什么是以偶地址访问的?为什么访问奇地址的字单元时取一个字要访问两次?非常感谢

虽然没给分,但是本着学习的态度,也不必去到处找什么资料。我就把自己理解的和你说说,又不对的地方还请各位批评指正。
首先一个内存单元只能存放一个字节,即8位二进制。而一个字包含两个字节,即16位的二进制数,所以一个字存在内存单元时,一定是连续的两个内存单元的内容。
一个16位的数据存放的时候,要按照小端方式存,即低对低,高对高,
举个例子1234h(16进制数,相当于16位的二进制,每两个是一个8位)高8位对应的是12,低8位对应的是34。那么存的时候低8位34在上面(所谓上面是因为,地址是从上到下增加的,上面的地址最低,通俗点说就是最小),一般从段偏移地址0000开始存,而12则放在偏移地址为0001的位置(0001>0000所以是高地址吧)
所以当访问内存的时候,比如你要取1234h,cpu会先访问0000地址,取出34,然后再取0001,组合在一起才是1234h,所以访问的时候访问的是偶地址,即0000,否则访问奇地址,你取出来的就不是1234h了。这么说能明白么?
造成访问偶地址的原因,还是由内存存储数据的方式决定的,即一个单元只能存储一个字节,即8位

希望对你有所帮助!

上面讲得很好,不错,我只再补充一下:8086存放数据是高对高,低对低的,但不是所有的硬件都是这样存储的,有的硬件恰好相反!