微机原理课件第四章-汇编语言程序设计.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《微机原理课件第四章-汇编语言程序设计.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课件 第四 汇编语言 程序设计
- 资源描述:
-
1、1微型计算机原理及其应用微型计算机原理及其应用第四章:汇编语言程序设计第四章:汇编语言程序设计2第四章第四章 汇编语言程序设计汇编语言程序设计1.1.汇编语言程序格式汇编语言程序格式2.2.伪指令语句伪指令语句3.3.DOSDOS系统功能调用和系统功能调用和BIOSBIOS中断调用中断调用4.4.程序设计方法程序设计方法3 汇编语言汇编语言是利用指令的是利用指令的助记符助记符、符号地址符号地址、标号标号来编写的语言。来编写的语言。用汇编语言编写的程序称为用汇编语言编写的程序称为汇编语言源程序汇编语言源程序;把汇编语言源程序翻译成由机器代码组成的目标把汇编语言源程序翻译成由机器代码组成的目标程序
2、的过程称为程序的过程称为汇编汇编;用来把汇编语言源程序自动翻译成目标程序的软用来把汇编语言源程序自动翻译成目标程序的软件叫件叫汇编程序汇编程序。4 计算机语言可分为计算机语言可分为机器语言机器语言、汇编语言汇编语言、高级语高级语言言三类。三类。机器语言是计算机唯一能识别的语言(二进制语机器语言是计算机唯一能识别的语言(二进制语言)言)汇编语言汇编语言是是面向机器面向机器的语言,不同的的语言,不同的CPUCPU有不同有不同的汇编语言(的汇编语言(PCPC机汇编、单片机汇编)机汇编、单片机汇编)优点:直接针对硬件操作,效率高,节省内存,优点:直接针对硬件操作,效率高,节省内存,运行速度快,实时性能
3、好。运行速度快,实时性能好。高级语言是高级语言是面向过程面向过程的语言:如的语言:如BasicBasic、c c、PascalPascal 目前流行的目前流行的面向对象面向对象的语言:的语言:VBVB、VCVC、C#C#80868086系统中常用的汇编程序:系统中常用的汇编程序:宏汇编程序宏汇编程序MASMMASM5【例例】显示输出显示输出“This is a sample program.”This is a sample program.”DATA DATA SEGMENTSEGMENT ;数据段数据段DA1 DA1 DBDB This is a sample program.This i
4、s a sample program.DBDB 0DH,0AH,0DH,0AH,;回车符和换行符的回车符和换行符的ASCIIASCII码码DATA DATA ENDSENDS STACK STACK SEGMENTSEGMENT STACK STACK;STACK STACK;堆栈段堆栈段 ST1 ST1 DBDB 100 DUP 100 DUP(?);定义定义100100个空的字节单元个空的字节单元STACK STACK ENDSENDSCODE CODE SEGMENTSEGMENT ;代码段代码段 ASSUMEASSUME CS:CODE,DS:DATA,SS:STACK ;CS:COD
5、E,DS:DATA,SS:STACK ;段分配段分配MAIN MAIN PROCPROC FAR ;FAR ;主过程开始主过程开始START:MOV AXSTART:MOV AX,STACK ;STACK ;初始化初始化SSSS MOV SS MOV SS,AXAX6 PUSH DSPUSH DS ;为返回为返回DOSDOS设置堆栈设置堆栈 MOV AXMOV AX,0 0 PUSH AX PUSH AX MOV AX MOV AX,DATA ;DATA ;初始化初始化DSDS MOV DS MOV DS,AXAX MOV AHMOV AH,9 ;99 ;9号调用号调用,显示字符串显示字符串,
6、以以结束结束 MOV DX MOV DX,OFFSET DA1 OFFSET DA1 INT 21H INT 21H RET RET ;返回;返回DOSDOSMAIN MAIN ENDPENDP ;主过程结束;主过程结束CODE CODE ENDSENDS ;代码段结束;代码段结束 ENDEND START START ;源程序结束;源程序结束7【例例】显示输出显示输出“Hello!”Hello!”DATA DATA SEGMENTSEGMENT ;数据段数据段STRING STRING DBDB Hello!,Hello!,DATA DATA ENDSENDS CODE CODE SEGME
7、NTSEGMENT ;代码段代码段 ASSUMEASSUME CS:CODE,DS:DATA ;CS:CODE,DS:DATA ;段分配段分配START:MOV AXSTART:MOV AX,DATA ;DATA ;初始化初始化DSDS MOV DS MOV DS,AXAX MOV AHMOV AH,9 ;99 ;9号调用号调用,显示字符串显示字符串,以以结束结束 MOV DX MOV DX,OFFSET STRING OFFSET STRING INT 21H INT 21H MOV AH,4CH MOV AH,4CH ;返回;返回DOSDOS INT 21HINT 21HCODE CODE
8、 ENDSENDS ;代码段结束;代码段结束 ENDEND START START ;源程序结束;源程序结束8 由例程看出:由例程看出:(1)8086(1)8086汇编源程序具有汇编源程序具有分段结构分段结构 段名段名 SEGMENTSEGMENT 段名段名 ENDSENDS 在源程序中各段的顺序可以任意,段的数目可根在源程序中各段的顺序可以任意,段的数目可根据需要确定(据需要确定(至少有一个代码段至少有一个代码段),原则上不受),原则上不受限制。而每个段又是由若干语句组成,限制。而每个段又是由若干语句组成,语句是汇语句是汇编语言源程序的基础编语言源程序的基础。(2)(2)CSCS不能人为设置
9、,不能人为设置,其它段寄存器的初始化其它段寄存器的初始化需需两两条指令条指令完成(完成(MOV AX,MOV AX,DATADATA MOV DS,AX MOV DS,AX)。)。9(3)(3)两种两种返回返回DOSDOS的方法:的方法:MAIN MAIN PROCPROC FAR FAR ;将主程序建立为过程;将主程序建立为过程 PUSH DS ;PUSH DS ;将将DOSDOS段值和偏移量(段值和偏移量(0 0)入栈)入栈 MOV AX,0 MOV AX,0 PUSH AX PUSH AX RET;RET;返回返回DOS(DOS(将将0 0和和DOSDOS段值段值IPIP、CS)CS)M
10、AIN MAIN ENDPENDP ;主过程结束;主过程结束使用使用4CH4CH号的号的DOSDOS系统功能调用系统功能调用 MOV AX,4C00H(MOV AX,4C00H(或或MOV AH,4CHMOV AH,4CH)INT 21HINT 21H(4)(4)全部全部源程序源程序用用ENDEND伪指令伪指令结束结束。10MASMMASM中可使用的中可使用的语句语句分成分成两类:两类:指令性语句指令性语句和和伪指令语句伪指令语句。一、一、指令性语句指令性语句 特点:与特点:与机器指令相对应机器指令相对应,汇编时产生目标代码汇编时产生目标代码。标号:指令助记符标号:指令助记符 操作数,操作数操
11、作数,操作数 ;注释;注释标号标号:表示:表示本指令语句的符号地址本指令语句的符号地址,后跟冒号,后跟冒号“:”,用,用作转移的目标地址;作转移的目标地址;指令助记符指令助记符:指出:指出指令的操作类型指令的操作类型,由,由英文字母缩写英文字母缩写而成;而成;操作数操作数:指明参加指令运算的数据,有无操作数、单操作:指明参加指令运算的数据,有无操作数、单操作数和双操作数之分,其中双操作数之间用逗号数和双操作数之分,其中双操作数之间用逗号“,”,”分隔,分隔,操作数与指令助记符之间用空格隔开;操作数与指令助记符之间用空格隔开;注释注释:用来说明一条指令或一段程序的功能,前面:用来说明一条指令或一
12、段程序的功能,前面以分号以分号“;”为标记为标记,汇编程序对注释不进行汇编,增加可读性,汇编程序对注释不进行汇编,增加可读性 其中其中指令助记符指令助记符是关键字,是关键字,不可省略不可省略,其余部分均可省略。,其余部分均可省略。4-1 4-1 汇编语言程序格式汇编语言程序格式11二、二、伪指令语句伪指令语句特点:特点:没有对应的机器指令没有对应的机器指令(本身(本身不产生目标代码不产生目标代码),只),只为汇编程序提供汇编信息为汇编程序提供汇编信息。格式:格式:名字名字 伪指令指示符伪指令指示符 操作数,操作数操作数,操作数 ;注释;注释名字名字:给伪指令取的名称,用符号地址表示给伪指令取的
13、名称,用符号地址表示,名字后不带,名字后不带冒号冒号“:”,只用空格符与伪指令指示符相分隔;,只用空格符与伪指令指示符相分隔;伪指令指示符伪指令指示符:是:是MASM规定的符号,明确不同的操作;规定的符号,明确不同的操作;操作数操作数:规定同指令性语句,区别在于:规定同指令性语句,区别在于操作数可能多于操作数可能多于2个个;注释注释:规定同指令性语句:规定同指令性语句其中其中不可省略的部分是伪指令指示符不可省略的部分是伪指令指示符,其余均可缺省。其余均可缺省。三、数据项三、数据项 操作数的三种基本数据项操作数的三种基本数据项:常数、变量、标号:常数、变量、标号12常量常量:固定值,不能改变:固
14、定值,不能改变 a.a.数字常数数字常数:字母后缀字母后缀B B、Q(Q(或或O)O)、D D可省略、可省略、H H b.b.字符串常数字符串常数:ABCABCASCIIASCII码字节序列码字节序列41H41H、42H42H、43H43H c.c.符号常数符号常数:COUNT COUNT EQUEQU 100 100变量变量:某操作:某操作数据数据所所存放单元的符号地址存放单元的符号地址,在,在CSCS以外以外的其的其它段由它段由DBDB、DWDW等定义等定义标号标号:某条:某条指令指令所所存放单元的符号地址存放单元的符号地址,在,在CSCS中定义中定义变量和标号均具有变量和标号均具有三种属
15、性三种属性:a.a.段值段值(SEGMENTSEGMENT):可用可用分析运算分析运算SEGSEG取出取出b.b.段内偏移地址段内偏移地址(OFFSETOFFSET):可用可用分析运算分析运算OFFSETOFFSET取出取出c.c.类型类型(TYPETYPE):可用):可用分析运算分析运算TYPETYPE取出取出 变量变量:每个元素所包含的字节数每个元素所包含的字节数,有,有BYTEBYTE、WORDWORD和和DWORDDWORD三种类型。三种类型。标号标号:可转移的距离(或可转移的距离(或距离属性距离属性),有有NEARNEAR和和FARFAR两种。两种。13四、四、MASMMASM中的表
16、达式中的表达式 表达式由表达式由运算对象运算对象和和运算符运算符组成,在组成,在汇编过程中汇编过程中完成表达式运算完成表达式运算。其中运算对象可以是常数、变。其中运算对象可以是常数、变量、标号、寄存器等。量、标号、寄存器等。1.1.算术运算符算术运算符(运算对象和运算结果均为整数)(运算对象和运算结果均为整数)包括:包括:+、-等等,常用于常用于地址运算地址运算。注:注:两符号地址相减两符号地址相减表示表示某符号地址占用的内存某符号地址占用的内存字节数字节数。【例例】ARRAY DB 1,2,3,4,5,6,7,8ARRAY DB 1,2,3,4,5,6,7,8 TRY DB 20 TRY D
17、B 20 MOV CX,MOV CX,TRY-ARRAYTRY-ARRAY 汇编后:汇编后:MOV CX,MOV CX,8 8 142.2.逻辑运算符逻辑运算符(按位运算)(按位运算)包括:包括:ANDAND、OROR、NOTNOT、XORXOR例:例:ANDAND ALAL,8FH ,8FH ANDAND 73H 73H 运算符运算符,汇编汇编过程中完成过程中完成 指令助记符指令助记符,程序,程序执行执行时完成。时完成。3.3.关系运算符关系运算符 包括:包括:EQEQ、NE(NE(不等不等)、LT(LT(小于小于)、GTGT(大于)、(大于)、LE()LE()、GE()GE()a.a.结果
18、为真结果为真,输出全输出全1 1(字节运算为(字节运算为OFFHOFFH或字运算为或字运算为OFFFFHOFFFFH)b.b.结果为假结果为假,输出全输出全0 0【例例】MOV AX,MOV AX,10H10H GE 16GE 16汇编后:汇编后:MOV AX,MOV AX,0FFFFH0FFFFH154.4.数值返回运算符数值返回运算符(或(或分析运算符分析运算符)功能:功能:返回运算对象的某个参数值返回运算对象的某个参数值。包括:包括:SEGSEG、OFFSETOFFSET、TYPETYPE、LENGTHLENGTH、SIZESIZESEGSEG 变量或标号变量或标号 ;取段基址取段基址
19、常用法:常用法:MOV AXMOV AX,SEG M1SEG M1(或用段名或用段名)MOV DS MOV DS,AXAXOFFSETOFFSET 变量变量/标号标号 ;取偏移地址值取偏移地址值 常用法:常用法:MOV BXMOV BX,OFFSET DA1 OFFSET DA1;设地址指针设地址指针 LEA BXLEA BX,DA1DA1TYPETYPE 变量变量/标号标号 ;取类型属性取类型属性 变量返回变量返回1 1(DBDB)、2(DW)2(DW)、4 4(DDDD)等等 标号返回标号返回-1-1(NEARNEAR)、-2-2(FARFAR)(0FFH)(0FEH)(0FFH)(0FE
20、H)16DATADATASEGMENTSEGMENT;定义数据段定义数据段VAR1 DB 10H,18H,25H,34HVAR1 DB 10H,18H,25H,34H;定义字节数据定义字节数据VAR2 DW 2300H,1200HVAR2 DW 2300H,1200H ;定义字数据定义字数据VAR3 DD 11002200H,33004400H;VAR3 DD 11002200H,33004400H;定义双字数据定义双字数据DATADATAENDSENDS;数据段结束数据段结束设设DATADATA段起始于物理地址段起始于物理地址30000H30000H处,则处,则 MOV BX,MOV BX,
21、SEGSEG VAR1VAR1 汇编成:汇编成:MOV BX,MOV BX,3000H3000H MOV CX,MOV CX,SEGSEG VAR2VAR2 汇编成:汇编成:MOV CX,MOV CX,3000H3000H MOV DX,MOV DX,SEGSEG VAR3VAR3 汇编成:汇编成:MOV DX,MOV DX,3000H3000H MOV BX,MOV BX,OFFSETOFFSET VAR1VAR1 汇编成:汇编成:MOV BX,MOV BX,0000H0000H MOV CX,MOV CX,OFFSETOFFSET VAR2VAR2 汇编成:汇编成:MOV CX,MOV C
22、X,0004H0004H MOV DX,MOV DX,OFFSETOFFSET VAR3VAR3 汇编成:汇编成:MOV DX,MOV DX,0008H0008H17【例例】A1 DB 20H,30HA1 DB 20H,30H A2 DW 0438H A2 DW 0438H A3 DD?A3 DD?L1:MOV AH,L1:MOV AH,TYPETYPE A1A1 MOV BH,MOV BH,TYPETYPE A2A2 MOV AL,MOV AL,TYPE A3TYPE A3 MOV BL,MOV BL,TYPETYPE L1L1汇编后:汇编后:MOVMOV AH,AH,1 1 MOV BH,
23、MOV BH,2 2 MOV AL,MOV AL,4 4 MOV BL,MOV BL,0FFH0FFH18LENGTHLENGTH 变量变量 ;返回返回重复操作符重复操作符DUPDUP之前的重复次数之前的重复次数,若若不是由不是由DUPDUP定义定义,则都,则都返回返回1 1。SIZE SIZE 变量变量 ;返回该变量包含的总字节数返回该变量包含的总字节数。SIZE=LENGTHSIZE=LENGTH*TYPETYPE 注:注:SEGSEG、OFFSETOFFSET、TYPETYPE可用于变量和标号前可用于变量和标号前,返,返回三种属性值;而回三种属性值;而LENGTHLENGTH和和SIZE
24、SIZE只对变量才有效只对变量才有效。【例例】M1 DW 100 DUP(?)M1 DW 100 DUP(?)M2 DW 1,2,3 M2 DW 1,2,3 M3 DB A B C D M3 DB A B C D MOV CX,MOV CX,LENGTHLENGTH M1M1 MOV BL,MOV BL,LENGTH M2LENGTH M2 MOV AL,MOV AL,LENGTHLENGTH M3M319汇编后:汇编后:MOV CX,MOV CX,100100 MOV BL,MOV BL,1 1 MOV AL,MOV AL,1 1 若指令改为:若指令改为:MOV CX,MOV CX,SIZE
25、SIZE M1M1 MOV BL,MOV BL,SIZE M2SIZE M2 MOV AL,MOV AL,SIZE M3SIZE M3 则汇编后:则汇编后:MOV CX,MOV CX,200200 MOV BL,MOV BL,2 2 MOV AL,MOV AL,1 1205.5.修改属性运算符修改属性运算符(综合运算符)(综合运算符)功能:功能:修改变量修改变量/标号的三种属性标号的三种属性段操作符段操作符:修改段基址与偏移地址来源的默认关修改段基址与偏移地址来源的默认关系系,格式如下:,格式如下:段前缀:段前缀:变量或地址表达式变量或地址表达式例:例:MOV AX MOV AX,ES:ES:
展开阅读全文