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

    微机接口ppt课件第5章汇编语言程序设计.ppt

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

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

    微机接口ppt课件第5章汇编语言程序设计.ppt

    微机原理与接口技术,作者:徐建平 成贵学,第5章 汇编语言程序设计,【本章内容提要】,掌握汇编语言程序的编辑、汇编、连接和调试掌握汇编语言的概念、助记符和语句格式,以及常数、表达式、标号、变量和运算符的定义和用法掌握汇编语言的常用伪指令的格式和用法,以及源程序的结构掌握汇编程序设计的基本方法掌握高级汇编程序设计方法,5.1 汇编语言程序的编辑、汇编、连接和调试,5.1.1 源程序编辑器EDIT5.1.2 汇编程序MASM 5.1.3 连接程序LINK 5.1.4 程序的运行和调试,5.2 汇编语言入门,5.2.1 汇编语言概述,由于计算机只能识别和执行由二进制代码组成的机器指令,而这种二进制机器语言人很难理解于是人们采用字母、符号等来表示机器指令的二进制代码,这就是汇编语言。汇编语言又称为符号语言。,5.2.2 汇编语言中的助记符,三种助记符1指令助记符2伪指令助记符3其他助记符,1指令助记符,指令助记符是汇编语言的基本助记符,它在汇编时被转换成二进制的指令代码每一条指令代码都对应着CPU的一种操作。由指令助记符构成的可执行语句称为指令语句。指令系统中的每条指令都是指令语句。,2伪指令助记符,伪指令助记符是在汇编过程中用来控制汇编程序的一些特定的助记符它在汇编时不产生机器码,也不产生任何操作,它在汇编语言源程序中可以构成独立的语句。由伪指令助记符构成的语句称为伪指令语句,又称指示性语句。,3其他助记符,在汇编语言中,还有另一些常见的助记符,如标号、常量、变量和表达式等,这些助记符是可以由用户自己定义的。关于这些助记符的相关概念我们将在后面的内容中作详细介绍。,5.2.3 汇编语言的语句格式,汇编语言的语句有指令语句和伪指令语句两种。指令语句的格式为:标号:指令助记符 操作数,操作数;注释伪指令语句的格式为:名字伪指令助记符操作数,操作数;注释,(1)标号和名字,标号可作为指令语句的符号地址,用来代表该指令语句在存储器中的地址。伪指令语句中的名字可以是变量名、段名、过程名、符号名等,用来代表它们在存储器中的地址。指令语句中的标号后面有冒号,而伪指令语句中的名字后面是空格。,(2)助记符,助记符是汇编语句中必不可少的部分。指令助记符规定了指令语句的操作类型,伪指令助记符规定了伪指令语句的伪操作功能。,(3)操作数,操作数可以是寄存器、存储器、常数、变量、标号和表达式。指令语句的操作数可能是一个、两个或没有,它们之间用逗号分隔。伪指令语句的操作数根据伪操作命令的不同而不同,有的伪指令不允许有操作数,有的伪指令允许带多个操作数。,(4)注释,以分号开头,直到行尾结束,用来对语句或程序的功能加以说明,增加程序的可读性。它不是程序的可执行部分,在汇编时不产生任何代码。,5.2.4 汇编语言的常数和表达式,1常数数值常数:可以是二进制常数、八进制常数、十进制常和十六进制常数。其中,不同的数制要用后缀表明。例如,6BH,10110111B等。字符串常数:由单引号括起来的一个或多个字符,例如,I AM A STUDENT。,2表达式,汇编语言中的表达式分为数字表达式和地址表达式两种。汇编时对表达式进行计算,如果表达式的结果是一个数值,则称为数字表达式;如果表达式的结果是一个存储单元的地址,则称为地址表达式。,表达式是由操作数和运算符组成的。操作数可以是常数、标号、变量、寄存器或表达式;运算符有3类,分别是算术运算符、逻辑运算符和关系运算符,如表5-1所示。,(1)算术运算符,算术运算符常用于数字表达式或地址表达式中,将其用于地址表达式中时,必须保证运算有意义。例如,若COUNT的偏移地址为1000H,则 LEA SI,COUNT+5等效于:LEA SI,1005H。,(2)逻辑运算符,逻辑运算符只能用于数字表达式中,不能用于地址表达式中。运算时是将两个数字操作数分别按位进行运算。例如:MOV AL,0ABH AND 0FH等效于:MOV AL,0BH。,(3)关系运算符,关系运算符连接的两个操作数必须都是数字操作数或者都是地址操作数运算结果是一个逻辑值:如果关系为真,则结果为0FFFFH;如果关系为假,则结果为0。例如:MOV AX,NUM GT 100,如果NUM大于100,则等效于 MOV AX,0FFFFH否则,将等效于MOV AX,0。,5.2.5 汇编语言的标号和变量,1标号,标号是指令语句的标识符,用来表示该指令所在内存单元的地址。在汇编语言程序中,标号常用在第一条指令、转移和循环的目标指令,以及子程序的第一条指令之前,并作为转移指令、循环指令或子程序调用指令的操作数,从而确定程序转移的目标地址。,标号有3个属性:,段地址(SEG):定义标号所在段的起始地址偏移地址(OFFSET):定义标号所在位置与段的起始地址之间的偏移量;类型(TYPE):可以是NEAR(段内转移)或FAR(段间转移),一般默认为NEAR。,2变量,变量主要用来定义存放在存储单元中的数据,一般都在数据段或附加段中定义,并且在程序中可以随时修改其值。每个变量都有一个变量名,作为存储单元的名字或符号地址,我们通过变量名对存储单元中的数据进行访问。,变量的定义格式为:,变量名 DB 表达式;定义字节变量变量名 DW 表达式;定义字变量变量名 DD 表达式;定义双字变量变量名 DQ 表达式;定义8字节变量变量名 DT 表达式;定义10字节变量,变量具有5种属性:,段地址(SEG):定义变量所在段的起始地址;偏移地址(OFFSET):定义变量的位置与段的起始地址之间的偏移量;类型(TYPE):定义变量所占存储单元的字节数,用DB、DW和DD伪指令定义的变量类型分别是字节(BYTE)、字(WORD)和双字(DWORD)。长度(LENGTH):定义变量的个数。大小(SIZE):分配给变量的总字节数。,5.2.6 汇编语言的属性运算符和表达式,用来获取或重新定义变量或标号属性的运算符称为属性运算符。,(1)取地址运算符SEG,格式:SEG 变量或标号功能:返回变量或标号的段地址。例如,MOV AX,SEG COUNT指的是将变量COUNT的段地址送入AX。,(2)取偏移地址运算符OFFSET,格式:OFFSET 变量或标号功能:返回变量或标号的偏移地址。例如,MOV SI,OFFSET COUNT指的是将变量COUNT的偏移地址送入SI。,(3)取类型运算符TYPE,格式:TYPE 变量或标号功能:返回变量或标号的类型值。如表5-2所示。例如,指令:MOV AX,TYPE COUNT指的是将变量COUNT的类型值送入AX。,(4)取变量长度运算符LENGTH,格式:LENGTH 变量功能:返回变量的长度(即变量中元素的个数),可以是以字节、字或双字为单位。例如,定义 COUNT DW 100 DUP(1),则LENGTH COUNT的值为100。,再如,定义 BUFF DD 1,2,3则LENGTH BUFF的值为1。,(5)取变量总字节数运算符SIZE,格式:SIZE 变量功能:返回变量所包含的总字节数。例如,定义 COUNT DW 100 DUP(1)SIZE COUNT的值为200。,(6)类型运算符PTR,格式:类型 PTR 变量、标号或表达式功能:对已定义的变量、标号或表达式,临时转换其类型,类型可以是BYTE、WORD、DWORD、NEAR或FAR。例如,指令:MOV AX,WORD PTR COUNT指的是将变量COUNT临时转换成字类型。,(7)类型定义运算符THIS,格式:变量或标号 EQU THIS 类型功能:指定变量或标号的类型,但不为其分配存储单元,所定义变量的段地址和偏移地址与下一个存储单元地址相同。,例如,COUNT EQU THIS BYTERESULT DW 100 DUP(?)该语句定义COUNT为字节类型,其地址与RESULT完全相同。注意,这里RESULT是字型类型。,(8)段超越前缀:,格式:段寄存器名:变量、标号或地址表达式功能:给变量、标号或地址表达式临时指定一个段属性。例如,指令:MOV AX,ES:1000H指的是将附加段中偏移地址为1000H的内存单元的内容送入AX。,(9)取高字节运算符HIGH,格式:HIGH 变量或标号功能:分离出变量或标号对应的运算对象的高字节。例如,指令:DATA EQU 1234H则 MOV AL,HIGH DATA 结果:(AL)=12H。,(10)取低字节运算符LOW,格式:LOW 变量或标号功能:分离出变量或标号对应的运算对象的低字节。例如,指令:DATA EQU 1234H则 MOV AL,LOW DATA的结果为(AL)=34H。,(11)短转移运算符SHORT,格式:SHORT 标号功能:说明转移指令中的转移为短转移,即目标地址与本指令之间的距离在-128127字节范围内。例如,指令:JMP SHORT NEXT,限制转移范围小于128个字节。,5.2.7 常用伪指令,1数据定义伪指令,格式:变量 数据定义伪指令 表达式功能:为数据分配存储单元,其类型由使用的数据定义伪指令决定,如表5-3所示。,2符号定义伪指令,(1)赋值伪指令格式:标识符 EQU 表达式功能:用一个标识符来表示表达式的值,但并不为其分配内存单元。EQU伪指令不能对标识符进行再定义。,例如,COUNT EQU 10表示给COUNT赋值为10;NUM EQU TABBX3表示将表达式TABBX3的值赋值给NUM。,(2)等号伪指令,格式:标识符表达式功能:与EQU的功能相同,且也不分配内存单元,但“=”可以对同一标识符进行重新定义。例如,可以这样定义变量COUNT:COUNT10 COUNTCOUNT1,(3)标号定义伪指令,格式:变量或标号 LABEL 类型功能:定义或修改变量或标号的类型。例如,COUNT LABEL BYTE DB 10功能是定义变量COUNT为字节型变量,值为10。,实训5-2 统计一组数据中正数、零和负数的个数,DSEG SEGMENT;数据段,给变量指定数据,分配存储空间 ARRAY DB 5,3,-4,0,-5,-3;定义一个数组 NUM DB 0,0,0;NUM中用于存放正数、零和负数的个数DSEG ENDSSSEG SEGMENT;堆栈段 DB 100 DUP(0)SSEG ENDS,CSEG SEGMENT;代码段 ASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART:MOV AX,DSEG;将数据段基址装入数据段寄存器 MOV DS,AX MOV SI,0;将SI的初值置为0 CALL COUNT;调用COUNT子程序 ADD NUM2,30H;将负数的个数转换为ASCII码 MOV DL,NUM2;DOS功能调用,显示负数的个数 MOV AH,02H INT 21H MOV AH,4CH;系统功能调用,结束程序返回DOS INT 21H,COUNT PROC NEAR;COUNT过程 MOV CX,6;将循环的次数送入CX LOP:CMP ARRAYSI,0;将数组中的各元素与0比较 JZ ZERO;结果为0时转移到ZERO处 JNS ZHENG;结果为正时转移到ZHENG处 ADD NUM2,1;统计负数的个数 JMP NEXT;转移到NEXT处ZERO:ADD NUM1,1;统计0的个数 JMP NEXTZHENG:ADD NUM,1;统计正数的个数NEXT:INC SI;SI的内容加1 LOOP LOP;执行循环RET;返回子程序调用处COUNT ENDPCSEG ENDS END START,5.3 汇编程序设计的基本方法,5.3.1 汇编程序设计的一般步骤 5.3.2 顺序结构程序设计5.3.3 分支结构程序设计5.3.4 循环结构程序设计,实训5-3 求三个有符号数中的最大数,START:MOV AX,DSEG;将数据段基址装入数据段寄存器 MOV DS,AX MOV AL,X;将X送入AL CMP AL,Y;比较X和Y大小 JG F1;如果XY,则程序转移至F1 MOV AL,Y;如果XY,将Y送入ALF1:CMP AL,Z;比较AL中的内容和Z大小 JG F3;如果(AL)Z,则程序转移至F3F2:MOV AL,Z;将(AL)Z,将Z送入ALF3:MOV MAX,AL;将最大值AL送入MAXMOV AH,4CH;系统功能调用,结束程序返回DOS INT 21H,实训5-4 冒泡排序法,DSEG SEGMENT;数据段,给变量指定数据,分配存储空间 DATA DW 1,-8,-6,8,0 N($DATA)/2DSEG ENDS,MOV CX,N;将外层循环的次数送入CX DEC CX LOP1:LEA SI,DATA;外层循环 MOV DX,CX;保存CX中的值LOP2:MOV AX,SI;内层循环 CMP AX,SI+2;比较相邻两个数的大小 JGE NEXT;若前面的数大于或相等后面的数,转移至NEXT XCHG AX,SI+2;如前面的数小于后面的数,则两数交换 MOV SI,AXNEXT:ADD SI,2;SI增加2 DEC CX;修改内层循环参数 JNE LOP2;判断循环控制条件,是否继续执行内层循环 MOV CX,DX;将外层循环次数重新送入循环计数器CX LOOP LOP1;执行外层循环,5.4 高级汇编程序设计,5.4.1 使用子程序,BTH PROC FAR PUSHF;将标志寄存器的内容压入堆栈 PUSH AX;将寄存器的内容压入堆栈 PUSH CX MOV CH,4;将十六进制数位数存入CHCONV:MOV CL,4;将移位次数存入CL ROL BX,CL;将BX中的数循环左移4位,将最高4位移至最低4位 MOV AL,BL;将BX的低8位存入AL AND AL,0FH;使AL中保存BX的最低4位 CMP AL,09H;判断AL是否在09之间 JLE ASC;是在09之间,则程序转移至ASC ADD AL,37H;AL在AF时,二进制数与ASCII码相差37H JMP EXITASC:ADD AL,30H;AL在09时,二进制数与ASCII码相差30H,EXIT:MOV DI,AL;将转换结果存入DI所指向的存储单元 INC DI DEC CH JNZ CONV POP CX POP AX RETBTH ENDP,5.4.2 DOS功能调用,1DOS功能调用方法,DOS系统功能的调用方法是:将入口参数送入指定寄存器中;将子程序的功能号送入寄存器AH中;执行INT 21H。,(1)输入字符,格式:MOV AH,01H INT 21H,(2)输入字符串,格式:LEA DX,内存缓冲区首地址 MOV AH,0AH INT 21H,(3)显示字符,格式:MOV DL,待显示字符的ASCII码 MOV AH,02H INT 21H,(4)显示字符串,格式:MOV DX,待显示字符串的偏移地址 MOV AH,09H INT 21H 功能:将字符串在屏幕上显示出来。,(5)打印输出,格式:MOV DL,字符 MOV AH,05H INT 21H功能:将送入DL中的字符送到打印机接口打印输出。,(6)检查键盘状态,格式:MOV AH,0BH INT 21H功能:检查是否有按键,若有键按下,则AL0FFH;否则,AL00H。,(7)程序结束,格式:MOV AH,4CH INT 21H功能:结束当前程序并返回DOS。,【例5-6】编写程序在屏幕上显示字符串“HOW ARE YOU?”。,DSEG SEGMENT STR DB HOW ARE YOU?,0AH,0DH,$DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEG MOV DS,AX MOV DX,OFFSET STR MOV AH,09H INT 21H MOV AH,4CH INT 21HCSEG ENDS END START,5.4.3 BIOS功能调用,将入口参数送入指定寄存器中;将子程序的功能号送入寄存器AH中;执行INT n。,(1)从键盘输入字符,格式:MOV AH,0 INT 16H功能:等待从键盘输入一个字符,并将字符的ASCII码送入寄存器AL中。,(2)查询键盘缓冲区,格式:MOV AH,01H INT 16H功能:查询是否有按键,并设置ZF标志位。若有键按下,则ZF0;否则,ZF1。,(3)打印字符,格式:MOV AL,打印字符的ASCII码 MOV DX,打印机号(02)MOV AH,0 INT 17H功能:打印一个字符,并返回打印机状态到AH中。,(4)初始化打印机,格式:MOV AH,01H INT 17H功能:初始化打印机,并返回打印机状态到AH中。,

    注意事项

    本文(微机接口ppt课件第5章汇编语言程序设计.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开