(二)高级汇编伪指令语句1.结构和记录
(1)结构
①结构类型数据定义伪指令
80x86宏汇编使用伪指令STRUC和ENDS建立一种结构类型的数据,然后通过结构类型数据的预置,便可方便地访问结构中的各数据项,而不需要对操作数地址表达式进行繁锁的计算。 结构类型数据定义的格式: 结构名 STRUC
┆
字段名 数据定义伪指令定义符 表达式
┆
结构名 ENDS
说明:结构类型数据是用STRUC和ENDS括起来的数据定义语句序列,这时数据定义语句中的符号称为字段名。注意:
●定义结构时,STRUC和ENDS必须成对出现,缺一不可。
●结构名是为结构起的名字,是任意选定的。
●同时在同一结构定义中,字段名不得重名。
②结构变量说明与赋初值
结构类型数据的定义只是告诉汇编程序已存在这样一种形式的变量,还必须对结构进行存储分配和预置后才能真正产生结构数据的变量。结构类型数据预置的格式:
结构变量名 结构名 <字段值表>说明:
●DATAMAX和DATATXN是结构变量名。
●结构变量名是任意的,由程序员自行设定。
●结构变量名与具体的存储空间和数据相联系,在程序中可直接引用。
●字段值表用来给结构变量赋初值,字段值必须用尖括号括起来,其排列顺序和类型应该与结构定义时的各字段相一致,各字段值之间用逗号隔开。如果采用定义结构时的初值,则仅写一个逗号;若所有字段采用定义时的初值,则仅写一对尖括号。
注意:并不是所有的字段都可以重新赋初值,只有一项数据的字段可重新赋值。在程序中引用结构变量,可直接写结构变量名:引用结构变量的某一字段时,要采用下述格式:结构变量名.字段名
(2)记录
记录是一种处理按位计算信息的数据类型。记录定义的格式:
记录名 RECORD 字段名:宽度[=表达式][,……]说明:
●记录名和字段名必须具有惟一性;
●宽度表示字段所占的位数(1~16位),如果各字段的宽度和大于8位,那么汇编程序按字处理,否则按字节处理。若总值数少于8位或16位,则所有字段都右对齐到字或字节的最低有效位置。表达式赋给相应字段的初值,是可选择的。
●记录的各字段宽度之和不得大于16位。记录也必须经过预置才能产生记录类型数据变量,才能真正占有内存。记录预置的格式:
记录变量名 记录名 <字段值表>
说明:字段值表是赋给各字段的初值,必须用尖括号括起来,表中各项间用逗号分隔,各项顺序应与记录定义时相一致。若某字段采用时的初值,则该字段用逗号表示;若各字段均采用定义时的初值,则仅用尖括号。
对记录进行操作的专用操作符有3个,即:记录字段名,WIDTH和MASK。①记录字段名
这个操作符无操作数,可直接引用,它的结果是一个立即数,表示该字段的最低位移到所在记录最右边(0位)所需的移位次数。②WIDTH
返回记录或记录某字段的宽度。
格式:WIDTH 记录名或记录字段名③MASK
格式:MASK 记录字段名
MASK的结果是一个8位或16位二进制数,这个二进制数中相应于该字段的各位均是1,其余各位均是0。
记录操作符可以与运算符NOT、OR、AND、SHL、SHR配合使用。
关于记录、记录字段及记录变量的调用,由于记录有自己专用的操作符,故利用这些操作符可对记录及其字段进行操作。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |