当前位置: 代码迷 >> 汇编语言 >> 51汇编语句有关问题
  详细解决方案

51汇编语句有关问题

热度:3817   发布时间:2013-02-26 00:00:00.0
51汇编语句问题
从一段程序中摘抄几句
  FLAG EQU 38H
  。
  。
  SEC DATA 38H
  。 
  。
  SETB FLAG
  .
  .
  CLR FLAG

高手们,我不理解的是FLAG EQU 38H 和 SEC DATA 38H的地址不冲突吗?这两句到底有什么本质区别呢?EQU是“替换”的意思,DATA是数据存储器地址定义,那么后边 SETB FLAG 不是把地址38H置1吗,这和DATA的地址不就冲突了吗?为什么这段程序编译后执行正常呢?

------解决方案--------------------------------------------------------
FLAG是位寻址,即其Data地址从20H开始,一位即一个地址,比如位寻址的2H实际上就是data地址20H的第2位,即20H^2,10H就是22H的第1位,这样38H应该就是……(自己计算好了,但绝对不会是data地址38H的)
而SEC是普通寻址,38H就是实际Data地址的38H,与位地址无关。
------解决方案--------------------------------------------------------
equ 在汇编语言中使用,相当于C语言中的#define
、DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。

 FLAG EQU 38H FLAG等于38H这个数
。 

SEC DATA 38H SEC这个变量放在地址为38H里面
  相关解决方案