汇编语言指令LENGTH是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/19 14:16:50
DATA SEGMENT
...
DATA ENDS
STACK SEGMENT STACK 'STACK'
STA DB 32
TOP EQU LENGTH STA
STACK ENDS
其中TOP EQU LENGTH STA 是什么意思啊
重点说下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

LENGTH是属于析值操作符之一,也称为数值回送操作符,原因是这些操作符把一些特征或存储器地址的一部分作为数据返回。length的用法:length 变量名 。作用是返回利用dup定义的数组中的元素个数,即重复操作符dup前的count值。
例如有 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类似

TOP的值等于STA的长度,这里STA的长度为1,即TOP的值为1

LENGTH一般加在数组变量的前面,作用是计算数组变量所占存储单元的个数。若使用DUP,则执行结果是外层DUP的给定值;若没有使用DUP,则执行结果为1.