学 Win32 汇编[5]: 数据类型与声明
?
类型描述类型缩写位数字节数浮点数有效位数值范围字节BYTEDB81 0..255有符号字节SBYTEDB81 -128..127字WORDDW162 0..65535有符号字SWORDDW162 -32768..32767双字DWORDDD324 0..4294967295有符号双字SDWORDDD324 -2147483648..2147483647远字FWORDDF486? 四字QWORDDQ648? 十字节TBYTEDT8010? 单精度浮点数REAL4?32461.18*10-38..3.40*1038双精度浮点数REAL8?648152.23*10-308..1.79*1030810字节浮点数REAL10?8010193.37*10-4932..1.18*104932
注: 类型缩写(譬如用 db 代替 byte)不能用于局部变量.
进制表示(其中的 d t b y q o h 不区分大小写):
; Test5_1.asm.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.data? v1 dd 10 ;十进制? v2 dd 10d ;十进制(Decimal)? v3 dd 10t ;十进制? v4 dd 10b ;二进制(Binary)? v5 dd 10y ;二进制? v6 dd 10q ;八进制? v7 dd 10o ;八进制(Octal)? v8 dd 10h ;十六进制(Hexadecimal)? v9 dd 0ah ;十六进制; 如果第一位不是数字应前置 0? .codestart:? PrintDec v1 ;10? PrintDec v2 ;10? PrintDec v3 ;10? PrintDec v4 ;2? PrintDec v5 ;2? PrintDec v6 ;8? PrintDec v7 ;8? PrintDec v8 ;16? PrintDec v9 ;10? retend start
浮点数:
; Test5_2.asm.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.data? v1 real8 3.14? v2 real8 3.? v3 real8 3.14E2.codestart:? PrintDouble v1 ;3.14? PrintDouble v2 ;3? PrintDouble v3 ;314? retend start
常量、可赋初值的变量、不赋初值的变量:
; Test5_3.asm.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.const ;常量? v1 dd 11? .data ;可赋初值的变量, 其中也可声明不不赋初值的变量? v2 dd 22? v3 dd ?? .data? ;不赋初值的变量? v4 dd ?.codestart:? PrintDec v1 ;11? PrintDec v2 ;22? PrintDec v3 ;0? PrintDec v4 ;0? mov eax, 33? mov v3, eax? mov eax, 44? mov v4, eax? PrintDec v1 ;11? PrintDec v2 ;22? PrintDec v3 ;33? PrintDec v4 ;44? retend start
汇编中的标识符(变量名、常量名、过程名、标号)可以使用下面符号:
A-Z a-z 0-9 _ @ $ ?
但第一个字符不能是数字(0-9), 长度不要超过 239 个字符.