微型计算机原理及其应用——第四章:汇编语言程序设计合肥工业大学计算机信息学院 周国祥
汇编语言程序设计
1. 汇编语言的基本要素 2. 伪指令 3. 汇编语言程序设计
汇编语言程序设计
1. 汇编语言的基本要素 2. 伪指令 3. 汇编语言程序设计
汇编语言程序设计——汇编语言的基本要素
1. 汇编语言的格式 2. 汇编语言中的常数 3. 汇编语言中的运算符和表达式
汇编语言程序设计——汇编语言的基本要素
1. 汇编语言的格式 2. 汇编语言中的常数 3. 汇编语言中的运算符和表达式
汇编语言程序设计——汇编语言的基本要素 汇编语言的格式由汇编语言编写的源程序是由许多语句(也可称为汇编指令)组成 的。每个语句由1~4个部分组成,其格式是: [标识符] 指令助记符 [操作数] [;注解] 1. 标识符:给指令或某一存储单元地址所起的名字。可由下列字符组成: 字母:A ~ z ; 数字:0 ~ 9 ; 特殊字符:?、· 、@、一、$ 。 数字不能作标识符的第一个字符,而圆点仅能用作第一个字符。标识 符最长为31个字符。当标识符后跟冒号时,表示是标号。它代表该行 指令的起始地址;当标识符后不带冒号时,表示变量;伪指令前的标 识符不加冒号。 2. 指令助记符:表示不同操作的指令,可以是8086的指令助记符,也可 以是伪指令。 3. 操作数: 指令执行的对象。依指令的要求,可能有一个、两个或者没 有。 4. 注解:该项可有可无,是为源程序所加的注解,用于提高程序的可读 性。6
汇编语言程序设计——汇编语言的基本要素
1. 汇编语言的格式 2. 汇编语言中的常数 3. 汇编语言中的运算符和表达式
汇编语言程序设计——汇编语言的基本要素 汇编语言中的常数汇编语言中的常数可以分数值常数和字符串常数两类。数值常数 按其基数的不同,可有二进制数、八进制数、十进制数、十六进制数 等几种不同的表示形式,汇编语言中采用不同的后缀加以区分。 B:表示二进制数。例如,10100101B。 D:表示十进制数。例如,278D或278。 Q:表示八进制数。例如,567Q,263Q。 H:表示十六进制数。例如,9AH,5678H。 字符串常数是由单引号括起来的一串字符。例如: ‘THIS IS A STUDENT!’ ‘12345’ 要指出的是,此处的’12345’其值并非是十进制数12345,而是代表 它们所对应的ASCII码,即31H,32H,33H,34H,35H。
汇编语言程序设计——汇编语言的基本要素
1. 汇编语言的格式 2. 汇编语言中的常数 3. 汇编语言中的运算符和表达式
汇编语言程序设计——汇编语言的基本要素 汇编语言中的运算符和表达式在表达式中,运算符充当着重要的角色。8086宏
汇编有算术运算 符、逻辑运算符、关系运算符、数值回送操作符和属性操作符共5种。 数值回送(Value_returning)操作符可以把一些特征或存储器地址 的一部分作为数值回送。共有5个:SEG(求段基值)、OFFSET(求偏移 量)、TYPE(求变量类型)、LENGTH(求字节数)和SIZE(求字节数)。其 中LENGTH和SIZE只对数据存储器地址操作数有效。 属性操作符可以用来建立和临时改变变量或标号的类型以及存储 器操作数的存储单元类型,而忽略当前的属性。共有6个:PTR、段属 性前缀、SHORT、THIS、HIGH和LOW。
汇编语言程序设计——汇编语言的基本要素 汇编语言中的运算符和表达式
算术运算符 +(加法) -(减法)
逻辑运算符 AND(与) OR(或)
关系运算符 EQ(相等) NE(不等)
数值回送运算符 属性运算符 TYPE LENGTH PTR THIS
*(乘法)/(除法) MOD(求余)
XOR(异或)NOT(非)
LT(小于)GT(大于)
SIZEOFFSET
SHORTHIGH LOW
LE(小于等于) SEG GE(大于等于)
汇编语言程序设计——汇编语言的基本要素 汇编语言中的运算符和表达式——数值回送操作符SEG运算符:利用运算符SEG可以得到一个标号或变量的段基址 格式:SEG变量名或标号名 例如:已知数据段DATA从存储器实际地址03000H开始,作如下定义 后,用SEG运算符求变量所在的段基址。 DATA SEGMENT VAR1 DB VAR2 DW VAR3 DD DATA ENDS ;定义数据段 ;定义字节数据 ;定义字数据 ;定义双字数据 ;数据段结束
10H,18H,25H,34H 2300H,1200H 11002200H,33004400H
MOV BX,SEG VAR1 汇编成: MOV BX,0300H MOV CX,SEG VAR2 汇编成: MOV CX,0300H MOV DX,SEG VAR3 汇编成; MOV DX,0300H
汇编语言程序设计——汇编语言的基本要素 汇编语言中的运算符和表达式——数值回送操作符OFFSET运算符:利用运算符OFFSET可以得到一个标号或变量的偏 移量。 使用格式:OFFSET 变量名或标号名 DATA SEGMENT VAR1 DB VAR2 DW VAR3 DD DATA ENDS ;定义数据段 ;定义字节数据 ;定义字数据 ;定义双字数据 ;数据段结束
10H,18H,25H,34H 2300H,1200H 11002200H,33004400H
MOV BX,OFFSET VAR1 MOV CX,OFFSET VAR2 MOV DX,OFFSET VAR3
汇编成: MOV BX,0000H 汇编成: MOV CX,0004H 汇编成: MOV DX,0008H
汇编语言程序设计——汇编语言的基本要素 汇编语言中的运算符和表达式——数值回送操作符TYPE运算符:TYPE运算符可加在变量、结构或标号的前面,所求出 的是这些存储器操作数的类型部分。运算符TYPE的运算结果是一个 数值,这个数值与存储器操作数类型属性的对应关系。
存储操作数类型字节数据BYTE(DB定义) 字数据WORD(DW定义) 双字数据DWORD(DD定义)MOV BX,TYPE VAR1 MOV CX,TYPE VAR2 MOV DX,TYPE VAR3
TYPE返回值1 2 4
汇编成: MOV BX,1 汇编成: MOV CX,2 汇编成: MOV DX,4
汇编语言程序设计——汇编
语言的基本要素 汇编语言中的运算符和表达式——数值回送操作符LENGTH运算符:LENGTH运算符放在数组变量的前面,可以求出该 数组中所包含的变量的个数。 ARRAY1 DB 100 DUP(?) ARRAY2 DW 10 DUP(?) ARRAY3 DD 10 DUP(?) 下列指令: MOV BX,LENGTH ARRAY1 MOV CX,LENGTH ARRAY2 MOV DX,LENGTH ARRAY3 汇编后:MOV BX,100 汇编后:MOV CX,10 汇编后:MOV DX,10
汇编语言程序设计——汇编语言的基本要素 汇编语言中的运算符和表达式——数值回送操作符SIZE运算符:如果一个变量已经用重复操作符DUP加以说明,则利用 SIZE运算符可以得到分配给该变量的字节总数。 ARRAY1 DB 100 DUP(?) ARRAY2 DW 10 DUP(?) ARRAY3 DD 10 DUP(?) 下列指令: MOV BX,SIZE ARRAY1 汇编后:MOV BX,100 MOV CX,SIZE ARRAY2 汇编后:MOV CX,20 MOV DX,SIZE ARRAY3 汇编后:MOV DX,40