2685|3

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

这几句汇编编译后是什么样的? [复制链接]

;bit-addressable byte RAM
BRAM   SEGMENT DATA     BITADDR
          RSEG    BRAM
status:        DS      1
flag1          BIT     status.0
flag2          BIT     status.1
flag 3         BIT     status.2


程序的意思是想在RAM区的位寻址区定义几个标志位,我想问:
1 它怎么不用SBIT定义位变量而用本应是定义SFR可寻址位的BIT定义?
2 关于可重定位变量的定义我不太懂,如果我在后来程序中使用了20H~2FH的某几个byte(例如作为数据暂存区使用),编译器也能自动避开那几个BYTE定义status么?
3 那个BITADDR是自己起的名字,整个程序除这里写了一下再没出现过了,它干嘛用的?

最新回复

sbit是C51语言增加的一个类型,汇编中无。sbit对应的SFR区域并非RAM区。 编译器编译时会自动避开已经显性指定被占用的地址空间。如果程序员自己硬性指定不同的变量占用同样的地址空间,那会报错。  详情 回复 发表于 2009-8-1 10:43
点赞 关注

回复
举报

86

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1 它怎么不用SBIT定义位变量而用本应是定义SFR可寻址位的BIT定义?
----------
sbit 是在SFR的地址范围内(80H-FFH),不是RAM区

2 关于可重定位变量的定义我不太懂,如果我在后来程序中使用了20H~2FH的某几个byte(例如作为数据暂存区使用),编译器也能自动避开那几个BYTE定义status么?
---------------------
用C语言定义变量,或用汇编语言并遵循其变量定义约定,就没有问题

3 那个BITADDR是自己起的名字,整个程序除这里写了一下再没出现过了,它干嘛用的?
------------------
BITADDR 一般只用BIT就可,是KEIL汇编语言关键词,表示所定义的SEGMENT要处于可位寻址区域
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
定义一个处于位寻址区的SEGMENT,现在更常用的语法像这样
my_bit_seg segment bit
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
sbit是C51语言增加的一个类型,汇编中无。sbit对应的SFR区域并非RAM区。

编译器编译时会自动避开已经显性指定被占用的地址空间。如果程序员自己硬性指定不同的变量占用同样的地址空间,那会报错。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表