常量表达
常量(Constant)是程序中使用的一个确定数值,在汇编语言中有多种表达形式。
常数
常数指由十、十六和二进制形式表达的数值,各种进制的数据以后缀字母区分:
在实际应用中,通常使用十进制表达数值,使用十六进制表达存储器地址、BCD码数值、数值的内部编码或者指令代码等,使用二进制表达需要进行位操作的数值(例如逻辑量)等。
字符和字符串
字符或字符串常量是用双括号或单括号括起来的单个或多个字符。其数值是每个字符对应的ASCII码值。
如果字符串中有单引号本身,可以用双引号;反之亦然,例如:
“Let’s have a try.”
‘Say “Hello”, my baby.’
也可以直接用单引号或者双引号的ASCII值(单引号:27H,双引号:22H)。
符号常量
符号常量使用一个符号表达数值。
MASM提供的符号定义伪指令有“等价EQU”和“等号=”。它们用来为常量定义符号名,格式为:
符号名 equ 数值表达式
符号名 equ<字符串>
符号名 =数值表达式
EQU伪指令定义后的符号名是不能重复再定义的:
NULL equ 0 正确
count equ count + 64H 错误
“=”伪指令中定义的符号名可重复定义:
count = 100
count = count + 64h
注意:数值表达式也是常量所构成的算式,汇编主要包含+(加)、-(减)、*(乘)、/(除)和MOD (取余数)。
.model small
.stack
.data ;数据段
const1 db 100,100d,01100100b,64h,'d'
const2 db 1,+127,128,-128,255,-1
const3 db 105,-105,32,-32,32h,-32h
const4 db '0123456789','abcxyz','ABCXYZ'
crlf db 0dh,0ah,'$'
minint = 10
maxint equ 0ffh
const5 db minint,minint+5,maxint-5,maxint-minint
const6 db 4*4,34h+34,67h-52h,52h-67h
CallDOS equ<int 21h>
.code ;代码段
.startup
mov dx,offset const4 ;从Const4开始显示
mov ah,09h
CallDOS
.exit
end