微机原理汇编语言.ppt
文本预览下载声明
lijianyi@ zhlljy@ 指令语句中的名字一般采用标号 NEXT:MOV AX,1234H 一个标号与一条指令的地址相联系,因此标号可以作为JMP和CALL指令的操作数 JNZ NEXT CALL APAR 伪指令语句中的名字可以是变量名、段名、过程名、符号名等 BUF DW 1234H CODE SEGMENT APAR PROC (2)逻辑运算符的作用是对其操作数进行按位操作。逻辑运算符有AND(与)、OR(或)、XOR(异或)和NOT(非)。 例如: PORT_VAL EQU 20H ? OUT AL,PORT_VAL OR 5 汇编后指令成为 OUT AL,25H (3)关系运算符的运算对象是两个性质相同的项目。其结果为:关系成立或不成立。有EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)共6种。结果为真,表示为0FFFFH,否则为0. (1) SEG操作符格式为: SEG 变量名或 标号名 回送变量或标号的段地址值。 例如:若DATA1是从存储器06000H物理地址开始的一个数据段的段名,PADD是该段中的一个变量名。则 MOV BX,SEG PADD 相当于MOV BX,0600H 例2已知数据段DATA从存储器实际地址03000H开始。作如下定义后,用SEG运算符求变量所在的段基址 (2) OFFSET操作符格式为: OFFSET 变量名或 标号名 回送变量或标号的偏移地址值。 例如: MOV BX,OFFSET PADD 相当于LEA BX,PADD其中PADD是变量或标号 例3 (3) TYPE操作符格式为: TYPE 变量名 或 标号名 存储器操作数类型 TYPE返回值 BYTE 1 WORD 2 DWORD 4 NEAR -1 FAR -2 TYPE运算符加在变量前面,返回的是这个变量所对应的TYPE返回值,如TYPE VAR1=1 TYPE运算符加在结构前面,返回的是结构包含的字节数 如 STUDENT STRUC NAME DB ‘WANG’ NUMBER DB ? STUDENT ENDS 则:TYPE STUDENT=5 TYPE运算符加在标号前面,返回标号的属性是NEAR还是FAR (4) LENGTH操作符格式为: LENGTH 变量名 LENGTH和SIZE操作符只能和数据存储器地址操作数(BYTE、WORD或者DWORD)一起使用。LENGTH对于变量中使用DUP时, 回送分配给该变量的单元数; 其它情况则回送1。 例如: MULTI_WORDS DW 50 DUP(20) WORDS1 DW 20,30,40,50 则 MOV CX,LENGTH MULTE_WORDS 相当于 MOV CX,50 而 MOV CX,LENGTH WORDS1 相当于 MOV CX,1 (5) SIZE操作符格式为:SIZE 变量名 SIZE操作符回送分配给该变量的字节数相当于 LENGTH值和TYPE值的乘积。 例如: MOV CX,SIZE MULTI_WORD 相当于MOV CX,100 MOV CX,SIZE WORDS1 相当于MOV CX,2 5)属性操作符 属性操作符主要有PTR、段操作符、SHORT、THIS、HIGH、LOW六种。 (1) PTR操作符格式为: 类型 PTR 存储器地址表达式 PTR将它左边的类型指定给右边的表达式 类型可以是BYTE WORD DWORD NEAR FAR,它 本身并不实际分配存储器。 VAR1 DB 30H,40H VAR2 DW 2050H … MOV AX,WORD PTR VAR1;将4030H?AX MOV BL,BYTE PTR VAR2;将50H?BL 有时汇编程序分不清所存入的数据是字节还是字, 此时必须用PTR来说明属性。 例如: MOV [DX],20 格式是错误的,必须写成 MOV BYTE PTR [DX],20或者MOV WORD PTR [DX],20 (2) 段操作符 段操作符用来明确表示变量或地址表达式的段 属性, 取消了它们原来的默认组合
显示全部