汇编指令中 db 00 什么意思啊

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:48:05
在od中经常看到 db 00,网上说是对齐区段,那对齐区段有什么用,db 00的作用到底是什么,谢谢

CPU存取内存中的字型(两个字节)数据的时候如果这个地址正好是偶数(如果是386的处理器的话应该是4的倍数,也就是一个双字)的话,存取的速度最快,想想看,如果前面若干个数据的字节数之和如果是奇数(内存中的数据也有字节型的,所以可能产生数据的字节数和为奇数的情况.字节型的数据占用一个字节,对不对齐对存取的速度没影响)的话,那么如果再定义字型数据的话,就不能保证这个数据地址是偶数了,但如果加上一个字节的话,地址就又是偶数了
解决这个问题最好的方法是先定义双字的数据,然后是字,最后是字节和字串的数据,这样就不用考虑对齐的问题了

PS(不知道你对内存了解多少,所以写这些):一个内存单元对应一个内存的地址,一个内存单元能存储一个字节的数据,多于一个字节的数据是通过相邻的几个内存单元来存储的,这个多于一个字节的数据的地址是这几个内存单元中的第一个内存单元的地址

好像高级的CPU没有这个对齐的问题了,好像在别的地方看过

楼主说的“od”,我不懂。应该是个什么全称的缩写吧,且不去管它。

别的版本的汇编语言,我也不知道,只知道一点Intel 8086/8088的汇编语言。

关于对齐区段,有这么几个伪指令,称作:调整偏移量伪指令。

1、偶对齐伪指令EVEN
偶对齐伪指令格式:
EVEN
伪指令的作用是:告诉汇编程序(Assember),本伪指令下面的内存变量从下一个偶地址单元开始分配。
如果下一个偏移量是偶地址,那么,该伪指令不起作用,否则,汇编程序将空出一个字节,从下一偶地址开始为其后变量分配内存单元。
假设有下列变量定义,并且变量B1的偏移量是偶数,其内存单元分布如图4.2所示。
B1 DB 12H ;为了表示方便,不妨再假设其偏移量为:xxxx0H
W1 DW 4567H
在上述定义情况下,在许多微机系统中,当需要读变量W1及其后面的字内容时,硬件将按图4.3所示的方式分二次读出该字内容,再拼接成一个字内容,这时,无疑需要二个读内存周期,从而影响程序执行的速度。
出现上述问题的主要原因就是字变量W1在数据段内的偏移量是奇数,为了保证其偏移量是偶数,需