微机原理与接口技术-第3章.ppt
《微机原理与接口技术-第3章.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术-第3章.ppt(175页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 3.1概述一、机器语言、汇编语言和高级语言第第3章章汇编语言程序设计汇编语言程序设计 1、机器语言 计算机中指令代码以二进制编码表示,这种代码计算机中指令代码以二进制编码表示,这种代码 机器可以识别与执行,把这种机器代码称为机器语言。机器可以识别与执行,把这种机器代码称为机器语言。用机器语言编写的程序称为机器语言程序(或目的用机器语言编写的程序称为机器语言程序(或目的程序)。程序)。例如例如 下面的机器代码就是下面的机器代码就是8086CPU8086CPU的三条机器指的三条机器指令令 B8H B8H,00H00H,30H30H 4EH 4EH,D8HD8H B9H B9H,14H14H,00
2、H00H 用机器语言书写的程序人们不易看懂,也不易记忆。用机器语言书写的程序人们不易看懂,也不易记忆。看起来非常的乏味。但是计算机却非常熟悉它。看起来非常的乏味。但是计算机却非常熟悉它。2、汇编语言、汇编语言用助记符代替操作码,用符号和数字代替地址码用助记符代替操作码,用符号和数字代替地址码(或操作数),这种语言称为汇编语言。(或操作数),这种语言称为汇编语言。用汇编语言编写的程序称为汇编语言源程序。必用汇编语言编写的程序称为汇编语言源程序。必须经过翻译,转换成机器语言,计算机才能执行。须经过翻译,转换成机器语言,计算机才能执行。汇编语言人们容易记忆,也容易看懂。汇编语言人们容易记忆,也容易看
3、懂。例如例如用用8086CPU的汇编语言可以把上述的机器指令代的汇编语言可以把上述的机器指令代码写成码写成MOVAX,3000H;B8HB8H,00H00H,30H30HMOVDS,AX;4EH4EH,D8HD8HMOVCX,0014H;B9HB9H,14H14H,00H00H3、高级语言高级语言不依赖具体的机器,面向对象的计算机语言称为高级不依赖具体的机器,面向对象的计算机语言称为高级语言。如语言。如BASIC,C,VB,VC等等高级语言易记忆,易懂、便于学习与掌握高级语言易记忆,易懂、便于学习与掌握汇编语言与高级语言的比较汇编语言与高级语言的比较汇编语言汇编语言高级语言高级语言执行速度快,
4、占内存小,执行速度快,占内存小,执行速度慢,占内存大,执行速度慢,占内存大,实施控制方便,通用性差实施控制方便,通用性差通用性好,可移植性强通用性好,可移植性强程序设计效率低,依赖机器程序设计效率低,依赖机器程序设计效率高,不依赖机器程序设计效率高,不依赖机器与硬件打交道方便。与硬件打交道方便。与硬件打交道不方便。与硬件打交道不方便。汇编语言汇编语言q用汇编语言编写的程用汇编语言编写的程序不能由机器直接执序不能由机器直接执行,而必须经汇编程行,而必须经汇编程序翻译成机器语言程序翻译成机器语言程序。序。q汇编过程示意:汇编过程示意:二、汇编程序二、汇编程序1、汇编程序是用来将汇编语言程序、汇编程
5、序是用来将汇编语言程序翻译成机器代码的系统(工具)程序。翻译成机器代码的系统(工具)程序。汇编语言源程序汇编语言源程序汇编语言汇编语言目标程序文件目标程序文件源程序列表源程序列表.ASM.OBJ.LST翻译翻译2、在、在DOS环境下建立和运行汇编语言程序的过程环境下建立和运行汇编语言程序的过程汇编语言程序的执行过程:汇编语言程序的执行过程:编辑程序编辑程序.ASM文件文件汇编程序汇编程序.OBJ文件文件连接程序连接程序.EXE文件文件Edit等等MASMLINK3、汇编程序的种类、汇编程序的种类1.自汇编程序和交叉汇编程序自汇编程序和交叉汇编程序2.基本汇编、小汇编和宏汇编基本汇编、小汇编和宏
6、汇编3.一次扫描和两次扫描的汇编一次扫描和两次扫描的汇编4、8086/8088宏汇编程序宏汇编程序MASM.EXE宏汇编程序宏汇编程序MASM.EXE5.00以及对应的连接程序以及对应的连接程序LINK.EXE三、调试与运行三、调试与运行1、源文件编辑、源文件编辑任何文本编辑器均可用于编辑汇编语言的源程序。例任何文本编辑器均可用于编辑汇编语言的源程序。例如如dos下的下的edit,turboC集成环境的编辑器,集成环境的编辑器,Windows下的记事本、写字板等。下的记事本、写字板等。汇编语言源程序以汇编语言源程序以ASCII码形式存放于内存中,扩展码形式存放于内存中,扩展名应为名应为.ASM
7、,给源文件命名后可存盘,源程序用大写、,给源文件命名后可存盘,源程序用大写、小写皆可。小写皆可。2、源文件汇编、源文件汇编用用Microsoft的宏汇编程序(的宏汇编程序(MASM)任何)任何版本汇编皆可。汇编有下列几种方式版本汇编皆可。汇编有下列几种方式方式方式1:在命令提示符下,键入在命令提示符下,键入MASM 屏幕上会出现如下提示,按照提示键入文件名屏幕上会出现如下提示,按照提示键入文件名回车即可回车即可。Sourcefilename.ASM:xxx Objectfilenamexxx.OBJ:Sourcelistingnul.LST:xxx Crose-referencenul.CRF
8、:xxx+Bytessymbolspacefree0WarnimgErrors0SeversErrors说明:汇编后生成说明:汇编后生成3个文件,即:目标文件(个文件,即:目标文件(.OBJ),),列表文件(列表文件(.LST),交叉引用文件(),交叉引用文件(.CRF)。同时告)。同时告诉程序员汇编有无错误(警告错误和严重错误)。无诉程序员汇编有无错误(警告错误和严重错误)。无错,汇编通过;有错,则修改源程序的错误后,再次错,汇编通过;有错,则修改源程序的错误后,再次汇编。汇编。方式方式2在命令行提示符下键入文件名与逗号和分号在命令行提示符下键入文件名与逗号和分号C:MASMMASMABC;
9、(生成(生成.OBJ文件,不产生文件,不产生.LST和和.CRF)C:MASMMASMABC,;(生成三个文件,名称为(生成三个文件,名称为ABC).OBJ文件中的地址操作数是可浮动的相对地址。文件中的地址操作数是可浮动的相对地址。.LST文件把源程序与机器代码(目的程序)都列表,可打印,文件把源程序与机器代码(目的程序)都列表,可打印,显示。显示。.CRF是用来对符号进行前后对照的文件,可了解源程序中符是用来对符号进行前后对照的文件,可了解源程序中符号(或变量)定义或引用情况。号(或变量)定义或引用情况。3、连接、连接在命令提示符下,键入在命令提示符下,键入LINK,或在或在Windows下
10、用鼠标直下用鼠标直接点击接点击LINK,即可连接。,即可连接。连接时屏幕显示如下:连接时屏幕显示如下:ObjectModules.OBJ:ABC RunFileABC.EXE:ListFileNUL.MAP:ABC Libraries.LIB:(注:注:MASM中没有库文件,可直接键中没有库文件,可直接键入回车)入回车)Link:WarnimgL4201:noStackSegment(其中,(其中,L4201表示连接程序错误信息代码,表示连接程序错误信息代码,4表示警告错误,表示警告错误,201为错误号。源程序中没有堆栈段不影响连接。)为错误号。源程序中没有堆栈段不影响连接。)LINK生成两个
11、文件:生成两个文件:.EXE为可执行文件。为可执行文件。.MAP为内存分配图为内存分配图文件,提供了文件中的内存地址分配的一些信息。文件,提供了文件中的内存地址分配的一些信息。4、调试与运行、调试与运行用用DEBUG与与Codeview软件都可进行目软件都可进行目的代码级程序的调试,对的代码级程序的调试,对.EXE文件可直接调文件可直接调入入DEBUG中跟踪调试。中跟踪调试。有错误需对源程序中的语句进行修改,汇有错误需对源程序中的语句进行修改,汇编中只能发现语法和符号等错误,不能发现编中只能发现语法和符号等错误,不能发现编程中的逻辑错误。编程中的逻辑错误。Codeview窗口调试工具,使用时请
12、参看有窗口调试工具,使用时请参看有关资料。关资料。3.2汇编语言源程序的格式分段结构分段结构汇编语言程序的结构汇编语言程序的结构汇编语言程序也是分段编写的,每段最长汇编语言程序也是分段编写的,每段最长64K。8088汇编语言的源程序是由多个段组成的,汇编语言的源程序是由多个段组成的,一个可一个可执行的汇编程序一般至少有一个代码段,其中包含执行的汇编程序一般至少有一个代码段,其中包含可执行的语句。可执行的语句。例:一个简单的汇编程序例:一个简单的汇编程序05A2001085array1array2DSCSmy_datasegmentagain:Moval,siarray1db05,0a2H,00
13、,10H,85HIncsinequ5Cmpal,50array2dbndup(?)Jbenextmy_dataendsMovdi,almy_codesegmentIncdiassumecs:my_codenext:deccxassumeds:my_datajnzagainbegin:movax,my_datamovah,4chmovds,axint21hLeasi,array1my_codeendsLeadi,array2endbeginMovcx,n3.2.2汇编语言语句的类型和组成汇编语言语句的类型和组成 语句类型语句类型语句类型语句类型指令语句:指令语句:以以8086/8088指令为基本
14、部分,必要时加上标号指令为基本部分,必要时加上标号及注释构成。每一条语句产生相对应的目标代码及注释构成。每一条语句产生相对应的目标代码。伪指令语句:伪指令语句:伪指令语句:伪指令语句:为汇编程序和连接程序提供一些必要控制为汇编程序和连接程序提供一些必要控制为汇编程序和连接程序提供一些必要控制为汇编程序和连接程序提供一些必要控制的管理性语句。汇编时,伪指令的管理性语句。汇编时,伪指令的管理性语句。汇编时,伪指令的管理性语句。汇编时,伪指令不产生目标代码。不产生目标代码。宏指令语句:宏指令语句:宏指令语句:宏指令语句:由标号、宏指令和注释构成。汇编时,将宏指由标号、宏指令和注释构成。汇编时,将宏指
15、由标号、宏指令和注释构成。汇编时,将宏指由标号、宏指令和注释构成。汇编时,将宏指令展开还原为定义时的多条语句,再逐条汇编。令展开还原为定义时的多条语句,再逐条汇编。令展开还原为定义时的多条语句,再逐条汇编。令展开还原为定义时的多条语句,再逐条汇编。1.指令语句及其格式指令语句及其格式指令语句即第二章介绍的指令语句即第二章介绍的8086CPU的指令,每一条指的指令,每一条指令即可构成一指令语句。每一指令都有对应的机器代令即可构成一指令语句。每一指令都有对应的机器代码。码。指令语句格式指令语句格式标号:标号:助记符助记符操作数,操作数,;注释注释格式共有四部分:其中标号,操作数,注释可以是格式共有
16、四部分:其中标号,操作数,注释可以是任选项;助记符是必选项,该项在一条语句中不可省任选项;助记符是必选项,该项在一条语句中不可省略。略。标号后面一定要跟一个冒号;注释前一定加一分号。标号后面一定要跟一个冒号;注释前一定加一分号。2、伪指令语句及其格式、伪指令语句及其格式伪指令语句不是真正的指令语句,它不产生机器代码,伪指令语句不是真正的指令语句,它不产生机器代码,它是汇编程序要求的,用来指示汇编程序做何种操作,它是汇编程序要求的,用来指示汇编程序做何种操作,定义代码段、数据段在何处,是否产生列表等。定义代码段、数据段在何处,是否产生列表等。伪指令语句格式伪指令语句格式名字名字定义符定义符参数,
17、参数,参数,参数;注释注释格式共有四部分:其中名字,参数,注释可以是任格式共有四部分:其中名字,参数,注释可以是任选项;定义符是必选项,该项在一条伪指令语句中不选项;定义符是必选项,该项在一条伪指令语句中不可省略。对于有些语句,名字也是必需的。可省略。对于有些语句,名字也是必需的。名字后面不要跟冒号:注释前一定加一分号;各个名字后面不要跟冒号:注释前一定加一分号;各个参数之间用,分开。参数之间用,分开。3.宏指令语句及其格式宏指令语句及其格式4.宏指令语句:宏指令语句:5.为了书写方便,把一个重复出现的为了书写方便,把一个重复出现的汇编语句序列用一条指令代替,这种重新汇编语句序列用一条指令代替
18、,这种重新定义的指令就称为宏指令。定义的指令就称为宏指令。6.这种由宏指令组成的语句称为宏指这种由宏指令组成的语句称为宏指令语句。令语句。7.宏指令必须先定义,才能被使用,宏指令必须先定义,才能被使用,这称为宏定义;在汇编时,又要把宏指令这称为宏定义;在汇编时,又要把宏指令语句进行宏展开,生成对应的机器代码。语句进行宏展开,生成对应的机器代码。8.宏指令语句格式将在后面应用中介宏指令语句格式将在后面应用中介绍。绍。名字(名字(标识符)标识符)汇编语言语句的四个域,一个语句行的基本格式为:汇编语言语句的四个域,一个语句行的基本格式为:标识符标识符操作符操作符操作数操作数1,操作数,操作数2;注释
19、注释标识符(名字)标识符(名字)标识符(名字)标识符(名字)-标号和名字(变量)标号和名字(变量)标号和名字(变量)标号和名字(变量)标识符可由数字、字母和下划线等一串字符构成,用于一段标识符可由数字、字母和下划线等一串字符构成,用于一段程序、一组(或一个)数据或一个段的开头。使用时要注意以程序、一组(或一个)数据或一个段的开头。使用时要注意以下下3点:点:不能以数字开头,数字可用在非开头的其它位置;不能以数字开头,数字可用在非开头的其它位置;其最大长度为其最大长度为31个字符。个字符。指令语句中的名字(标号)后跟冒号,而伪指令和宏指令的指令语句中的名字(标号)后跟冒号,而伪指令和宏指令的名字
20、之后不跟冒号。名字之后不跟冒号。一一般般说说来来,名名字字项项可可以以是是标标号号或或变变量量。它它们们都都用用来来表表示示本本语语句句的的符符号号地地址址,它它是是可可有有可可无无的的,只只有有当当需需要要用用符符号号地地址址来来访访问问该该语句时它才需要出现。语句时它才需要出现。标标号号:标标号号在在代代码码段段中中定定义义,后后面面跟跟冒冒号号:,它也可以用,它也可以用LABELLABEL或或EQUEQU伪操作来定义。伪操作来定义。此此外外它它还还可可以以作作为为过过程程名名定定义义,这这将将在在以以后后的的章章节节中中加加以以说说明明。标标号号经经常常在在转转移移指指令令或或CALLC
21、ALL指指令令的的操操作作数数字字段段出出现现,用用以以表表示示转向地址。转向地址。标号有三种属性:段、偏移及类型。标号有三种属性:段、偏移及类型。标标号号实实际际上上是是用用符符号号表表示示的的地地址址(其其指指令令语语句句的的符号地址)。符号地址)。段段属属性性定定义义标标号号的的段段起起始始地地址址,此此值值必必须须在在一一个个段寄存器中,而标号的段则总是在段寄存器中,而标号的段则总是在CSCS寄存器中。寄存器中。偏偏移移属属性性:标标号号的的偏偏移移地地址址是是1616位位无无符符号号数数,它它代表从段起始地址到定义标号的位置之间的字节数。代表从段起始地址到定义标号的位置之间的字节数。
22、类型属性:类型属性:用来指出该标号是在本段内引用还是用来指出该标号是在本段内引用还是在其它段中引用的。如在段内引用的,则称为在其它段中引用的。如在段内引用的,则称为NEAR,指针长度为,指针长度为2字节;如在段外引用,则称为字节;如在段外引用,则称为FAR,指,指针长度为针长度为4字节。字节。变量:变量:是存放在某些存储单元中是存放在某些存储单元中的操作数,的操作数,变量在除代码段以外的其变量在除代码段以外的其他段中定义,后面不跟冒号。他段中定义,后面不跟冒号。它也可以用它也可以用LABLE或或EQU伪操伪操作来定义。变量经常在操作数字段出作来定义。变量经常在操作数字段出现。现。所有的变量都有
23、一个固定的所有的变量都有一个固定的地址地址(用变量名代表),它由段和偏移地址(用变量名代表),它由段和偏移地址组成;同时还有一个组成;同时还有一个类型类型,变量的类型变量的类型属性定义该变量所保留的字节数。如属性定义该变量所保留的字节数。如BYTEBYTE(1 1个字节长)、个字节长)、WORDWORD(2 2个字节长)、个字节长)、DWORDDWORD(4 4个字节长)、个字节长)、DQDQ(8 8个字节长)、个字节长)、DTDT(1010个字节长),这一点在数据定义个字节长),这一点在数据定义伪操作中说明。伪操作中说明。在程序中同样的标号或变量在程序中同样的标号或变量的定义只允许出现一次,
24、否则汇编的定义只允许出现一次,否则汇编程序会指示出错。程序会指示出错。在程序中,变量可以使用数在程序中,变量可以使用数据定义伪指令进行初始化,见伪指据定义伪指令进行初始化,见伪指令一节中的数据定义部分。令一节中的数据定义部分。操作符操作符可以是指令、伪指令或宏指令的助记符。可以是指令、伪指令或宏指令的助记符。3.3.2.52.5操作数:操作数:操作数:操作数:可以是常数、寄存器名、标号、变量和表达式。可以是常数、寄存器名、标号、变量和表达式。可以是常数、寄存器名、标号、变量和表达式。可以是常数、寄存器名、标号、变量和表达式。1、常数常数可以是二进制、十进制、八进制或十六进制数,也可以是字符串。
25、可以是二进制、十进制、八进制或十六进制数,也可以是字符串。10100101B;二进常数;二进常数256D或或256;十进常数;十进常数356Q或或356O;八进常数;八进常数2AFH;十六进常数;十六进常数0ABCDH;十六进常数,但十六进常数的第一个字符必须是;十六进常数,但十六进常数的第一个字符必须是数字。数字。ABCD;字符串常数,汇编后对应为相应的;字符串常数,汇编后对应为相应的ASCII码:码:41H44H1234;数字字符串常数,字符串需用单引号数字字符串常数,字符串需用单引号,汇编后为汇编后为31H34H2、寄存器寄存器寄存器寄存器8086/8088的寄存器是程序中最常出现的符号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术
限制150内