武汉理工通信原理课件第六章汇编语言程序设计幻灯片

上传人:二*** 文档编号:252536455 上传时间:2022-02-11 格式:PPT 页数:67 大小:424.50KB
返回 下载 相关 举报
武汉理工通信原理课件第六章汇编语言程序设计幻灯片_第1页
第1页 / 共67页
武汉理工通信原理课件第六章汇编语言程序设计幻灯片_第2页
第2页 / 共67页
武汉理工通信原理课件第六章汇编语言程序设计幻灯片_第3页
第3页 / 共67页
武汉理工通信原理课件第六章汇编语言程序设计幻灯片_第4页
第4页 / 共67页
武汉理工通信原理课件第六章汇编语言程序设计幻灯片_第5页
第5页 / 共67页
点击查看更多>>
资源描述

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

1、第六章第六章 汇编语言程序设计汇编语言程序设计一.汇编语言语法二.汇编语言程序设计三.汇编程序及上机设计 四.DOS及BIOS功能调用五.任务切换与混合语言编程 2021/8/6 116.1汇编语言语法一、计算机程序设计语言的演变 1)机器语言:直接用机器指令来编制计算机程序的方法 2)汇编语言:可以用助记符来表示指令的操作和操作数,也可以用标号和符号来代替地址、常量和变量。 2021/8/6 22单击此处编辑母版标题样式单击此处编辑母版副标题样式2021/8/63 3)高级语言:更接近于人们的自然语言和习惯的教学语言来描述算法的执行过程,从而使编写的过程更加直观和简练。 最近,计算机语言的另

2、一个发展方向是混合语言程序设计。混合语言并不是一种新出现的自成系统的新型语言,它采用两种或两种以上的编程语言加以组合编程,是一种程序接口技术,实现不同语言程序之间的相互调用。 二、为什么要用汇编语言编写程序1)汇编语言非常接近机器语言程序,通过编制汇编语言程序,可以清楚地了解计算机的工作过程。2)现在的微机系统中,底层的一些功能仍然靠汇编语言程序来实现。3)汇编语言程序的效率通常高于高级语言程序。 2021/8/6 44三、汇编语言的语句种类及其格式 1、指令语句:每一条指令语句在汇编时都要产生一个可供机器执行的机器目标代码,所以这种语言又叫可执行语句。指令语句的可是如下: 标号:( 前缀指令

3、) 助记符(操作数);(注释) 1)标号。这是一个任选字段。标号是指令语句的标识符,在语句之首,必须以“:”作为结束符。 对标号的规定: 由字符AZ ,az ,09及符号、$、下划线_ 等组成, 最长31个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 (如指令的助记符等) 对定义的符号不区分大小写。 2021/8/6 552)指令助记符。这是为指令操作码规定的符号。3)操作数。可以根据指令的功能的需要,可不带操作数,带一个操作数或两个操作数,若有两个操作数时,中间用“,”号分开。 操作数给出参与操作的数或数所在的地方。 操作数可以是常数、寄存器、存储

4、器操作数、 标号名、过程名或表达式等。4)注释。注释是为了方便程序员阅读程序而加的说明。 2021/8/6 66四、 常数、标号、变量及表达式 1、常数:指令中出现的那些固定值和字符串常数两类。 2、标号:用符号表示的地址,称为符号地址,用以指示 此指令语句所在的地址。 3、变量:变量是与一个数据项的第一字节相对应的标识 符,它表示该数据第一字节在现行段中的偏移 量。 4、表达式:表达式由操作数和运算符组成。 2021/8/6 77常数给出具体的数据。可以是数字常量或字符常量。数字默认十进制,也可加D表示十进制数。如1234D,1234数字后加B表示二进制数。如1010B数字后加H表示十六进制

5、数。如1234H字符常量,用单引号表示。如1234汇编时,用字符对应的ASCII表示。如31H,32H,33H,34H例 data1DB12,34,56;十进制data2DB12H,34H,56H;十六进制MOVAL,G;字符stringDB1234;字符串 2021/8/6 88lA、B、C、D、E、F开头的十六进制数前面加0,与H结尾的标识符区别。如寄存器名AH、BH、CH、DH变量名abcdH等例 movAL,0AHmovAL,AHmovBX,0abcdH 2021/8/6 99标号标号是符号表示的地址,称为符号地址,标号具有段地址,偏移地址,和类型3个属性类型属性有NEAR和FAR类型

6、 2021/8/6 1010 变量变量 变量的值在程序运行过程中可随时修改 变量有3个属性: (1)段地址:变量所在段的段地址。(2)偏移地址:变量所在段的偏移地址。(3)类型:变量所占的字节数。 变量名 DB 表达式 定义字节变量 变量名 DW 表达式 定义字变量 变量名 DD 表达式 定义双字变量 变量名 DQ 表达式 定义长字变量(8个字节) 变量名 DT 表达式 定义十字节变量2021/8/6 1111 上述伪指令中表达式的形式: (1)一个或多个常数,或运算公式(结果为常数) 当有多个常数时,两两之间用逗号分隔。 从左到右由低地址向高地址顺序存储。(2)字符串 用引号括住,长度不超过

7、255。 从左到右由低地址向高地址以ASCII码顺序存储。(3)问号?(通配符) 仅留出用于存储数据的单元,但不改变单元中原有的数据。(4)DUP(重复方式) 重复次数 DUP (表达式);将表达式重复预置。2021/8/6 1212 例: HUA DB 2 DUP (HUA,3 DUP (0)该指令将数据块(HUA,3 DUP (0)重复2次,而数据块(HUA,3 DUP (0)以字符串HUA开始,接下来是3个0。在内存中的存储情况如图所示:首单元首单元48H55H41H00H00H00H48H55H41H00H00H00HDUPDUP可以重叠使用,相当于大循环中嵌套小循环可以重叠使用,相当

8、于大循环中嵌套小循环2021/8/6 1313 (5)地址表达式(仅用于DW或DD) 使用DW时: 地址表达式中的变量名称表示变量第一个单元的偏移地址 标号表示指令的第一个字节的偏移地址。 使用DD时: 低两字节为偏移地址,高两字节为段地址。 地址表达式中的变量或标号可与常数相加减,结果仍为偏移 地址,常数表示位移量:+表示向高地址方向移动;表示 向低地址方向移动。 变量与标号之间不能相加,但可以相减,其结果为一常数, 表示两者之间的距离。2021/8/6 1414 例:P163DATA1 DB 20HDATA2 DW 0204H,100HDATA3 DB (-1*3),(15/3)DATA4

9、 DD 12345HDATA5 DB 0123DATA6 DW AB,C,DDATA7 DB ?DATA8 DD ?DATA9 DB 5 DUP (00)DATA10 DW 3 DUP (?)2021/8/6 1515表达式l由常量、标号(标识符)、变量和一些操作符构成。l汇编程序对表达式进行运算后,得到一个确定的数值,再把这个数值汇编到指令中。l据表达式所表示的内容分:数字表达式、地址表达式。l表达式是指令或伪操作的操作数;表达式中的操作符由汇编程序完成。例 MOVAX,12-4;MOVAX,8;数字表达式LEABX,string+4;地址表达式 2021/8/6 1616表达式中的操作符有

10、以下几类:(1)算术运算符(+、*、/、MOD)(2)逻辑运算符(AND、OR、NOT、XOR)(3)关系运算符(EQ、NE、GT、GE、LT、LE)真:FFFFH;假:0(4)分析运算符(SEG、OFFSET、TYPE、SIZE、LENGTH)(5)综合运算符(PTR,THIS)(6)地址记数器($) 2021/8/6 1717例: (1)算术运算符(+、-、*、/、MOD(取余数)MOVAX,6*8MOVAX,48AMODB;用A除以B,保留运算的余数。要求A、B均为正整数。(2)逻辑运算符(AND、OR、NOT、XOR)MOVAX,80hOR70hMOVAX,0F0h逻辑运算符可以嵌套、

11、组合使用如P165例MOVBX,(PORTLT5)AND20)OR(PORTGE5)AND30)思考:若要求当PORT的值大于5而小于10时,为BX赋值40应如何编写指令?(3)关系运算符(EQ、NE、GT、GE、LT、LE)真:FFFFH;假:0MOVAX,1GE2MOVAX,0 2021/8/6 1818(4)分析运算符:TYPE,LENGTH,SIZE,OFFSET,SEG5种。把一些特征或存贮器地址的一部分作为数值回送。类型运算符TYPE格式:TYPEvariable变量或label标号回送该变量以字节数表示的类型(DB为1,DW为2,DD为4,DQ为8,DT为10)回送标号类型数值(

12、NEAR为,FAR为2)例:ARRAYDW1,2,3ADDSI,TYPEARRAY汇编程序其形式:ADDSI,2 2021/8/6 1919 LENGTH格式:LENGTHvariable对于变量中使用DUP,汇编回送分配给变量单元数,其他情况回送1。例:FESSDW100DUP(0)对于MOVCX,LENGTHFEES汇编程序将其形式:MOVCX,100其他情况:例:ARRAYDW1,2,3对于指令MOVCX,LENGTHARRAY汇编程序将使其形式为:MOVCX,1例:TABLEDBABCD对于指令MOVCX,LENGTHTABLE汇编程序使其形式为:MOVCX,1 2021/8/6 20

13、20 SIZE格式:SIZEvariable回送分配给该变量的字节数LENGTH*TYPE例:FEESDW100DUP(0)MOVCX,SIZEFEES将形成:MOVCX,200例:TABLEDBABCDMOVCX,SIZETABLE将形成:MOVCX,1例:ARRAYDW1,2,3MOVCX,SIZEARRAY形成:MOVCX,2LENGTH*TYPE=2 2021/8/6 2121 OFFSET格式: OFFSET variable 变量 或 label 标号取出变量名或标号所在段的偏移地址 例 MOV BX , OFFSET yy SEG格式: SEG variable 变量 或 lab

14、el 标号取出变量名或标号所在段的 段地址 例 MOV AX , SEG yy 2021/8/6 2222bbSEGMENTyyDB6dup(?)bbENDSccSEGMENTASSUMECS:cc,DS:aa,ES:bbstart:CLDMOVAX,SEGyyMOVES,AXMOVDI,OFFSETyyMOVCX,6.ccENDSENDstart 2021/8/6 2323小结: TYPE变量的返回值是类型的字节数:DB为1,DW为2,DD为4,DQ为8,DT为10;TYPE标号的返回值是:NEAR为1,FAR为2。LENGTH变量返回:DUP分配的单元数,对于其他情况则返回1。 SIZE返

15、回值是:LENGTH和TYPE值的乘积,即变量的字节数。 2021/8/6 2424注意:SEG、OFFSET只能对符号地址操作MOVAX,SEGBXMOVBX,OFFSETSI 2021/8/6 2525(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定义的字类型没有修

16、改。 例2是利用PTR算符明确类型不明确的地址表达式的类型。 2021/8/6 2626THIS 用来规定所指变量或标号的类型属性或距离属性格式: THIS 类型 类型可为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 . 2021/8/6 27276.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)定义结构的伪指令STRU

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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