武汉理工通信原理第六章汇编语言程序设计

上传人:资****亨 文档编号:144358066 上传时间:2020-09-07 格式:PPT 页数:66 大小:361KB
返回 下载 相关 举报
武汉理工通信原理第六章汇编语言程序设计_第1页
第1页 / 共66页
武汉理工通信原理第六章汇编语言程序设计_第2页
第2页 / 共66页
武汉理工通信原理第六章汇编语言程序设计_第3页
第3页 / 共66页
武汉理工通信原理第六章汇编语言程序设计_第4页
第4页 / 共66页
武汉理工通信原理第六章汇编语言程序设计_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《武汉理工通信原理第六章汇编语言程序设计》由会员分享,可在线阅读,更多相关《武汉理工通信原理第六章汇编语言程序设计(66页珍藏版)》请在金锄头文库上搜索。

1、.,第六章 汇编语言程序设计,一.汇编语言语法 二.汇编语言程序设计 三.汇编程序及上机设计,四.DOS及BIOS功能调用 五.任务切换与混合语言编程,.,6.1汇编语言语法 一、计算机程序设计语言的演变 1)机器语言:直接用机器指令来编制计算机程序的方法 2)汇编语言:可以用助记符来表示指令的操作和操作数,也可以用标号和符号来代替地址、常量和变量。,.,3)高级语言:更接近于人们的自然语言和习惯的教学语言来描述算法的执行过程,从而使编写的过程更加直观和简练。 最近,计算机语言的另一个发展方向是混合语言程序设计。混合语言并不是一种新出现的自成系统的新型语言,它采用两种或两种以上的编程语言加以组

2、合编程,是一种程序接口技术,实现不同语言程序之间的相互调用。,.,二、为什么要用汇编语言编写程序 1)汇编语言非常接近机器语言程序,通过编制汇编语言程序,可以清楚地了解计算机的工作过程。 2)现在的微机系统中,底层的一些功能仍然靠汇编语言程序来实现。 3)汇编语言程序的效率通常高于高级语言程序。,.,三、汇编语言的语句种类及其格式 1、指令语句:每一条指令语句在汇编时都要产生一个可供机器执行的机器目标代码,所以这种语言又叫可执行语句。指令语句的可是如下: 标号:( 前缀指令) 助记符(操作数);(注释) 1)标号。这是一个任选字段。标号是指令语句的标识符,在语句之首,必须以“:”作为结束符。

3、对标号的规定: 由字符AZ ,az ,09及符号、$、下划线_ 等组成, 最长31个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 (如指令的助记符等) 对定义的符号不区分大小写。,.,2)指令助记符。这是为指令操作码规定的符号。 3)操作数。可以根据指令的功能的需要,可不带操作数,带一个操作数或两个操作数,若有两个操作数时,中间用“,”号分开。 操作数给出参与操作的数或数所在的地方。 操作数可以是常数、寄存器、存储器操作数、 标号名、过程名或表达式等。 4)注释。注释是为了方便程序员阅读程序而加的说明。,.,四、 常数、标号、变量及表达式 1、常数:

4、指令中出现的那些固定值和字符串常数两类。 2、标号:用符号表示的地址,称为符号地址,用以指示 此指令语句所在的地址。 3、变量:变量是与一个数据项的第一字节相对应的标识 符,它表示该数据第一字节在现行段中的偏移 量。 4、表达式:表达式由操作数和运算符组成。,.,.,.,标号,标号是符号表示的地址,称为符号地址, 标号具有段地址,偏移地址,和类型3个属性 类型属性有NEAR和FAR类型,.,变量 变量的值在程序运行过程中可随时修改 变量有3个属性: (1)段地址:变量所在段的段地址。 (2)偏移地址:变量所在段的偏移地址。 (3)类型:变量所占的字节数。 变量名 DB 表达式 定义字节变量 变

5、量名 DW 表达式 定义字变量 变量名 DD 表达式 定义双字变量 变量名 DQ 表达式 定义长字变量(8个字节) 变量名 DT 表达式 定义十字节变量,.,上述伪指令中表达式的形式: (1)一个或多个常数,或运算公式(结果为常数) 当有多个常数时,两两之间用逗号分隔。 从左到右由低地址向高地址顺序存储。 (2)字符串 用引号括住,长度不超过255。 从左到右由低地址向高地址以ASCII码顺序存储。 (3)问号?(通配符) 仅留出用于存储数据的单元,但不改变单元中原有的数据。 (4)DUP(重复方式) 重复次数 DUP (表达式);将表达式重复预置。,.,例: HUA DB 2 DUP (HU

6、A,3 DUP (0) 该指令将数据块 (HUA,3 DUP (0)重复2次,而数据块 (HUA,3 DUP (0)以字符串HUA开始, 接下来是3个0。在内存中的存储情况 如图所示:,首单元,48H,55H,41H,00H,00H,00H,48H,55H,41H,00H,00H,00H,DUP可以重叠使用,相当于大循环中嵌套小循环,.,(5)地址表达式(仅用于DW或DD) 使用DW时: 地址表达式中的变量名称表示变量第一个单元的偏移地址 标号表示指令的第一个字节的偏移地址。 使用DD时: 低两字节为偏移地址,高两字节为段地址。 地址表达式中的变量或标号可与常数相加减,结果仍为偏移 地址,常数

7、表示位移量:+表示向高地址方向移动;表示 向低地址方向移动。 变量与标号之间不能相加,但可以相减,其结果为一常数, 表示两者之间的距离。,.,例:P163 DATA1 DB 20H DATA2 DW 0204H,100H DATA3 DB (-1*3),(15/3) DATA4 DD 12345H DATA5 DB 0123 DATA6 DW AB,C,D DATA7 DB ? DATA8 DD ? DATA9 DB 5 DUP (00) DATA10 DW 3 DUP (?),.,表达式 由常量、标号(标识符)、变量和一些操作符构成。 汇编程序对表达式进行运算后,得到一个确定的数值, 再把这

8、个数值汇编到指令中。 据表达式所表示的内容分:数字表达式、地址表达式。 表达式是指令或伪操作的操作数; 表达式中的操作符由汇编程序完成。 例 MOV AX, 12 - 4 ;MOV AX, 8 ;数字表达式 LEA BX, string + 4 ;地址表达式,.,表达式中的操作符 有以下几类: (1) 算术运算符 ( +、*、/、MOD ) (2) 逻辑运算符 ( AND、OR、NOT、XOR ) (3) 关系运算符 ( EQ、NE、GT、GE、LT、LE ) 真:FFFFH; 假: 0 (4) 分析运算符 ( SEG、OFFSET、 TYPE、SIZE、LENGTH) (5) 综合运算符 (

9、 PTR,THIS ) (6) 地址记数器( $ ),.,例: (1) 算术运算符 ( +、-、*、/、MOD(取余数) ) MOV AX, 6 * 8 MOV AX, 48 A MOD B ;用A除以B,保留运算的余数。 要求A、B均为正整数。 (2) 逻辑运算符 (AND、OR、NOT、XOR) MOV AX, 80h OR 70h MOV AX,0F0h 逻辑运算符可以嵌套、组合使用如P165例 MOV BX,(PORT LT 5)AND 20) OR (PORT GE 5)AND 30) 思考:若要求当PORT的值大于5而小于10时,为BX赋值40 应如何编写指令? (3) 关系运算符

10、 ( EQ、NE、GT、GE、LT、LE ) 真:FFFFH; 假: 0 MOV AX, 1 GE 2 MOV AX, 0,.,(4) 分析运算符: TYPE,LENGTH,SIZE ,OFFSET,SEG 5种。 把一些特征或存贮器地址的一部分作为数值回送。 类型运算符TYPE 格式:TYPE variable 变量 或 label 标号 回送该变量以字节数表示的类型 (DB为1,DW为2,DD为4,DQ为8,DT为10) 回送标号类型数值(NEAR为,FAR为2) 例: ARRAY DW 1,2,3 ADD SI,TYPE ARRAY 汇编程序其形式:ADD SI,2,., LENGTH

11、格式:LENGTH variable 对于变量中使用DUP ,汇编回送分配给变量单元数,其他情况回送1。 例: FESS DW 100 DUP(0) 对于 MOV CX,LENGTH FEES 汇编程序将其形式: MOV CX,100 其他情况: 例:ARRAY DW 1,2,3 对于指令 MOV CX,LENGTH ARRAY 汇编程序将使其形式为:MOV CX,1 例:TABLE DB ABCD 对于指令 MOV CX,LENGTH TABLE 汇编程序使其形式为:MOV CX,1,., SIZE 格式:SIZE variable 回送分配给该变量的字节数 LENGTH*TYPE 例:FE

12、ES DW 100 DUP(0) MOV CX,SIZE FEES 将形成:MOV CX,200 例:TABLE DBABCD MOV CX,SIZE TABLE 将形成: MOV CX,1 例:ARRAY DW 1,2,3 MOV CX,SIZE ARRAY 形成: MOV CX,2 LENGTH*TYPE=2,., OFFSET 格式: OFFSET variable 变量 或 label 标号 取出变量名或标号所在段的偏移地址 例 MOV BX , OFFSET yy SEG 格式: SEG variable 变量 或 label 标号 取出变量名或标号所在段的 段地址 例 MOV AX

13、 , SEG yy,.,bb SEGMENT yy DB 6 dup (?) bb ENDS cc SEGMENT ASSUME CS:cc, DS:aa, ES:bb start : CLD MOV AX , SEG yy MOV ES , AX MOV DI , OFFSET yy MOV CX , 6 . cc ENDS END start,.,小结: TYPE变量的返回值是类型的字节数: DB为1,DW为2,DD为4,DQ为8,DT为10; TYPE标号的返回值是: NEAR为1,FAR为2。 LENGTH变量返回: DUP分配的单元数,对于其他情况则返回1。 SIZE返回值是: LE

14、NGTH和TYPE值的乘积,即变量的字节数。,.,.,(5) 综合运算符 ( PTR,THIS ),PTR 用来对存贮单元规定类型 格式: 类型 PTR 表达式(或地址表达式) 类型可为变量类型BYTE,WORD,DWORD 或标号类型NEAR,FAR 例: MOV BYTE PTR DATA3, AL MOV BYTE PTR BX, 10H 例1将(AL)送DATA3对应的一个字节中,DATA3临时定义为 字节变量,原先DATA3定义的字类型没有修改。 例2是利用PTR算符明确类型不明确的地址表达式的类型。,.,THIS 用来规定所指变量或标号的类型属性或距离属性 格式: THIS 类型

15、类型可为BYTE,WORD,DWORD 或 距离NEAR FAR 例 XYZ EQU THIS BYTE ;将字节属性赋予XYZ FOUT EQU FAR ;将距离属性赋予FOUT (6)汇编地址计数器 $ 用来标识汇编程序当前的位置 例 在数据段定义的常量和变量如下 W1 DW B3 符号常量C1的值等于变量 B1 DBABC W2的个数 W2 DW -4,1234H C1 EQU ($-W2)/2 .,.,6.1.5 伪指令 1)方式伪指令 2)赋植伪指令EQU 3)定义变量伪指令 4)定义存储单元类型的伪指令BYTE、WORD DWORD 5)LABEL定义标号名称和属性伪指令 6)SEG和OFFEST 取段和偏移地址伪指令 7)TYPE、SIZE和LENGTH 存储器地址操作数类型,字节单元数 8)段定义伪指令 9)过程定义伪指令PROC,ENDP,NEAR,FAR 10)定义结构的伪指

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号