当前位置: 代码迷 >> 汇编语言 >> 新手三个有关问题
  详细解决方案

新手三个有关问题

热度:5911   发布时间:2013-02-26 00:00:00.0
新手三个问题
1.标号,符号地址和段名可不可以理解为指针呢?
  2.在将段地址送到段寄存器使用的是mov ax,data_seg;表示很不理解。data_seg是段名,是符号地址,mov是将符号地址的内容传送到寄存器中。而这里明显需要将段的起始地址送到ax中,这里为什么不用lea呢?用lea的话直接就是将data_seg的值送到ax中!!
  3.ENTER指令的操作过程不是很理解:ENTER imm16,imm8,第一步,push(BP),第二步,(BP)<-(SP),第三部(BP)<-(SP)-imm16.第三步是建立栈顶的SP,这不是啊!!!怎么理解啊!!!

------解决方案--------------------------------------------------------
简单说一下,仅供参考。
1,指针即地址
2,lea装入的是偏移地址,mov ax,data定义的是段地址
3,
enter分三步完成创建堆栈框架,如enter 8,0;分解步骤如下:
1),push bp
2),mov bp,sp
3),sub sp,8
作用就是为一个局部变量分配一个指定空间。如上指令,enter为局部便令分配了一个8字节的栈空间。
------解决方案--------------------------------------------------------
(1) 标号:解析为地址引用
(2) LEA可以做到这个 ,mov ax,data_seg,data_seg 是地址引用,不是你说的指针,要说指针应当说的是(e)si ,(e)di
(3) 你画小端模式的堆栈图,一看就知道了,这怎么不好理解?
  相关解决方案