汇编语言的符号、标号和变量符号
2008-10-14 09:35:33 来源:WEB开发网3 2 4 属性分离符
其中SEG和OFFSET用法和标号相同,分别表示取变量所在段的段地址和变量的偏移地址.而TYPE运算符,将回送该变量类型所表示的字节数.
例如:设AB为字节变量,AW为字变量,则:
MOV AH,TYPE AB即MOV AH,1
MOV AX,TYPE AW即MOV AX,2
3 2 5 取变量数据项个数运算符LENGTH对于变量定义时使用DUP的情况,汇编程序将回送DUP前的重复次数,即分配给该变量的单元数,若表达式有多个DUP,则取第一个DUP项,其它情况则回送1.
例如:ARRAY DW 50 DUP(0)则
MOV CX,LENGTH ARRAY即MOV CX,50
ARRAY1,DW1,2,3 则
MOV CX,LENGTH ARRAY1
即MOV CX,1
可见LENGTH表示数组元素个数,而不管其类型.
3 2 6 取变量数据项长度算符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一串字符后下一个可用的偏移地址.
3 2 7 变量名仅对应数据区第一个数据项
例如:
WORD DW 20 DUP(?)
MOV AX,WORD;第一个元素送AX,
MOV AX,WORD+38;第20个元素送AX.
其它符号
除标号和变量外,符号还可表示常量、段名、过程名、寄存器名和指令助记符等.
(1)符号常数常数也常以符号形式出现,使之更具有通用性且便于修改.例:
COUNT EQU 100 则COUNT就表示常数100.
(2)符号表示指令助记符.例:
MOV EQU MOV则MOVE就表示指令MOV
(3)符号表示寄存器,例:COUNT EQU CX则COUNT就代表寄存器CX.
(4)符号作为段名,例:
DATA SEGMENT
- - - -- - - - - - - - - - -
DATA ENDS
DATA 是段名,引用DATA表示段地址.
(5)符号作为过程名,例:SUBR PROC NEAR/FAR
- - - -- - - - - - - - - - -
SUB ENDP
SUB为过程名,它同样具有段、偏移量和距离类型三个属性
.(6)符号作为宏指令名
宏定义格式宏指令名 MACRO [形式参数]
- - - -- - - - - - - - - - -
ENDM
宏调用格式:
宏指令名 [实参数]
每当引用宏指令名则汇编程序对宏调用作宏展开,就是用宏定义体取代源程序中的宏指令并用实参数取代宏定义中的形式参数.
更多精彩
赞助商链接