1.标号就是程序中某一条特定指令的符号地址.标号所指示的地址位于代码段.
标号:指令助记符 操作数 例:L1: ADD AL,BL
VAR DB 12H ;
2.符号名字段:任选字段,不一定是变量,也可能是常量,表示地址
符号名 伪指令符 操作数 ;
例:VAR DB 12H ;
VAR EQU 10
3.变量,指某一个特定的内存单元,是具体的实在的。
语句格式:变量名 DB 表达式1,表达式2…
例:VAR DB 12H ;
4.常量,只能进行一次赋值,没有赋予任何内存单元
VAR EQU 10,VAR是常量,不是变量
等号语句的作用和等值语句完全一致,但用等号定义过的符号可以再次使用等号修改其定义。
表示地址的变量只能做减法运算.
包括AND、OR、XOR、NOT四个运算符,只能用于数值表达式。
包括EQ、NE、LT、LE、GT、GE六个运算符
加在引用的变量名或标号前面,运算结果是返回该变量或标号的段基值。 MOV AX,SEG VAR1 MOV DS,AX
加在引用的变量名或标号前,运算结果为返回该变量或标号的偏移量。 mov ax, offset var1 ;汇编后是立即数 lea ax, var1 ;内存单元的偏移量 ;固定搭配通用寄存器
加在引用的变量名或标号前,运算结果为返回该变量占用的字节数,或标号的FAR(-1)或NEAR类型(-2) 。 var1 db ? var2 dw ? …… mov ax, type var1 ;=1 mov bx, type var2 ;=2
针对DUP.如果定义该变量时使用了DUP关键字,那么返回重复的次数;如果没有使用DUP,那么返回1。
只能加在引用变量名前,返回结果相当于LENGTH运算符和TYPE运算符的乘积,即数组变量总共占用的字节数目。 SIZE = LENGTH × TYPE
PTR 地址,类型有:BYTE,WORD,DWORD
例子:mov al ,byte ptr var1
(1)1号功能键盘输入 格式: AH=1【mov AH 1H】 INT 21H 功能:从键盘输入一个字符并将该字符的ASCII码送入AL中。 (2)2号功能显示器输出 格式: AH=2【mov AH 2H】 DL=字符 INT 21H 功能:输出DL中的一个字符到显示器的光标处。
段名 SEGMENT
(1)地址计数器$ ,
$表示数据段的当前地址偏移量。
(2)段寻址伪指令ASSUME
在程序设计中,ASSUME语句一般在代码段中位于所有指令语句之前。
(3)begin—end
第一条指令的地址在源程序中是通过END伪指令来确定的。
示例: 数据段、堆栈段略去 code segment assume cs:code,ds:data,ss:stack1 begin: mov ax, data ;初始化DS、ES mov ds, ax …… ;程序主体 mov ah, 4ch ;返回DOS int 21h code ends end begin ;结束源程序(3)SS的装入
两种方法
自动初始化:如果希望采用这种初始化方式,在定义堆栈段时必须使用STACK作为组合类型。对STACK段,操作系统将程序装入到内存准备运行时,会自动初始化SS和SP。
stack1 segment stack dw 20h dup(0) stack1 ends手动初始化:MOV指令
(1)使用特定的中断调用
mov ah, 4ch ;返回DOS int 21h