汇编语言指令LENGTH是什么意思
...
DATA ENDS
STACK SEGMENT STACK 'STACK'
STA DB 32
TOP EQU LENGTH STA
STACK ENDS
其中TOP EQU LENGTH STA 是什么意思啊
重点说下LENGTH
谢谢了 好的有加分 展开
LENGTH为伪指令,语句意义为取数组元素个数。
其作用为:计算数组中元素的个数,元素个数是由数组标号同一行出现的数值来定义的。
其作为伪指令的特点:
1、由于是伪“指令”,因而它只存在于汇编语言中。高级语言中不叫指令,叫语句;
2、由于是“伪”指令,也即“假”指令,因而不是可执行指令,不会产生机器代码,不会占用ROM空间,只用于汇编过程中为汇编程序提供汇编信息。
扩展资料:
1、元素个数是由数组标号同一行出现的数值来定义的。如果数组定义中出现了嵌套的 DUP 运算符,那么 LENGTHOF 返回的是两个数值的乘积。
byte1 BYTE 10,20,30
array1 WORD 30 DUP (?),0,0
array2 WORD 5 DUP(3 DUP(?))
array3 DWORD 1,2,3,4
digitStr BYTE "12345678",0
下表列出了每个 LENGTHOF 表达式返回的数值。
2、如果数组定义占据了多个程序行,那么 LENGTHOF 只针对第一行定义的数据。比如有如下数据,则 LENGTHOF myArray 返回值为 5 :
myArray BYTE 10,20,30,40,50
BYTE 60,70,80,90,100
3、另外,也可以在第一行结尾处用逗号,并在下一行继续进行数组初始化。若有如下数据定义, LENGTHOF myArray 返回值为 10:
myArray BYTE 10,20,30,40,50,
60,70,80,90,100
例如有 varw db 1234h | buffer db 10 dup (0)
length varw ;返回1给cx length buffer; 返回 10 给cx
其他的析值操作符还有:
1、seg 变量或者标号;返回变量所在段号或者标号的偏移量
2、offset 变量或者标号 ;返回变量或者标号的偏移量
3、type 变量或者标号; 返回变量或者标号的类型,类型使用数值对应关系如下:db(1), dw(2), dd(4), near(-1), far(-2)
4、size 变量或者标号; 返回dup定义数组占用的字节数。与length类似
.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
LENGTH一般加在数组变量的前面,作用是计算数组变量所占存储单元的个数。若使用DUP,则执行结果是外层DUP的给定值;若没有使用DUP,则执行结果为1.