首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

51汇编语句有关问题

2012-03-28 
51汇编语句问题从一段程序中摘抄几句FLAGEQU38H。。SECDATA38H。。SETB FLAG..CLR FLAG高手们,我不理解的是FLA

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里面

热点排行