灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4872回复:0

[系统教程]经典汇编语言教程:4.4.3 记录类型的定义

楼主#
更多 发布于:2012-09-23 09:06
1、记录类型的说明
汇编语言的记录类型与高级语言的记录类型不同,它是为按二进制位存取数据提供方便的。记录类型的说明要用到另一个保留字RECORD,其说明格式如下:
记录名 RECORD 字段[, 字段, ……]
其中“字段”代表:字段名:宽度[=初值表达式]
解释:1、记录名代表该记录类型;
2、记录类型可以由多个字段组成,每个字段之间要用逗号','分开;
3、字段的属性包括字段名、宽度和初值;

4、字段的“宽度”表示该字段所占的二进制位数,它必须是一个常数,并且所有字段的宽度之和不能大于16;如果记录的总宽度大于8,则系统为该记录类型分配二个字节,否则,只分配一个字节;
记录的最后一个字段排在所分配空间的最低位,然后对记录中的字段依次“从右向左”分配二进制位,左边没有分完的二进制位补0;

5、初值表达式给出的是该字段的缺省值。如果初值超过了该字段的表示范围,那么,在汇编时将产生错误提示信息;如果某字段没有初值表达式,则其初值为0。
例如:
COLORRECORD BLINK:1,BACK:3=0, INTENSE:1=1, FORE:3
FLOATRECORD DSIGN:1,DATA:8, ESIGN:1, EXP:4
记录类型COLOR有四个字段:BLINK、BACK、INTENSE和FORE,它们的宽度分别为:1、3、1和3,所以,该记录类型共有8位二进制,系统分配给它一个字节。

记录类型COLOR的二进制位分布如右图4.9所示。

图片:04-9.gif


图4.9 记录类型COLOR的二进制位分配示意图

记录类型FLOAT用来模仿《计算机原理》中的浮点数表示法,它也有四个字段:
DSIGN(尾数的符号位);
DATA (尾数);
ESIGN (指数的符号位);
EXP (指数)。

图片:04-10.gif


图4.10 记录类型FLOAT的二进制位分配示意图
它们的总宽度是14,所以,系统要给它分配二个字节。记录类型FLOAT的二进制位分布如右图4.10所示。

喜欢0 评分0
游客

返回顶部