好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch03 汇编程序设计.ppt

102页
  • 卖家[上传人]:E****
  • 文档编号:89504202
  • 上传时间:2019-05-26
  • 文档格式:PPT
  • 文档大小:861KB
  • / 102 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三章 汇编程序设计,编制汇编语言程序的步骤:,(1) 分析题意,确定算法 (2) 根据算法画出程序框图 (3) 根据框图编写程序 (4) 上机调试程序,分支结构 子程序结构,程序结构:,复合结构:多种程序结构的组合,,,,,,,…,顺序结构 循环结构,按照指令执行的顺序,程序的结构可以划分成以下三种 顺序结构:程序按照它编写的顺序执行,每条指令只执行一 次,这样的程序称为“顺序结构”的程序 循环结构:一组指令被反复地执行,这样的程序称为“循环结 构”或者“重复结构”的程序 选择结构:根据某个条件,一部分指令被执行,另一部分指 令没有被执行,这样的程序称为“选择结构”或者 “分支结构”的程序程序基本结构,,3.1 顺序程序设计,顺序程序:没有分支、循环等转移指令,按指令书写的前后顺利依次执行 最基本的程序结构 完全采用顺序结构编写的程序并不多见,例题 顺序程序设计实例 采用查表法,实现一位16进制数转换为ASCII码显示,例 数据段,;数据段 ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;对应0 ~ 9的ASCII码 db 41h,42h,43h,44h,45h,46h ;对应A ~ F的ASCII码 hex db 04h,0bh ;假设两个要显示的数据,例 代码段,;代码段 mov bx,offset ASCII ;BX指向ASCII码表 mov al,hex ;AL取得一位16进制数 ;恰好就是ASCII码表中的位移 and al,0fh ;只有低4位是有效的,高4位清0 Xlat ;换码:AL←DS:[BX+AL] mov dl,al ;入口参数:DL←AL mov ah,2 ;02号DOS功能调用 int 21h ;显示一个ASCII码字符,例 代码段(续),mov al,hex+1 ;转换并显示下一个数据 and al,0fh xlat mov dl,al mov ah,2 int 21h,【例 3‑1】将16进制数字转换为对应七段码,七段数码管:7段LED发光管 通过7个发光段的不同组合,能较好地显示16进制数字(0,…,9,A,b,C,d,E,F)。

      每一段由一个二进制位控制它的亮或暗 可用一个字节来控制七段数码管的显示 各段顺时针分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,依次对应D0~D7位 假定0 表示对应段亮, 1 表示对应段暗,那么显示数字0 对应的控制码应为11000000B,显示数字1对应的控制代码为11111001B,依此类推,显示数字F对应的控制代码为10001110B 这种用于控制七段数码管亮暗的代码就称为七段码DSEG SEGMENT LEDTB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0C1H,86H,8EH XDATA DB 9 ; 要显示的16进制数字 XCODE DB ? ; 存放要显示数字对应的七段码 DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS:DSEG START :MOV AX, DSEG MOV DS, AX MOV BX, OFFSET LEDtb MOV AL, XDATA ; 取16进制数字 AND AL, 0FH XLAT ; 查表取得对应的七段码 MOV XCODE, AL ; 保存 MOV AX, 4C00H INT 21H CSEG ENDS END START,3.2 分支程序设计,根据条件是真或假决定执行与否 判断的条件:各种指令(如CMP、TEST等)执行后形成的状态标志 分支控制:转移指令Jcc和JMP可以实现 分支结构有 单分支结构 双分支结构 多分支结构,3.2.1 单分支结构,条件成立跳转,否则顺序执行分支语句体 注意选择正确的条件转移指令和转移目标地址,【例 3-2】求绝对值,计算AL中有符号数的绝对值,cmp al,0 jge nonneg ;条件满足(AL≥0),转移 neg al ;条件不满足,求补 nonneg: mov result,al ;条件满足,;不恰当的分支 cmp al,0 jl yesneg ;条件满足(AL<0),转移 jmp nonneg yesneg: neg al ;条件满足,求补 nonneg: mov result,al ;条件不满足,3.2.2 双分支结构,条件成立跳转执行第2个分支语句体,否则顺序执行第1个分支语句体 注意第1个分支体后一定要有一个JMP指令跳到第2个分支体后,【例 3-3】显示BX的最高位,显示BX的最高位,shl bx,1 ;BX最高位移入CF标志 jc one ;CF=1,即最高位为1,转移 mov dl,30h ;CF=0,即最高位为0:DL←30H=‘0’ jmp two ;一定要跳过另一个分支体 one: mov dl,31h ;DL← 31H=‘1’ two: mov ah,2 int 21h ;显示,可以用JNC替换JC,显示BX的最高位(另解1),shl bx,1 ;BX最高位移入CF标志 jnc one ;CF=0,即最高位为0,转移 mov dl,31h ;CF=1,即最高位为1:DL←31H=‘1’ jmp two ;一定要跳过另一个分支体 one: mov dl,30h ;DL← 30H=‘0’ two: mov ah,2 int 21h ;显示,转换为单分支结构,显示BX的最高位(另解2),mov dl,’0’ ;DL←30H=‘0’ shl bx,1 ;BX最高位移入CF标志 jnc two ;CF=0,即最高位为0,转移 mov dl,’1’ ;CF=1,即最高位为1:DL←31H=‘1’ two: mov ah,2 int 21h ;显示,编写分支程序,需留心分支的开始和结束,显示BX的最高位(无分支),mov dl,0 shl bx,1 ;BX最高位移入CF标志 adc dl,30h ;CF=0,DL←0+30h+0=30H=‘0’ ;CF=1,DL←0+30h+1=31H=‘1’ two: mov ah,2 int 21h ;显示,大小写字母转换,;如果DL是一个小写字母,则转换为大写 cmp dl,‘a’ ;小于小写字母a,不需要处理 jb disp cmp dl,‘z’ ;大于小写字母z,也不需要处理 ja disp sub dl,20h ;是小写字母,则转换为大写 disp: ……,转换原理,大小写字母的比较和转换,,结论1:大小写字母的ASCII码值相差20H 结论2:大小写字母的ASCII码值仅D5位不同,方法1(加减指令): “ADD DL,20H” “SUB DL,20H” 方法2(逻辑指令): “OR DL,20H” “AND DL,0DFH”,大小写互换(异或指令): “XOR DL,20H”,[例3-4] 将4位二进制转换成对应的十六进制字符,MOV AL, X CMP AL, 9 JA ALPH ADD AL, 30H JMP DONE ALPH: ADD AL, 37H DONE: MOV Y, AL,MOV AL, X OR AL, 30H CMP AL, ‘9’ JBE DONE ADD AL, 7 DONE: MOV Y, AL,3.2.3 多分支结构,如果可供选择的程序块多于两个,这样的结构称为多分支选择结构,如下图 (a)所示,下图 (b)是汇编语言程序的实现方法。

      例 3‑5】 编程实现符号函数:变量X和Y均为数据段中字节变量 1(X0) Y = 0(X=0) X范围:(-128 ~ +127) -1(X0),,,MOV AL,X CMP AL,0 JGE BIGER MOV AL,0FFH ;X0,1送Y 单元 OK: MOV Y,AL,DATA SEGMENT PROMPT DB 0DH, 0AH, “Input a number (1~3): $” MSG1 DB 0DH, 0AH, “FUNCTION 1 EXECUTED . $” MSG2 DB 0DH, 0AH, “FUNCTION 2 EXECUTED . $” MSG3 DB 0DH, 0AH, “FUNCTION 3 EXECUTED . $” DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX,[例3-6] 从键盘上输入数字“1”到“3”,根据输入选择对应程序块执行INPUT: LEA DX, PROMPT MOV AH, 9 INT 21H ;输出提示信息 MOV AH, 1 INT 21H ;输入一个数字 CMP AL, ‘1’ JB INPUT ;“0”或非数字,重新输入 JE F1 ;数字“1”,转F1 CMP AL, ‘2’ JE F2 ;数字“2”,转F2 CMP AL, ‘3’ JE F3 ;数字“3”,转F3 JMP INPUT ;大于“3”,重新输入,F1: LEA DX, MSG1 ;F1程序块 JMP OUTPUT F2: LEA DX, MSG2 ;F2程序块 JMP OUTPUT F3: LEA DX, MSG3 ;F3程序块 JMP OUTPUT OUTPUT: MOV AH, 9 INT 21H MOV AX, 4C00H INT 21H CODE ENDS END START,DATA SEGMENT PROMPT DB 0DH, 0AH, “Input a number (1~3): $” MSG1 DB 0DH, 0AH, “FUNCTION 1 EXECUTED . $” MSG2 DB 0DH, 0AH, “FUNCTION 2 EXECUTED . $” MSG3 DB 0DH, 0AH, “FUNCTION 3 EXECUTED . $” ADDTBL DW F1, F2, F3 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA,用地址表实现多分支,START:MOV AX, DATA MOV DS, AX INPUT:LEA DX, PROMPT MOV AH, 9 INT 21H ;显示提示信息 MOV AH, 1 INT 21H ;输入一个数字 CMP AL, ‘1’ JB INPUT ;不正确输入,重新输入 CMP AL, ‘3’ JA INPUT ;不正确输入,重新输入,SUB AL, ‘1’ ;将数字字符“1”到“3”转换为0, 1, 2 SHL AL, 1 ;转换为0,2,4 MOV BL, AL MOV BH, 0 ;转入BX JMP ADDTBL[BX] ;相对寻址,转移到对应程序块 F1: LEA DX, MSG1 ;F1程序块 JMP OUTPUT F2: LEA DX, MSG2 ;F2程序块 JMP OUTPUT F3: LEA DX, MSG3 ;F3程序块 JMP OUTPUT ;这条指令可以省略,OUTPUT: MOV AH, 9 INT 21H MOV AX, 4C00H INT 21H CODE ENDS END START,3.3 循环程序设计,,循环结构也称“重复结构”,一般由以下4个部分组成:,(1)初始化部分:为循环做准备。

      如:累加器清零,设置地址指针和计数器的初始值等 (2)工作部分:实现循环的基本操作 (3)修改部分:修改指针、计数器的值,为下一次循环做准备 (4)控制部分:判断循环条件,确定结束或继续循环两种结构的循环:,WHILE循环:先判断循环条件,条件满足则进入循环,循环次数最少为0次 DO-WHILE循环:。

      点击阅读更多内容
      猜您喜欢
      建筑工程计量与计价 第2版 教学课件 ppt 作者 王军霞 单元一.ppt 建筑安装工程造价与施工管理 教学课件 ppt 作者 丁云飞 第8章.ppt 建筑安装工程造价与施工管理 教学课件 ppt 作者 丁云飞 第6章.ppt 建筑电工学 教学课件 ppt 作者 王佳 第5章 基本放大电路.ppt 建筑AutoCAD2009中文版 教学课件 ppt 作者 陈剑锋 第12章 绘制建筑平面图.ppt 微机检测与控制应用系统设计 教学课件 ppt 作者 余祖俊 第9章 微机系统抗干扰技术.ppt 建筑工程估价 第2版 教学课件 ppt 作者 许程洁 主编 第11章.ppt 微机接口技术实用教程 教学课件 ppt 作者 何利 第6章 串行通信接口技术.ppt 二、稳定晶型氧化锆(zro 2 ).ppt 建筑工程制图与识图 教学课件 ppt 作者 王强 等 0 绪 论.ppt 建筑工程计量与计价 教学课件 ppt 作者 马丽华 单元2 建设工程定额.ppt 二进制与十进制的相互转换(1).ppt 成本会计 教学课件 ppt 作者 刘晓峰 主编 4.ppt 园林植物保护 教学课件 ppt 作者 迟全元 任务二 认识昆虫的生物学特性.ppt 工程制图基础 非机类 教学课件 ppt 作者 杨学元 主编 工程制图基础.ppt 工程制图基础 非机类 教学课件 ppt 作者 杨学元 主编 第一章.ppt 成本会计 教学课件 ppt 作者张艳 成本会计第八章.ppt 企业彩讯介绍.ppt 建筑工程计量与计价 教学课件 ppt 作者 马丽华 单元6 砌筑工程.ppt 微机原理、汇编语言与接口技术 教学课件 ppt 作者 韩晓茹 ch05 存储器及存储体系.ppt
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.