网站大量收购独家精品文档,联系QQ:2885784924

子程序调用实验.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 课程名称 微机原理与接口技术 项目名称 子程序调用实验 班 级 学 号 姓 名 同组人员 无 实验日期 2016/12/5 一、实验目的与要求: (简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。) 1、熟悉BCD码的调整指令。 2、熟悉ASCII转换成数字的方法。 3、熟悉压缩的BCD码转换成ASCII字符的方法。 4、熟悉子程序的定义和调用。 二、实验内容 (根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、算法原理、实验仪器、设备选型及连线图、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 ) 内容: 从微机键盘上输入4位被加数、加数,并显示在信息窗口中,实现双字节的BCD码(四位数)的加法,结果显示在信息窗口中,其中获得BCD码功能,高位0消隐并显示最后结果功能,将压缩的BCD码转换成ASCII字符,使用子程序调用实现。 原理:首先输入被加数,然后调用GetBCDKey函数得到双字节十进制被加数,同样的方法处理加数,然后将两个数带进位相加,得到的数高位0消隐显示出来。这里的得到双字节的十进制数是关键,还需要有将一个字节的压缩BCD码转换成两个字节数字的函数。 流程图: 三、实验分析与小结: (实验过程中的问题分析、产生的原因以及解决方法;实验结果分析; 有待优化思路) 程序分析: .MODEL TINY .STACK 100 .DATA BUFFER DB 10 DUP(?);BUFFER存放8个不确定数 augend DB 2 DUP(?) ;被加数 addend DB 2 DUP(?) ;加数 msg1 DB 0DH,0AH,请输入被加数: $ msg2 DB 0DH,0AH,请输入加数: $ msg3 DB 0DH,0AH,结果: $;msg3存放结果 ;0DH和0AH分别是回车和换行的ASCII码, ;$是DOS功能调用INT 21H中9号功能要求的要显示字符串的结束标志 .CODE START: MOV AX,@DATA MOV DS,AX MOV ES,AX CLD ;方向标志位清零 ;CLD与STD是用来操作方向标志位DF(Direction Flag)。 ;CLD使DF复位,即DF=0,STD使DF置位,即DF=1.用于串操作指令中 NOP ;空操作 ;NOP指令只使程序计数器PC加1,所以占用一个机器周期 ;其目的为保证写、读之间有个稳定时间 MOV AH,00H MOV AL,03H INT 10H ;清屏 START1: MOV AH,09H ;9号调用DX指向被加数的首地址,输出提示信息 LEA DX,msg1 ;将源操作数给出的有效地址传送到指定的的寄存器中 INT 21H LEA DI,augend ;DI-augend的首地址 MOV CX,4 ;按键次数 CALL GetBCDKey ;得到双字节十进制数(被加数) JNB START2 ;没有输入任何数字,结束 CF=0 MOV AH,09H ;9号调用DX指向加数的首地址 LEA DX,msg2 ;将源操作数给出的有效地址传送到指定的的寄存器中 INT 21H LEA DI,addend ;di指向加数 MOV CX,4 ;按键次数 CALL GetBCDKey ;得到双字节十进制数(加数) JNB START2 ;没有输入任何数字,结束 MOV AL,augend ;被加数的低8位送al ADD AL,addend ;al与加数的低位相加的结果送al DAA ;BCD算术运算调整,转换为压缩型BCD XCHG AL,AH ;高位与低位互换 MOV AL,augend + 1 ADC AL,addend + 1 ;高位 DAA XCHG AL,AH MOV BL,0 ADC BL,0 ;进位 bl存放的是进位 bl和ax相加是最后的结果 STD ;方向标志置1 LEA DI,BUFFER+4 ;存放显示结果 CALL B1toB2 ;低位 MOV AL,AH CALL B1toB2 ;高位 MOV AL,BL OR AL,30H ;转换成数字 STOSB ;存数 LEA SI,BUFFER MOV CX,5 CALL BlackDisplay ;将高位0消隐 MOV AH,09H LEA DX,msg3 ;9号调用DX指向结果的首地址 INT 2

文档评论(0)

mbxy007 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档