发布时间:2025-12-09 16:14:34 浏览次数:3
以字母和特殊字符(_, $, ?, @)开头的字母数字和特殊符号串
具有特定用途的标识符,用户不能改变其含义
[变量名] DB/DW/DD 表达式
例:msg DB "How are you?",0 ;//共13个字节,DB表示以byte类型(1个字节)定义变量magic DB 50 dup('1','2','3') DB '1','2','3'; 共占53字节,并初始化为字符串"123123…";50表示容量;dup重复数据 DATA7 DB ? ; 占1字节;‘?’,表示该变量的值不确定,即:该变量所表示的内存单元中的内容是不确定的,或者说是,当表达式为问号时,变量所对应的内存区中并没有存入新的值,而只是预留出了相应的存储空间;num dw 1,2,3,4,5,6,7,8,9,10 ;共20字节;相当于C风格的 WORD num[10]={1,2,3,4,5,6,7,8,9,10};例如 :START: PUSH DS
PI EQU 31415926 ; 类似C语言#define PI 31415926
PIX = PI+2 //编译器在预处理阶段将出现name换成expression
规定程序的起始地址
默认从0000H开始
ORG 2000H;规定程序指令从地址2000H开始存放
二进制: 11101011B
八进制: 345Q
十进制: 8097D, 8097
十六进制: 1234H, 0EFDAH
例: MOV AL, ((11110000B AND 64) +5) GT 32 //将后边比较结果的值传到AL上
MOV BYTE PTR AGE, 20 ;//指示AGE的类型
mov ax,bx ;是把 BX寄存器里的值赋予AX,由于二者都是word型,所以没有必要加“WORD”
mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是 byte还是 word,所以需要用 word明确指出!
PTR的作用域只在当前语句中
SEG
OFFSET
例如:
MOV AX, SEG COUNT //取出COUNT所在段的段地址放入AX寄存器中
MOV AX, OFFSET COUNT /取出COUNT所在段内的偏移地址放入AX寄存器中
END 指示整个汇编源程序结束,并给出第一条指令的执行位置()
END START
DATA 1 SEGMENTS ;一段的开始 name1 DB 50DUP(?) DB 2,3,4,5 DATA 1 ENDS ;一段的结束DATA 2 SEGMENTS ;一段的开始 name2 DB 50DUP(?) DATA 2 ENDS ;一段的结束 STACK SEGMENTS ;一段的开始 DB 5000 DUP(?)STACK ENDS ;一段的结束 CODE SEGMENT ;把段与段寄存器相关连 ASSUME CS:CODE, SS: STACK; DS:DATA1, ES:DATA2 START: MOV AX,DATA1 MOV DS,AX MOV AX,DATA2 MOV ES,AX MOV AL,name1 ;name1隐含使用DS MOV BL,name2 ;name2隐含使用ES。这里需要段超越。 ……CODE ENDSEND START定义
过程名 PROC [FAR或NEAR] ; 默认为NEAR
……
RET
过程名 ENDP
调用
例:
call delay ;调延时子程序
……
delay proc near ;延时子程序定义
mov bx,200
lll: mov cx,0
ll: loop ll
dec bx
jne lll
ret
delay endp
定义
FieldN:变量名,可以不取,无变量名是通过在结构体中偏移量访问
使用
[变量名] 结构类型名 <[字段值列表]>
变量名.字段名
WEATHER RECORD A:5=10, B:2=3, C:3 ;按位,不能超过16位。TOR WEATHER <1, ,3>MOV AL, TOR.B定义
宏名 MACRO 参数 ;用相应内容替换到调用位置...;宏定义体ENDM ;结束定义使用
取消宏
| .CODE [段名] | 创建一个代码段 | 段名为可选项,如不给出段名,则采用默认段名。对于多个代码段的模型,则应为每个代码段指定段名。 |
| .DATA | 创建一个数据段 | 段名是:_DATA |
| .DATA? | 创建无初值变量的数据段 | 段名是:_BSS |
| .FARDATA [段名] | 建立有初值的远调用数据段 | 可指定段名,如不指定,则将以FAR_DATA命名。 |
| .FARDATA? [段名] | 建立无初值的远调用数据段 | 可指定段名,如不指定,则将以FAR_BSS命名。 |
| .CONST | 建立只读的常量数据段 | 段名是:CONST |
| .STACK [大小] | 创建一个堆栈段并指定堆栈段大小 | 段名是:stack。如不指定堆栈段大小,则缺省值为1KB |
1 http://blog.sina.com.cn/s/blog_84ee1fff0102xbeb.html
2 http://bdxnote.blog.163.com/blog/static/844423520096137403605/
3 https://www.cnblogs.com/galano/p/8721350.html
4 http://www.voidcn.com/article/p-pjmhoonz-yp.html