欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    微机原理与接口技术实用教程4.ppt

    • 资源ID:5381468       资源大小:200.51KB        全文页数:55页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理与接口技术实用教程4.ppt

    第四章 汇编语言程序设计,2023/7/1,微机原理,2,本章要点,汇编语言的基本语法规则,汇编语言常用的伪指令和DOS功能调用,顺序、分支、循环和子程序设计基本方法,2023/7/1,微机原理,3,一、汇编语言与机器语言1、机器语言:是计算机能够识别直接执行的语言,这种形式也叫目标代码(机器码),全由01组成。(高级语言编的源程序在执行时也必须全翻译成机器语言)2、汇编语言:用机器语言指令的助记符来编写程序的语言称汇编语言(阅读理解方便,为程序员提供了完全控制目标代码的手段)。3、源程序:用各种语言编写的程序本身。4、汇编程序与编译程序:汇编语言源程序-汇编-目标代码高级语言源程序-编译-目标代码5、汇编语言包含:指令 让微处理器执行操作的指令 伪指令 告诉汇编程序如何汇编的指令,汇编语言的基本概念,2023/7/1,微机原理,4,4.1 汇编语言的基本语法,汇编语言程序,数据段,代码段,堆栈段,存放常数、变量以及作为算术运算区和用来作为I/O接口传送数据的工作区,堆栈段用来在内存中建立一个堆栈区,以便在中断和过程调用时使用,堆栈还起承上启下的作用,用于模块间参数的传送。,2023/7/1,微机原理,5,4.1.1 语句格式,语句格式:名称 空格或冒号操作助记符空格操作数;注释,标志符的要求:(1)标识符是一个字符串,第一个字符必须是字母、“?”、“”、或下划线“_”这四种字符中的一个。(2)从第二个开始,可以是字母、数字、“?”、“”、“_”;(3)一个标识符的长度可以由131个字符组成。,2023/7/1,微机原理,6,4.1.2 语句类型与结构,1.指令性语句的结构标号:前缀 指令助记符 操作数;注释(1)方括号表示的成分可以选用或缺省。(2)标号是后面紧跟“:”的一个标识符,标号代表该行指令在存储器中的首地址,标号可作为转移指令和调用指令的一个操作数。(3)前缀如重复前缀、总线封锁前缀等。(4)操作数可以是一个、两个或没有,由指令类型决定,若有两个操作数,前面为目的操作数,后面为源操作数,中间用逗号隔开。(5)注释是以“;”开始的字符串,不影响程序的汇编与执行,仅用于增加源程序的可读性。,2023/7/1,微机原理,7,2.指示性语句的结构名字 伪指令助记符 操作数;注释说明:(1)名字可以是符号常量名、变量名、过程名、段名等,名字后面不能有“:”。(2)伪指令命令助记符共有40多个,按功能不同分成八类,本章介绍的常用五类共20多个。(3)操作数可少到一个没有,多到两个以上,操作数之间须用逗号分隔。,2023/7/1,微机原理,8,3.宏指令语句的结构宏名 宏操作助记符 操作数;注释说明:(1)宏名即宏指令名,是一标识符,宏名后面不能有“:”(2)宏操作助记符共有8个,分别是MACRO、ENDM、EXITM、LOCAL、REPT、IRPC、IRP、PURGE。(3)其余同指示性语句。,2023/7/1,微机原理,9,4.1.3 汇编语言的表达式,1、常数:数值常数-可为各种数制,必须以数字打头,除十进制外,必须用后缀注明,如BOH等。字符串常数-由单引号括起的字符串,用来表示相应的ASCII码,如179是31H37H39H。2、表达式:由操作数和操作符(运算符)构成,表达式的值必须在汇编或连接时就确定。,2023/7/1,微机原理,10,4.1.4 汇编语言的运算符,算术运算符,逻辑运算符,关系运算符,分析运算符,分离运算符,组合运算符,2023/7/1,微机原理,11,1.算术运算符,2.逻辑运算符,3.关系运算符,+-*/(整除)MOD(求二整数相除的余数),ANDORNOTXOR按位进行,EQ(相等)NE(不等)LT(小于)GT(大于)LE(小于等于)GE(大于等于),关系成立返回全1,关系不成立返回全0(16位),2023/7/1,微机原理,12,3.分析运算符,(1)SEG运算符取段地址运算符,该运算返回变量或标号所在段的段地址(字常量)。,(2)OFFSET运算符取段内偏移地址符,该运算返回变量或标号所在段的段内偏移地址。,(3)TYPE运算符取类型属性运算符,该运算返回变量或标号的类型值。若运算对象是标号,则返回标号的距离属性值,若运算对象是变量,则返回变量类型所占字节数。,(4)LENGTH运算符取数组变量元素个数运算符,如果变量是用重复数据操作符DUP说明的,则返回DUP前面的数值(即重复次数);如果没有DUP说明,则返回值总是“1”。,2023/7/1,微机原理,13,5.分离运算符,(1)LOW运算符取地址表达式或16位绝对值低8位。,(2)HIGH运算符 取地址表达式或16位绝对值高8位。,(3)SHORT运算符当转移指令的目标地址与该指令之间的距离在-128+127字节范围内,可用SHORT运算符进行说明,以保证汇编程序能为该指令生成最短的机器码,从而提高运行效率。,2023/7/1,微机原理,14,6.组合运算符,(1)“:”运算符用来临时给变量、标号或地址表达式指定一个段属性。,(2)PTR运算符赋予“表达式”指定的“类型”,新的类型只在所处的指令内有效。格式为:类型 PTR 表达式,(3)THIS运算符该运算符和“=”(或EQU)伪指令连用,把它后面指定的类型属性或距离属性赋给当前的变量或标号。常用的格式为:变量或标号=THIS 属性,(4)圆括号“()”运算符 用来改变被括运算符的优先级别。,2023/7/1,微机原理,15,4.2 伪指令,4.2.1 符号定义伪指令,1.EQU伪指令格式:名字 EQU 表达式 功能:是将数值或字符序列与一个指定的名字等价。有以下4种用法。(1)为常量定义一个符号,以便在程序中使用符号来表示常量。(2)为变量或标号定义新的类型属性并起一个新的名字。(3)为由地址表达式指出的任意存储单元定义一个名字。(4)为汇编语言中的任何符号定义一个新的名字。,2023/7/1,微机原理,16,2.“=”伪指令“=”伪指令同EQU,但 a,对同一个名称可定义多次 b,表达式的值不得超过16位2进制数。,3.LABEL伪指令格式:变量或标号名 LABEL 类型功能:为当前存储单元定义一个指定类型的变量名或标号。,2023/7/1,微机原理,17,4.2.2 变量定义伪指令,常用的变量定义伪指令有DB、DW、DD、DQ、DT格式:变量名 DBDWDDDQDT 表达式,2.ASCII字符串,3.地址表达式,4.?表达式,5.nDUP表达式,表达式,1.数值表达式,2023/7/1,微机原理,18,4.2.3 段定义伪指令,段名 SEGMENT 定位类型组合类型类别;语句 段名 ENDS 段名:是所定义段的名称。二个段名必须一致,具有段地址、偏移地址,以及后面用 括起来的三个可选属性。,2023/7/1,微机原理,19,定位类型:表示对该段起始边界(段基址、段起始地址)的要求。BYTE 字节边界,段起始地址可位于任何地方;WORD 字边界,段起始地址能被2整除;PARA 节边界,段起始地址能被16整除,是缺省的定位类型;PAGE 页边界,段起始地址能被256整除;因为段地址只能被16整除,前二种情况段内偏移地址不一定从0起。,2023/7/1,微机原理,20,组合类型:表示该段与其他段的组合关系。NONE:缺省组合类型,表明本段与其他段逻辑上无关。PUBLIC:表明本段与其他模块中用PUBLIC说明的同名同类别段 可以相继连成一个段,使用同一个段地址。STACK:同 PUBLIC,但此组合类型,将来程序执行时SS与SP 自动被赋予堆栈的栈底。COMMON:表明连接时该段与其他模块中属于该类别的同名同类 别段可以相互重叠地放在一起,其长度为同名段中最 长者的长度。,2023/7/1,微机原理,21,类别:是用单引号括起来的字符串。连接时,连接程序将不同模块中相同类别的各段在物理上相应地连接在一起。当程序只有一个模块时,除堆栈用STACK说明外,其他段的组合类别与类别均可省略。,MEMORY:连接时被放在所装载程序的最高地址区,当有多个 MEMORY类别段时,只将连接程序遇到的第一个 MEMORY段为MEMORY段,其他的均作COMMON。AT 表达式:表明该段的段地址由AT后的表达式给定,段内不应 有任何指令语句或含初值的变量定义语句。,2023/7/1,微机原理,22,4.2.4 过程定义伪指令,子程序通常以过程的形式编写。格式如下:过程名 PROC 类型 RET 过程名 ENDP,2023/7/1,微机原理,23,(1)过程名是为该过程取的名字,具有与语句标号相同的属性,即具有段地址、偏移地址和类型三类属性。(2)地址属性是指过程中第一个语句的地址。(3)类型属性由格式中的类型指明,可以有NEAR和FAR两种。若类型缺省或为NEAR时,表示该过程只能为所在段的程序调用;若为FAR时,则可被跨段调用。(4)RET为过程返回指令,不能省,否则过程将无法返回。返回指令属于段内返回还是段间返回与过程类型有关。(5)过程既允许嵌套定义,也允许嵌套调用。,2023/7/1,微机原理,24,4.2.5 模块定义与通信伪指令,1.NAME和END格式:NAME 模块名 END 标号,2.PUBLIC格式:PUBLIC 符号表,2023/7/1,微机原理,25,3.EXTRN格式:EXTRN 符号:类型,,4.INCLUDE格式:INCLUDE 文件名,2023/7/1,微机原理,26,4.3 宏指令,宏指令是一组汇编语言语句序列的缩写,是程序员事先自定义的“指令”,此后在宏指令出现的地方,汇编程序自动把它们替换成相应的语句序列。,宏指令的概念,2023/7/1,微机原理,27,宏指令的使用,(1)宏定义 格式:宏指令名 MACRO 形参,形参 ENDM,(2)宏调用格式:宏指令名 实参,实参,(3)宏扩展当汇编程序扫描到源程序中的宏调用时,就把对应宏定义的宏体指令序列插入到宏调用所在处,用实参替代形参,并在插入的每条指令前面加上一个“+”号,这一过程就称为宏扩展。,2023/7/1,微机原理,28,用于宏定义的其他伪指令,(3)特殊的宏操作符%取表达式操作符 标识字符串或符号中形参操作符!标识普通字符操作符,(1)LOCAL,(2)PURGE,2023/7/1,微机原理,29,重复块宏指令,格式:REPT 整数表达式;重复体 ENDM 功能:重复执行重复体,重复次数必须有确定值且由整数表达式给出。,2023/7/1,微机原理,30,4.4 DOS功能调用和BIOS中断简介,1.基本的输入与输出,(1)AH=01H,输入一个字符程序:MOV AH,01H INT 21H 上述指令执行后,系统等待从键盘输入一个字符,一旦输入,则将该字符显示在屏幕上,并且将该字符放入AL寄存器。若输入的是 Ctrl-Break,程序自动返回到DOS控制下。,2023/7/1,微机原理,31,(2)AH=02H,输出一个字符功能:将DL中的字符输出到屏幕。程序:MOV DL,A MOV AH,02H INT 21H 调用结果,在屏幕上显示字符A。,(3)AH=05H,输出一个字符到打印机功能:将DL寄存器的字符输出到打印机。(4)AH=09H,输出字符串功能:把DS:DX所指单元内容作为字符串首字符,将该字符串逐个显示在屏幕上,直到遇到串尾标志为止。(5)AH=0AH,输入字符串,2023/7/1,微机原理,32,文件管理中的最基本的几个功能调用如下:(1)AH=3CH,创建一个文件入口参数:DS:DX文件名字符串的起始地址 CX文件属性(0读写,1只读)。出口参数:若建立文件成功,则CF=0,AX=文件句柄;否则CF=1,AX=错误码(3、4或5),其中:3表示找不到路径名称,4表示文件句柄已用完,5表示存取不允许。,2.文件管理,2023/7/1,微机原理,33,(2)AH=3DH,打开一个文件(3)AH=3EH,关闭一个文件(4)AH=3FH,读取一个文件(5)AH=40H,写文件,2023/7/1,微机原理,34,3.ROM BIOS 中断调用,BIOS中断调用的方法是:首先按照要求将入口参数置入相应寄存器,然后写明软件中断指令INT n。例如,键盘I/O的中断调用类型码是16H,以下指令实现将从键盘输入字符的ASCII码致送入AL寄存器中:MOV AH,0 INT 16H,2023/7/1,微机原理,35,4.5 汇编语言程序设计方法,4.5.1 设计步骤,建立数学模型,确立数据结构与算法,绘制流程图及编制程序,调制,2023/7/1,微机原理,36,4.5.2 顺序程序设计,例1:内存中自TABLESQ开始的16个存储单元连续存放着自然数0到15的平方值,任一数 x(0 x15)存放在其后的 XX 单元,查表求出 x 这个数的平方值,并放到 YY 单元中。DATA SEGMENTTABLESQDB0,1,4,9,16,25,36,49 DB64,81,100,121,144,169,196,225 XXDB?YYDB?DATA ENDSSTACK SEGMENTPARASTACK STACK DB50 DUP(?)STACK ENDS,2023/7/1,微机原理,37,CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN:MOV AX,DATA MOV DS,AX MOV BX,OFFSET TABLESQ MOV AH,0 MOV AL,XX ADD BX,AX MOV AL,BX MOV YY,AL MOV AH,4CH INT 21HCODE ENDS END BEGIN,2023/7/1,微机原理,38,4.5.3 分支程序设计,分支结构的程序需要由控制转移类指令来实现。转移指令:能够改变程序指令指针IP的内容(增加、减少),也可能同时改变CS和IP的内容,从而改变程序的走向。,无条件转移指令,条件转移指令,2023/7/1,微机原理,39,(1)直接转移:指令中直接给出转移的目标指令的标号a、段内短转移:给出对于当前指令IP值的带符号的8位位移量,执行时 IP+D8 送 IP,D8=目的偏移地址当前IP,范围:128 127例:JMP SHORT OPR;OPR是目标指令的语句标;号或者标号的表达式。SHORT是伪指令中的属性运算符,指出转移目标在 128 127 范围内。,1.无条件转移指令,2023/7/1,微机原理,40,b、段内近转移:给出对于当前IP值的带符号的16位位移量,执行时 IP+D16 送 IP,D16=目的偏移地址当前IP,范围:32768 32767例:JMP NEAR PTR OPR JMP OPR;NEAR可以省略,b、段内近转移:给出对于当前IP值的带符号的16位位移量,执行时 IP+D16 送 IP,D16=目的偏移地址当前IP,范围:32768 32767例:JMP NEAR PTR OPR JMP OPR;NEAR可以省略,2023/7/1,微机原理,41,(2)间接转移:指令中给出的是存放转移目标指令的地址。a、段内间接转移:转移目标的地址在存储器或寄存器中;b、段间间接转移:转移目标的地址只能在存储器中。例:JMP OPR1;OPR1取决于寻址方式:段内:寻址方式给出的一个字送IP 段间:寻址方式给出的二个字送CS:IP,2023/7/1,微机原理,42,2.条件转移指令,满足一定条件,则发生转移常用标志寄存器中的状态标志作为判断条件a、对于带符号数,常用大于、小于、等于 greater、less、equal 对于无符号数,常用高于、低于、等于 above、below、equalb、都是位移量为8位的相对寻址方式 转移范围 128 127,2023/7/1,微机原理,43,2023/7/1,微机原理,44,4.5.4 循环程序设计,1.循环程序的构成,任何循环程序都可分为循环初始部分、循环体和循环结束部分。循环初始部分为进入循环做必要的准备工作。循环体是程序中重复执行的程序段,由两部分组成。(1)循环工作部分:用于执行程序的实际任务。(2)循环参数修改及循环控制部分:为进入下一次循环,修改地址指针、计数器内容等项参数;检测循环是否已执行了规定的次数,从而确定继续循环还是结束循环。(3)循环结束部分:进行循环之后的处理。,2023/7/1,微机原理,45,2.循环程序的类型,循环体的结构依照问题的不同,一般可以分为两种类型:先判断后处理;先处理后判断。,3.控制循环次数的方法,(1)用计数控制循环。对于循环次数已知的程序,或是在进入循环前可由某变量确定循环次数的程序,通常用计数器来控制循环。,2023/7/1,微机原理,46,(2)用条件控制循环。适用于某些循环次数未知的程序,或循环次数可变的程序,可以由问题给出的条件控制循环结束。,(3)多重循环程序设计。在实际工作中,一个循环结构常常难以解决实际应用问题,所以人们引入了多重循环。这些循环是一层套一层的,因此又称为循环的嵌套。内层循环必须完全包含于外层循环内,不允许循环结构交叉。转移指令只能从循环结构内转出或可在同层循环内转移,而不能从一个循环结构外转入该循环结构内。,2023/7/1,微机原理,47,4.5.5 子程序设计,1、子程序(过程):可以被其他程序调用的能完成确定功能的独立程序段 子程序说明文件:子程序应当有自己的说明文件,要说明:a,功能描述;b,用到的寄存器和存储单元;c,入口和出口参数;d,用到的其他子程序。2、子程序二种形式:a,简单地用标号开头,RET结尾的程序段;b,用过程伪指令定义一段程序为一个过程。,2023/7/1,微机原理,48,3、过程定义伪指令格式:过程名 PROC类型;过程体RET 过程名ENDP类型:FAR 可供段间调用 NEAR 只可段内调用,是缺省的类型。,2023/7/1,微机原理,49,4、子程序的使用:调用和返回指令(1)调用指令:段内调用:CALL OPR;SP-2 SP,IP(SP+1,SP);OPR的偏移地址 IP;OPR是过程名或语句标号;段内直接调用 CALL OPR1;SP-2 SP,IP(SP+1,SP);转移目的的偏移量 IP;OPR1是由寻址方式给出的转移目的的有效地址;段内间接调用,2023/7/1,微机原理,50,(2)返回指令:段内返回:RET;(SP+1,SP)IP;SP+2 SP段间返回:RETF;(SP+1,SP)IP;SP+2 SP;(SP+1,SP)CS;SP+2 SP RET n;完成返回后,SP+n SP,2023/7/1,微机原理,51,A、CALL FAR PTR OPR 为段间调用(远调用),但如果OPR 已定义为FAR型,则段间调用指令也可以直接写成 CALL OPR。B、调用指令和子程序如果不在同一段内时,即使地址通过偏移量 能达到,也是远调用。C、调用指令和子程序在同一段内时,只有去掉FAR,才是段内调用。D、根据PROC的类型,返回指令自动编译为RET或RETF。,规则,2023/7/1,微机原理,52,4.6 宏汇编及条件汇编,4.6.1 宏汇编,1.宏定义宏定义是用一组伪操作来实现的。其格式如下。Macro_name MACRO dumny_parameter_list.(宏定义体)ENDM,2023/7/1,微机原理,53,2.宏调用经宏定义后的宏指令就可以在源程序中调用。这种对宏指令的调用称为宏调用,宏调用的格式如下。macro_name actual_parameter_list实元表(actual_parameter_list)中的每一项为实元,相互之间用逗号隔开。宏调用只需要有宏指令名,若宏定义中有形参,宏调用时必须带有实际参数来替代形参,且一一对应。,3.宏展开汇编程序在对源程序汇编时,对每个宏调用作宏展开,即用宏定义中的宏体取代宏指令名,并用实参一一对应形参,每条插入的宏指令前加上加号“+”。,2023/7/1,微机原理,54,4.6.2 条件汇编,汇编程序能根据条件把一段源程序包括在汇编语言程序内或者把它排除在外,这里就用到条件汇编这样的伪操作。其格式如下:IF XX argument.;自变量满足给定条件汇编此块 ELSE.;自变量不满足给定条件汇编此块 ENDIF,2023/7/1,微机原理,55,4.7 小结,变量定义伪指令、段定义伪指令以及其它常用 伪指令的功能和用法。,本章需要掌握的知识点,顺序、分支、循环、子程序等4类结构程序 的特点和编程方法。,汇编语言程序的分段结构和语句格式,表达式和运算符的用法。,

    注意事项

    本文(微机原理与接口技术实用教程4.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开