汇编and的两个操作数是十16进制转汇编是怎么运算的

记录类型COLOR有四个字段:BLINK、BACK、INTENSE和FORE咜们的宽度分别为:1、3、1和3,所以该记录类型共有8位二16进制转汇编,系统分配给它一个字节

记录类型COLOR的二16进制转汇编位分布如右图4.9所礻。

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

记录类型FLOAT用来模仿《计算机原理》中的浮点数表示法它也有四个字段:

图4.10 记录类型FLOAT的二16进淛转汇编位分配示意图

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

在程序中,必须先说明记录类型然后才能定义该记录类型的变量。记录变量是把其二16进制转汇编位分成一个或多个字段的字节或字变量其定义格式与其它类型变量的定义方式类似,具体如下:

1、变量名即为该记录类型的变量名它可省缺。如果省缺则不能用符号名来访问该内存单元;

2、字段值表是给字段赋初值,中间用逗号','分开其字段值的排列顺序及大小应与该记录说明时各字段相一致;

3、如果记录变量的某字段鼡其说明时的缺省值,那么可用逗号来表示;如果所有字段都如此,则可省去字段值表但必须保留一对尖括号"<"、">"。

操作符WIDTH和MASK是作用于記录类型的两个专用保留字利用它们可得到记录类型的不同属性。

操作符WIDTH返回记录或其字段的二16进制转汇编位数即其宽度。其一般书寫格式如下:

操作符MASK返回一个8位或16位二16进制转汇编数在该二16进制转汇编数中,被指定记录或字段使用的对应位的值为1否则,其值为0其一般书写格式如下:

MASK 记录名 或 MASK 记录字段名

记录字段名是一个特殊的操作符,它本身也是操作数其返回值是该字段移到所在记錄的最低位所需要的位数,即该字段最低位在记录中的位置

假设有前面定义的记录类型FLOAT,那么有:

4.4.5 数据类型的自定义

在有了一些数据類型后,程序员还可定义这些数据类型的别名或指针类型表达这种定义的伪指令是TYPEDEF,其定义形式如下:

其中:“位距”是NEAR、FAR或PROC等

有了仩述定义之后,下面的变量说明就是合法的

标号是一种特殊的标识符,它代表代码段中的某个具体位置它主要用于表明转移的目标位置。其说明形式如下:

标号:  汇编语言指令   ;注释

解释:标号必须是一个合法的标识符在其后面紧跟一个冒号":",冒号与汇编语言指令之间要有分隔符通常用若干个空格、TAB来作分隔符,一般用分隔符使有关内容对齐为宜

4.6 内存变量和标号的属性

变量是一个符号地质,其值会根据其数据类型来对应从该地址以后的若干个存储单元中所存的数值标号也是一个符号地址,它所对应的存储单元中存放的是指令代码虽然它们在某些性质上有所不同,但它们都是一个符号地址代表一个存储单元的地址,所以它们都具有存储单元的属性。除此之外它们还有各自特殊的属性。

下面介绍内存变量和标号的属性及其有关操作符

段属性操作符(SEG)返回该标识符所在段的段地址。我們一般只会取内存变量所在段的段地址而很少取标号所在段的段地址。

由于SCORE和NAME在同一段中定义所以,寄存器AX和BX的值是相等的

4.6.2 偏移量屬性操作符

偏移量属性操作符(OFFSET)返回该标识符离它所在段的段地址有多少字节。一般情况程序员只会取内存变量的偏移量,而不太关心标號的偏移量

假设FIRST是数据段的第一个被定义的变量名,它的偏移量为0SCORE的偏移量为8,因为它要跳过二个双字其它如此类推。

由于NAME在SCORE之后且SCORE之后有二个字,占四个字节所以,BX的值要比AX的值大4


我要回帖

更多关于 16进制转汇编 的文章

 

随机推荐