Win32汇编中的数据类型
类型描述 | 类型 | 缩写 | 位数 | 字节数 | 浮点数有效位 | 数值范围 |
---|---|---|---|---|---|---|
字节 | BYTE | DB | 8 | 1 | 0…255 | |
有符号字节 | SBYTE | DB | 8 | 1 | -128…127 | |
字 | WORD | DW | 16 | 2 | 0…65535 | |
有符号字 | SWORD | DW | 16 | 2 | -32768…32767 | |
双字 | DWORD | DD | 32 | 4 | 0…4294967295 | |
有符号双字 | SDWORD | DD | 32 | 4 | -2147483648…2147483647 | |
远字 | FWORD | DF | 48 | 6 | ||
四字 | QWORD | DQ | 64 | 8 | ||
十字节 | TBYTE | DT | 80 | 10 | ||
单精度浮点数 | REAL4 | 32 | 4 | 6 | 1.1810-38…3.401038 | |
双精度浮点数 | REAL8 | 64 | 8 | 15 | 2.2310-308…1.7910308 | |
10字节浮点数 | REAL10 | 80 | 10 | 19 | 3.3710-4932…1.18104932 |
注:类型缩写(如用 db 代替 byte)则不能用于局部变量
符号 | 对应的进制 |
---|---|
d | 十进制 |
t | 十进制 |
b | 十进制 |
y | 二进制 |
q | 八进制 |
o | 八进制 |
h | 十六进制 |
演示:
.386
.model flat, stdcall
include windows.inc
include kernel32.inc
include masm32.inc
include debug.inc
include user32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib ; 用dubug窗口查看打印输出的信息
.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)
; 浮点数
f1 real8 3.14
f2 real8 3.
f3 real8 3.14E2
.code
start:
PrintDec v1 ;10
PrintDec v2 ;10
PrintDec v3 ;10
PrintDec v4 ;2
PrintDec v5 ;2
PrintDec v6 ;8
PrintDec v7 ;8
PrintDec v8 ;16
PrintDouble f1 ;3.14
PrintDouble f2 ;3
PrintDouble f3 ;314
ret
end start
常量, 赋初值的变量和不赋初值的变量
.386
.model flat, stdcall
include windows.inc
include kernel32.inc
include masm32.inc
include debug.inc
include user32.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib ; 用dubug窗口查看打印输出的信息
.const ;常量
v1 dd 11
.data ;可赋初值的变量, 其中也可声明不不赋初值的变量
v2 dd 22
v3 dd ?
.data? ;不赋初值的变量
v4 dd ?
.code
start:
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
ret
end start
在.data?中声明的变量,在程序生成时,并不会直接生成给定大小的容量,而是在运行中动态进行分配