当前位置: 代码迷 >> 汇编语言 >> linux 下汇编有关问题2,高人指教!
  详细解决方案

linux 下汇编有关问题2,高人指教!

热度:3412   发布时间:2013-02-26 00:00:00.0
linux 下汇编问题2,高人指教!!!!!
4.     bss段是堆栈段吗?如果不是在linux下的汇编能不能定义堆栈段?

5.mov指令说明中可以用段寄存器和内存位置直接进行操作,不知是怎么回事?好像在8086汇编中是不允许的,为什么在这可以了呢?

6.   使用xchg   当一个操作数是内存位置时,处理器的lock信号被自动标明,防止在交换过程中任何其他的处理器访问这个内存位置。---------不知这个lock信号是怎么回事?高人指点。

7.在介绍pushx时说操作的数据元素可以是8位立即数值,但是在介绍x是却只能是l和w,不知为什么?是写错了,还是我理解不对?



------解决方案--------------------------------------------------------
4. 段名是无关紧要的,不过通常bss是非初始化数据段。
5. 一直都可以呀。
6. lock锁定总线,这样其他处理器就不能访问内存了。
7. push 立即数,这个立即数编码上可以是8位的(0~255),但是实际压入栈的只能是16-bit或者32-bit数,取决于当前的运行模式。

------解决方案--------------------------------------------------------
4. 当然有了。
5. mov ax,data这里的data并非内存地址,而是data段的地址,是由汇编器直接生成的一个立即数。
就类似mov ax,1234等等。直接向段寄存器装入立即数是不行的。
7. 对于一个0~255的数,在指令中就被编码为一个字节了。
比如push 0,机器码是6a 00,0只占一个字节。但是压入栈的数据是16-bit或者32-bit的0,取决于当前是16位还是32位模式。