第五章汇编语言程序设计
第五章 汇编语言程序设计 第五章 汇编语言程序设计 教学重点 汇编语言的基本语法 伪指令介绍 程序的基本设计方法 机器语言 指CPU规定好的、用0、1数字代码表示的机器指令。 汇编语言 指用指令的助记符、标号、符号地址来书写程序的语言。用汇编语言编写的程序称为汇编语言程序。 高级语言 指不依赖于机器的结构、独立于机器的语言。 §5.2 汇编语言程序结构与语句格式 DATA SEGMENT INBUFF DW 100 DUP(?) ;输入缓冲区 OUTBUFF DW 100 DUP(?) ;输出缓冲区 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STAR PROC FAR MOV AX,DATA MOV DS,AX ;设置DS INIT: LEA SI,INBUFF LEA DI,OUTBUFF MOV CX,100 REP MOVS OUTBUFF,INBUFF MOV AH,4CH ;返回DOS系统 INT 21H STAR ENDP CODE ENDS END STAR 二、汇编语言语句格式 指令语句 能产生机器代码的语句,是程序的主体部分。 [标号] 助记符 [操作数] [;注释] 伪指令语句 为程序提供服务的语句。不产生机器代码。 [名字] 助记符 [操作数] [;注释] 宏指令语句 将一组指令序列定义为一条宏大的指令。 [标号] 定义符 [实参数表] [;注释] 汇编语言语句格式 [标号] 助记符 [操作数] [;注释] 各项之间至少用一个空格符隔开;带方括号的项可有可无。 1.汇编语句中的标号和名字 标号是可执行指令的符号地址;名字可以是变量名、段名或过程名,是存放数据的存储单元的符号地址。 组成名字的字符:大小写的A~Z;数字0~9;专用字符?.@_$ 组成名字的规则:数字0~9不能放在名字的第一个位置;字符?.@_必须放在名字的第一个位置。 名字在指令语句和伪指令语句中的区别:书写时,可执行语句名字后加“:”,而伪指令名字后不加。 常用运算符举例 设N1=10, N2=5, N3=3,问执行以下指令后,目的操作数的内容分别是多少? MOV AL,(N1 AND N2 OR N3)GE 0FH MOV AX,( N2 AND N1 XOR N3)LE 0FH MOV AL,(N1 MOD N3)LT (N2 SHR 1) AL=00H AX=0FFFFH AL=0FFH §5.3 伪指令 一、数据定义伪指令(变量定义) 用于为程序分配指定数目的存储单元,并按要求进行初始化。 [变量名] DB/DW/DD/DQ/DT 〈数据项表〉;[注释] 其中,变量名后不跟“:”,其值为所定义的第一个数据的偏移地址;数据项表是由“,”分隔开的多个操作数;操作数可以是“?”,表示该单元不初始化,由汇编程序预置任意数值。 [变量名] DB/DW/DD/DQ/DT 〈表达式1〉DUP 〈表达式2〉 ;[注释] 其中, 〈表达式1〉为重复次数,〈表达式2〉为重复的内容。 二、符号定义伪指令 格式:符号名 EQU 表达式 符号名 = 表达式 功能: 将表达式的值或符号赋给符号名。其中,表达式可以是常数、表达式、寄存器名、助记符。 说明: 程序中不能用EQU对同一符号名重新赋值;但可用“=”对同一符号重新赋值。 EQU/=指令不占用内存单元。 EQU 指令举例1 若有下列指令 CN EQU 100 C EQU CX M EQU MOV B EQU DS:[BP+20] 则下列语句有效 M C,CN M BX,B EQU指令举例2 画出下列