1. 数据格式
26d 十进制
1Ah 十六进制
42/o/g 八进制
以字母开头的十六进制常量前面必须加一个0,以防止汇编器将其解释为标识符
2. 尽量在表达式中使用圆括号显式表明运算顺序
3. [email protected],因此应尽量避免在自己定义的标志符前用@,但@@myfile为有效
4. 指令
mov
add
sub
mul
jmp
call
5. 汇编程序模板
; 注释
;注释
INCLUDE Irvine32.inc
.data
;在此插入变量
.code
main PROC
; 在此插入可执行代码
exit
main ENDP
; 在此插入其它子程序
END main
6.
BYTE 8位无符号数
SBYTE 8位有符号数
WORD 16位无符号数
SWORD 16位有符号数
DWORD 32
SDWORD 32
FWORD 48
QWORD 64
TBYTE 80
REAL4 32位短实数
REAL8 64位长实数
REAL10 80位实数
7. 数据定义伪指令
DB 定义8位有符号或无符号整数
DW 定义16位有符号或者无符号数
DD 32bit
DQ 64bit
DT 80bit
8 初始值有多个的话,以逗号分割,不想初始化,可以使用符号"?"
9. 数组
list BYTE 10,20,30,40
0000: 10
0001: 20
0002: 30
0003: 40
可以使用的不同的数据格式
list BYTE 10,32,41h,00100010b
10, 定义字符串, 以0空字符串结尾的
greeting BYTE "GOOD AFTERNOON",0
每个字符占一个字节
字符串可以多行,
greet BYTE "TEST"
BYTE "LLL"
BYTE "DDD", 0dh,0ah,0
0dh,0ah,回车换行
11 DUP
DUP 操作符使用一个常量为多个数据项分配存储空间
BYTE 20 DUP(0), 20个字节,全部等于0
BYTE 20 DUP(?), 20个字节,未初始化
BYTE 4 DUP("STACK" 20个字节 “STACKSTACKSTACKSTACK"
12 mylist WORD 1,2,3,4,5 间隔为2
0000:1
0002:2
0004:3
0006:4
0008:5
mylist DWORD 1,2,3,4,5 间隔为4
13, 小尾顺序, 最低的有效字节存储在地址值最小的地址单元里
12345678h
0000 78
0001 56
大尾方式
0000 12
0001 34
14 未初始化的数据
.DATA? 伪指令可用于声明未初始化的数据
15 cout = 500
在重新编译时,使用count的地方都被替换成500
16, 计算数组的大小
list BYTE 10,20,30,40
listsize = ($-list)/数据类型间隔
byte 为1
WORD 为2
DWORD 为4
计算大小要紧跟数组声明后
以下错误
list BYTE 10,20,30
var BYTE 20 DUP(?)
listzie=($-list)/1
listsize 已经包含了var的存储空间
17 EQU TEXTEQU
PI EQU <3.1415>
presskey EQU <"SSSS">
.data
prompt BYTE presskey
continue TEXTEQU <"DO YOU WIANT ">