汇编 SIZE,length,type都是什么区别?
那几个都是数值回送操作符。这些操作符把一些特征或存储器地址的一部分作为数值回送。(1)TYPE格式:TYPE expression如果该表达式是变量,则汇编程序将回送该变量的以字节数表示的类型:DB(字节)为1,DW(字)为2,DD(双字)为4,DF(六字节的字)为6,DQ(4字)为8,DT(10个字节)为10。如果表达式是标号,则汇编程序将回送代表该标号类型的数值:NEAR为-1,FAR为-2。如果表达式为常数,则应回送0。例: 定义了字符串 ARRAY DW 1,2,3 对于指令 ADD SI,TYPE ARRAY汇编程序将其形成为 ADD SI,2 (因为上面定义了DW类型)(2)LENGTH格式为:LENGTH variable①对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元数②对于其他情况则送1例1: 定义 FEES DW 100 DUP(0) -----分配给FEES 100个单元对于指令 MOV CX,LENGTH FEES汇编程序将使其形成为 : MOV CX,100 例2: 定义 ARRAY DW 1,2,3对于 MOV CX,LENGTH ARRAY汇编将使其形成为: MOV CX,1 例3: TABLE DB ‘ABCD’对于指令 MOV CX,LENGTH TABLE形成为 MOV CX,1(3)SIZE格式:SIZE variable汇编程序回送分配给该变量的字节数。次值是LENGTH值和TYPE值的乘积。例①: 定义 FEES DW 100 DUP(0) -----分配给FEES 100个单元对于指令 MOV CX,SIZE FEES汇编程序将使其形成为 : MOV CX,200 例2:定义 ARRAY DW 1,2,3对于 MOV CX,SIZE ARRAY汇编将使其形成为: MOV CX,2 例3: TABLE DB ‘ABCD’对于指令 MOV CX,SIZE TABLE形成为 MOV CX,1
size 相当于TYPE与LENGTH的乘积,X1的类型为BYTE返回值1,LENGTH对DUP时返回返回值也是1,所以SIZE值为1。
size是:取变量数据项长度算符。
SIZE算符,汇编程序将回送分配给该变量的字节数,即
SIZE=LENGTH TYPE
例如:
ARRAY DW 50 DUP(0) 则
SIZE ARRAY=50 2=100
要注意:对字符串变量求其长度,使用SIZE不能达到目的。
例如:
ST DB ’ABCDEFG’ 则
SIZE ST值为1而不是7,欲求字符串长可用COUNT EQU $-ST,则COUNT值为7,其中$为定义ST一串字符后下一个可用的偏移地址。
扩展资料:语法
sizeof有两种语法形式,如下:
一、sizeof(type_name);//sizeof(类型);
二、sizeof object;//sizeof对象;
例子
int i;
sizeof(i);//ok
sizeof i;//ok
sizeof(int);//ok
sizeof int;//error
sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。sizeof对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。
参考资料来源:百度百科-sizeof
no db ?
nn db 'asd'
mmm db '9999'
data ends
cha data 10 dup(<>)
size cha
length cha
type cha各是多少?
TYPE是检验内存单元 BYTE 是1 WORD是2 DWORD是4
LENGTH是检测内存单元的长度的.如果你定义的是DB那么他就表示的是字节长度
如果定义的是DW就是表示的是字的长度.总之,他表示的就是单元数
SIZE表示的是字节长度,
TYPE 为1
SIZE 8
LENGTH 8
因为你定义字符串第一个NO以字节为单元予留了一个单元,NN一个字符串定义的为字节单元占3个 第三个字节单元占4个单元 所以三个加起来也就8个字节单元data struc
no DW ?
nn dW 'asd'
mmm dW '9999'
那么
TYPE 为 2
SIZE 16
LENGTH 8
1、type 返回的是类型。例如 KK DB 23
MM DW 23
type KK的值是1,type MM的值是2,你的题中DATA是定义的结构,返回值是结构的总的字节数,所以是8
2、length返回的是长度,原则是:如果第一个操作数是DUP定义的,返回重复次数,如果第一个操作数不是DUP定义的,返回1.
例如 KK DB 23 DUP( 12,34,54),255,456
MM DW 255,456 23 DUP( 12,34,54)
length KK的值是23,length MM的值是1,你的题中返回值是10
3、size=length*type
你的题中返回值是10*8=80
dat2 dw 5 dup (2,4)
2,4也是dw类型,2,4为一个单元,4个字节
民以dat2占据了一共是5*4 = 20个(byte)
wo da cuo le
张邢雷替: data struc no db ? nn db 'asd' mmm db '9999' data ends cha data 10 dup(<>) size cha length cha type cha各是多少? TYPE是检验内存单元 BYTE 是1 WORD是2 DWORD是4 LENGTH是检测内存单元的长度的.如果你定义的是DB那么他就表示的...
界首市18486374396: 汇编,TYPE,SIZE,LENGTH - ?
张邢雷替: 那几个都是数值回送操作符.这些操作符把一些特征或存储器地址的一部分作为数值回送.(1)TYPE格式:TYPE expression如果该表达式是变量,则汇编程序将回送该变量的以字节数表示的类型:DB(字节)为1,DW(字)为2,DD(双字)为4...
界首市18486374396: 汇编 LENGTH,SIZE的问题 - ?
张邢雷替: LENGTH返回的是类型重复的次数 BX里是A的长度 也就是6DUP(重复6次)所以是6 而CX是B的长度 每个当然是1 length只在DUP前有意义 否则返回的就是1 mov bx,size a A的大小是2*6 BX=12 mov cx,size b B的大小是4*6 CX=24 SIZE=LENGTH*TYPE TYPE: DB 1; DW 2; DD 4;
界首市18486374396: 汇编语言的标号和变量有什么区别? - ?
张邢雷替: 汇编语言中,变量和标号都是用户定义的符号地址, 标号有两个属性,段基地址、偏移地址 变量有三个属性,段基地址、偏移地址和数据类型一般来说,标号只在代码段中被定义,而变量则可以被定义在数据段和代码段中!计算机汇编语言...
界首市18486374396: c 中string的size,length,capacity三者到底有何区别求解 - ?
张邢雷替: length()函数返回字符串的长度. 这个数字应该和size()返回的数字相同.capacity()函数返回在重新申请更多的空间前字符串可以容纳的字符数.就是string当前能够容纳的最大字符数;即capacity()>=length().
界首市18486374396: 汇编语言指令LENGTH是什么意思 - ?
张邢雷替: TOP=1 .LENGTH 格式为:LENGTH Variable 对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元数.而对于其他情况则回送1. 例: FESS DW 100 DUP(0) 对于指令MOV CX,LENGTH FESS 汇编程序将其形成为:MOV CX,100 ARRAY DW 1,2,3 对于指令MOV CX,LENGTH ARRAY 汇编程序将其形成为:MOV CX,1 TABLE DB 'ABCD' 对于指令MOV CX,LENGTH TABLE 汇编程序将其形成为:MOV CX,1
界首市18486374396: string类中的size()函数和length()函数的区别? - ?
张邢雷替: 都是表示字符串中的元素数,等于begin()到end()之间的距离. length()是考虑到传统C函数strlen而对应设置的,而size()是考虑到string作为一个STL容器,应该具有的common member.
界首市18486374396: length属性,length方法和size的方法的区别 - ?
张邢雷替: 这三个都是求获取长度的length方法为String的 length属性是数组的 size方法是集合的 如list set
界首市18486374396: matlab 矩阵的长度怎么计算 - ?
张邢雷替: “matlab”矩阵的长度的计算方法如下: 1、size函数. s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数. [r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到...
界首市18486374396: C++中string的size,length,capacity三者到底有何区别求解 - ?
张邢雷替:size和length一样,都是返回字符串中的字符个数 capacity表示当前string的容量,也就是当前开辟的内存大小