关于汇编一点地方没看懂

来源:百度知道 编辑:UC知道 时间:2024/09/20 19:28:05
课件里是这样写的:
类型属性操作符(TYPE)是返回该变量所占字节数,或标号的“远”(FAR)、“近”(NEAR)类型。
例如: PEASON STRUC
NO DD ?
NAME DB 10 dup (?)
DW 1
PEASOM ENDS

B1 DB 1, 2, 3
W1 DW 200 DUP(1,2,30 DUP(10,20)), 101H, -1
PEOPLE PEASON <>

按属性TYPE的含义,TYPE B1、TYPE W1和TYPE PEOPLE的值分别为:1,2和16。

这里那个B1里不是占3个字节么?为什么TYPE是3?如果就看DB的字节的话那就是1,可如果这样,那后面的PEOPLE中就应该是DD的字节加上DB的,再加上DW的,那也不会是16啊..那个16是4+10+2加起来的吧....反正我就弄不明白到底是怎么算字节的.....晕拉.初学汇编...也可能是低级问题..请赐教拉~~

你只所以感觉晕,是因为书上没有明确说结构体的TYPE是如何算的,这也不能怪你,你已经学的很好了。

类型属性操作符(TYPE)是返回该变量所占字节数,或标号的“远”(FAR)、“近”(NEAR)的类型,即用DB、DW、DD、DF、DQ、DT定义的变量和用NEAR、FAR定义的标号的类型分别为1、2、4、6、8、10、-1、-2,而与后面的具体内容及内容的个数无关;所以TYPE B1、TYPE W1的值分别为1,2是正确的;
但结构体的类型是指它内部所包含的所有字节数,即为内部所有变量所占用的字节数之和,所以你提到的那个结构体的类型为16是正确的。

是你自己数错了字节数.
PEASON STRUC
NO DD ?
NAME DB 10 dup (?)
DW 1
PEASOM ENDS
这个结构体中,NO是双字类型,占四个字节,NAME是10个字节类型元素的数组,DW是初值为1的无名字类型量,占2个字节,加到一起刚好是10个字节.
至于后面的B1,DB的意思就是字节类型定义的变量,占1个字节;W1的类型用DW来定义的,字类型占两个字节,这样,TYPE运算符返回的结果都是正确的,没问题.

其实我不是很明白你的意思...
我是这样理解的...
TYPE xx 就是 xx 的类型占用的大小
B1 是 DB 就是1
W1 是 DW 就是2
PEOPLE 是 PEASON ,而PEASON 是一个 结构体,里面有1个DD,10个DB,1个DW
所以是4+10+2=16

以上是我的理解~呵呵

B1不是1,是3,你后面定义的数据1,2,3 每一个都占一个字节,加起来就是3 啊。记住不管是什么,db,dd,dw都算,后面的每个逗号分隔开的都占相应的字节数,明白了??