第五章汇编语言程序设计课件.ppt
《第五章汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第五章汇编语言程序设计课件.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程第五章第五章 汇编语言程序设计汇编语言程序设计School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 程序是计算机命令(语句)的有序集合。程序是计算机命令(语句)的有序集合。机器语言、汇编语言、高级语言机器语言、汇编语言、高级语言 机器语言机器语言是一种用二进制数表示指令和数据,能是一种用二进制数表示指令和数据,能被机器直接识别的语言。被机器直接识别的
2、语言。汇编语言弥补了机器语言的不足,采用助记符编汇编语言弥补了机器语言的不足,采用助记符编程。但也是程。但也是面对机器面对机器的,要求程序员对机器指令系的,要求程序员对机器指令系统、内存空间分配了如指掌,地址是汇编语言关键统、内存空间分配了如指掌,地址是汇编语言关键所在,执行速度快,但可移植性差。所在,执行速度快,但可移植性差。高级语言是面向过程的,程序员没必要了解内存高级语言是面向过程的,程序员没必要了解内存分配,更符合人的思维方式,执行速度相对慢一些,分配,更符合人的思维方式,执行速度相对慢一些,可移植性好。可移植性好。School of Engineering&Automation Ti
3、anjin Polytechnic University微机原理课程微机原理课程5.1汇编语言的基本语法汇编语言的基本语法 汇编语言源程序中的语句可以分为三种类型:汇编语言源程序中的语句可以分为三种类型:指令语句,伪指令语句和宏指令语句。指令语句,伪指令语句和宏指令语句。(1)指令语句:它是能产生目标代码,指令语句:它是能产生目标代码,CPU 可可以执行的能完成特定功能的语句。以执行的能完成特定功能的语句。(2)伪指令语句:它是一种不产生目标代码的语伪指令语句:它是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。句,它仅仅在汇编过程中告诉汇编程序应如何汇编。伪指令语句是汇编
4、程序在汇编时使用的。伪指令语句是汇编程序在汇编时使用的。(3)宏指令语句宏指令语句:它是一种编程者利用伪指令语它是一种编程者利用伪指令语句自己定义的语句句自己定义的语句。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程1.伪指令的语句格式伪指令的语句格式 1)标号)标号 标号名字段,它是任选字段。目标名后面标号名字段,它是任选字段。目标名后面不能用冒不能用冒号号“:”,标号名可以是常量名、变量名、过程名、结,标号名可以是常量名、变量名、过程名、结构名、记录名等。可以作为指令语句和伪指令语句的操
5、构名、记录名等。可以作为指令语句和伪指令语句的操作数,这时,标号名表示一个常量或存储器地址。作数,这时,标号名表示一个常量或存储器地址。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 2)伪指令)伪指令 助记符或伪操作字段,不可省略。伪指令种类很助记符或伪操作字段,不可省略。伪指令种类很多,如定义数据伪指令多,如定义数据伪指令DB,DW,DD;段定义伪指令;段定义伪指令SEGMENT;定义过程伪指令;定义过程伪指令PROC;。它们是伪。它们是伪指令语句要求汇编程序完成的具体操作命令指令语句要
6、求汇编程序完成的具体操作命令 3)操作数)操作数 本字段是否需要,需要几个,需要什么样的操作本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。操作数可以是数等都由伪指令字段中伪指令来确定。操作数可以是一个常数(二进制、十进制、十六进制等)、字符串、一个常数(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号、一些专用的符号(如常量名、变量名、标号、一些专用的符号(如BYTE,FAR,PARA等)。等)。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 4)注释
7、)注释 任选字段,它必须以分号为开始,它的作用与指任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。令语句的注释字段相同。2.常数、变量和标号常数、变量和标号 常数、变量和标号是汇编语言能识别的数据项,常数、变量和标号是汇编语言能识别的数据项,它是指令和伪指令语句中操作数的基本组成部分。它是指令和伪指令语句中操作数的基本组成部分。一个数据项包含有它的数值和属性两部分,这两部一个数据项包含有它的数值和属性两部分,这两部分对一条语句汇编成机器目标代码都有直接关系。分对一条语句汇编成机器目标代码都有直接关系。School of Engineering&Automation Tianji
8、n Polytechnic University微机原理课程微机原理课程 1)常数常数 常数是没有任何属性的纯数值。在汇编期间,它常数是没有任何属性的纯数值。在汇编期间,它的值已能完全确定,且在程序运行中,它也不会发生的值已能完全确定,且在程序运行中,它也不会发生变化。变化。2)变量变量 变量是代表存放在某些存储单元的数据,这些数据变量是代表存放在某些存储单元的数据,这些数据在程序运行期间随时可以修改。为了便于对变量的访在程序运行期间随时可以修改。为了便于对变量的访问,它常常以变量名的形式出现在程序中,它可以认问,它常常以变量名的形式出现在程序中,它可以认为是存放数据存储单元的符号地址。为是存
9、放数据存储单元的符号地址。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 (1)变量的定义与预置:定义变量就是给变量分)变量的定义与预置:定义变量就是给变量分配存储单元,且对这个存储单元赋予一个符号名配存储单元,且对这个存储单元赋予一个符号名变量名,同时将这些存储单元预置初值。变量名,同时将这些存储单元预置初值。定义变量是用数据定义伪指令定义变量是用数据定义伪指令DB,DW,DD等。等。例如:例如:VAR_DATASEGMENT DATA1 DB 12H DATA2 DB 34H DATA3
10、 DW 5678H VAR_DATA ENDSSchool of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程(2)数据定)数据定义伪义伪指令:指令:为为数据数据项项分配存分配存储单储单元并元并预预置初置初值值。变量名变量名表达式表达式1,表达式,表达式2,数值表达式。数值表达式。DA_BYTEDB 50H,50 DA_WORD DW0A3F1H,4981H School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程?
11、表达式:不带引号的?表示可预置任何内容。?表达式:不带引号的?表示可预置任何内容。DA_BDB?,?DA_WDW?,?字符串表达式:对于字符串表达式:对于DB伪指令,为字符串中每一个伪指令,为字符串中每一个字符分配一个字节单元。字符串必须是用引号括起来且字符分配一个字节单元。字符串必须是用引号括起来且不超过不超过255个字符。字符串自左至右以字符的个字符。字符串自左至右以字符的ASCII码按码按地址递增的排列顺序依次存放地址递增的排列顺序依次存放。STRING1 DBABCDEFSTRING2 DW AB,CD,EF STRING3 DD AB,CD School of Engineering
12、&Automation Tianjin Polytechnic University微机原理课程微机原理课程School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 带带DUP表达式:表达式:DUP是定义重复数据操作符。是定义重复数据操作符。变量名变量名表达式表达式1,DUP(表达式表达式2)D_B1 DB 20H DUP(?)D_B2 DB 10H DUP(ABCD)D_W1 DW 10H DUP(4)School of Engineering&Automation Tianjin Polytech
13、nic University微机原理课程微机原理课程3)标号标号 标号是一条指令目标代码的符号地址,它常作为标号是一条指令目标代码的符号地址,它常作为转移指令(含子程序调用指令)的操作数。转移指令(含子程序调用指令)的操作数。LOP1:LOOPLOP1JNENEXTNEXT:(1)段属性)段属性(2)偏移量属性:)偏移量属性:(3)距离属性:)距离属性:NEAR(近);(近);FAR(远)(远)School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程(1)SEG格式:格式:SEG功能是求符号名所在段的
14、段基址。功能是求符号名所在段的段基址。(2)OFFSET格式:格式:OFFSET 功能是求符号名所在段的偏移地址。功能是求符号名所在段的偏移地址。(3)TYPE格式:格式:TYPE 功能是获得符号名类型值。功能是获得符号名类型值。3.运算符运算符School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程(4)SIZE格式:格式:SIZE 功能是获得为符号名分配的字节数。为符号名定功能是获得为符号名分配的字节数。为符号名定义的数据项必须是用重复格式义的数据项必须是用重复格式DUP()定义的。定义的。(5)
15、PTR格式:格式:PTR 功能是定义符号名为新类型。如,设内存变量功能是定义符号名为新类型。如,设内存变量D1是字节属性,把它的两个字节内容送到是字节属性,把它的两个字节内容送到AX中中 MOV AX,WORD PTR D1School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 5.2 伪指令伪指令 伪指令没有对应的机器指令,它不是由伪指令没有对应的机器指令,它不是由86系列系列CPU来执行,而是由来执行,而是由MASM-86识别,并完成相应的识别,并完成相应的功能。它在很大程度上规定了功能。它在很
16、大程度上规定了MASM-86的性能,因的性能,因此也可称之为汇编命令。此也可称之为汇编命令。1.符号定义伪指令(赋值语句)符号定义伪指令(赋值语句)1)EQU格式:格式:EQU 2)格式:格式:=School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程2.内存数据定义伪指令内存数据定义伪指令 1)字节定义伪指令字节定义伪指令DB格式:格式:名字名字 DB 3)4字节定义伪指令字节定义伪指令DD格式:格式:名字名字 DD 2)字定义伪指令字定义伪指令DW格式:格式:名字名字 DW School of E
17、ngineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程3.段定义伪指令段定义伪指令 1).SEGMENT/ENDS格式:格式:SEGMENT定位方式定位方式连接方式连接方式类类 型名型名 ENDS 段定义伪指令为程序的汇编和连接说明了段名、段定义伪指令为程序的汇编和连接说明了段名、段的各种属性以及段的开始和结束。段名是自定义符,段的各种属性以及段的开始和结束。段名是自定义符,开始的段名与结束的段名必须相同。段的长度不超过开始的段名与结束的段名必须相同。段的长度不超过64KB。School of Engineering&A
18、utomation Tianjin Polytechnic University微机原理课程微机原理课程(1)定位方式(定位类型)定位方式(定位类型Align):定位方式指定):定位方式指定段的起始地址边界,方式有段的起始地址边界,方式有4种。种。PAGE指定起始地址的低指定起始地址的低8位是位是0,即其值能,即其值能被被256整除(称为页对齐)。整除(称为页对齐)。PARA指定起始地址的低指定起始地址的低4位是位是0,即其值能,即其值能被被16整除(称为段对齐)。这是系统隐含定位方式。整除(称为段对齐)。这是系统隐含定位方式。WORD指定起始地址的最低位是指定起始地址的最低位是0,即其值,即
19、其值能被能被2整除(称为字对齐)。整除(称为字对齐)。BYTE指定起始地址是任意值(称为字节对指定起始地址是任意值(称为字节对齐)。齐)。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程(2)连接方式(组合类型):连接方式告诉连接程)连接方式(组合类型):连接方式告诉连接程序,本段与其他段可按某种方式连接,它有序,本段与其他段可按某种方式连接,它有6种选择。种选择。PUBLIC告诉连接程序本段与其他同名同类告诉连接程序本段与其他同名同类别的段连接起来,公用一个段的起始地址,形成一个物别的段连接
20、起来,公用一个段的起始地址,形成一个物理段。理段。STACK表示本段是堆栈段,连接方式同表示本段是堆栈段,连接方式同PUBLIC,连接后的段起始地址在,连接后的段起始地址在SS寄存器中。连接程寄存器中。连接程序要求源程序至少要有一个堆栈段,否则提示错误,此序要求源程序至少要有一个堆栈段,否则提示错误,此时,系统取约定堆栈段值。时,系统取约定堆栈段值。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 空缺(空缺(NONE)表示本段不与任何段连接,这表示本段不与任何段连接,这是系统隐含连接方式。是
21、系统隐含连接方式。COMMON表示本段与同名同类型的段共用同表示本段与同名同类型的段共用同一段起始地址,即同名同类段相重叠,段的长度是最一段起始地址,即同名同类段相重叠,段的长度是最长段的长度。长段的长度。MEMORY表示本段在连接时定位在所有段之表示本段在连接时定位在所有段之上,即高地址处。上,即高地址处。AT表达式表达式表示本段定位在表达式值指定的段地表示本段定位在表达式值指定的段地址处。址处。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程2).ASSUME 格式:格式:ASSUME 段
22、寄存器:段定义名段寄存器:段定义名1,段寄,段寄存器:段定义名存器:段定义名2,ASSUME伪指令告诉汇编程序,将某一个段寄存伪指令告诉汇编程序,将某一个段寄存器设置为存放某一个逻辑段的段地址,即明确指出源程器设置为存放某一个逻辑段的段地址,即明确指出源程序中的序中的逻辑段与物理段之间的关系逻辑段与物理段之间的关系。当汇编程序汇编一。当汇编程序汇编一个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。在一个源程序中,的指令或数据。在一个源程序中,ASSUME伪指令定伪指令定义符应该放在可执行程序开始位置的前面。义符应该放在可执行程序开始
23、位置的前面。ASSUME伪指令只是通知汇编程序有关段寄存器伪指令只是通知汇编程序有关段寄存器与逻辑段的关系,并没有给段寄存器赋予实际的初值。与逻辑段的关系,并没有给段寄存器赋予实际的初值。用户需要通过指令给有关段寄存器赋值。用户需要通过指令给有关段寄存器赋值。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 .STACK 64 .DATA DATA1 DB 15H DATA2 DB 29H SUM DB?.CODE 3.简化段定义简化段定义 “.CODE”、“.DATA”和和“.STACK”来
24、分别对应寄存来分别对应寄存器器CS、DS和和SS。例如以下代码片段:例如以下代码片段:MAIN PROC FARMOV AX,DATA MOV DS,AX School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程 STSEG SEGMENT DB 64 DUP (?)STSEG ENDS4 过程(子程序)定义伪指令过程(子程序)定义伪指令 格式:格式:PROCNEAR(或(或 FAR)ENDP 定义过程是为实现子程序调用而设的。调用格式为:定义过程是为实现子程序调用而设的。调用格式为:CALL 过程起
25、始名和终止名必须相同。过程起始名和终止名必须相同。School of Engineering&Automation Tianjin Polytechnic University微机原理课程微机原理课程5 模块定义与连接伪指令模块定义与连接伪指令 1)NAME格式:格式:NAME模块名模块名 该伪指令说明程序模块的开始,并指出模块名。该伪指令说明程序模块的开始,并指出模块名。模块名是自定义符,它不能是系统保留字,每次汇模块名是自定义符,它不能是系统保留字,每次汇编只能出现一次。若该伪指令默认,则取编只能出现一次。若该伪指令默认,则取TITLE语句语句中的页标题前中的页标题前6个字符;若没有个字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 汇编语言 程序设计 课件
限制150内