当前位置:编程学习 > 汇编语言 >>

汇编 db 内存分布问题

a db 0 string db “LEN”,0 上面那段汇编代码有问题,我用mov si,[string] 调试的时候打印出来的竟然是"/0EN", 很奇怪,请高手们帮帮忙哈!
补充:另外我补充一下哈,把a     db      0改成a  dw    0就可以正常运行了
打印出来的就是"LEN"了
追问:这两条指令一样的吧,都是把16位地址(实模式下)赋给si,汇编下像我上面
那种赋地址方式是错误的吗?诚恳请教!结合我这个问题怎么理解呢?
答案:可用 mov si,word ptr [string] 指令解决。

如果是想将string的地址给si, 用MOV SI,OFFSET string即可。
其他:hvnwycyfmr17765824842011-09-27 13:44:37tnwbngpeosCPU存取内存中的字型(两个字节)数据的时候如果这个地址正好是偶数(如果是386的处理器的话应该是4的倍数,也就是一个双字)的话,存取的速度最快,想想看,如果前面若干个数据的字节数之和如果是奇数(内存中的数据也有字节型的,所以可能产生数据的字节数和为奇数的情况.字节型的数据占用一个字节,对不对齐对存取的速度没影响)的话,那么如果再定义字型数据的话,就不能保证这个数据地址是偶数了,但如果加上一个字节的话,地址就又是偶数了 解决这个问题最好的方法是先定义双字的数据,然后是字,最后是字节和字串的数据,这样就不用考虑对齐的问题了 PS(不知道你对内存了解多少,所以写这些):一个内存单元对应一个内存的地址,一个内存单元能存储一个字节的数据,多于一个字节的数据是通过相邻的几个内存单元来存储的,这个多于一个字节的数据的地址是这几个内存单元中的第一个内存单元的地址 好像高级的CPU没有这个对齐的问题了,好像在别的地方看过 

上一个:程序的反编译是否需要 用到 汇编语言, 学习汇编语言之前需要 了解和学习什么,求指教
下一个:汇编语言中操作数寻址方式有哪些,各自有什么特点,怎么区分呢?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,