微机原理实验26页_第1页
微机原理实验26页_第2页
微机原理实验26页_第3页
微机原理实验26页_第4页
微机原理实验26页_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理实验(第二次)仅供参考不予下载2.2 字符及字符串输入输出与顺序程序设计实验2.2.1 实验目的1、学习和掌握字符及字符串的输入输出方法。2、掌握顺序程序的设计方法。3、进一步掌握调试工具的使用方法。2.2.2 实验预习要求1、 复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。2、 复习BCD码运算调整指令。3、 根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。2.

2、2.3 实验内容 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。1、 问题分析 比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字09的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后

3、变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题。(1)从键盘输入一个一位十进制数的方法 通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:MOVAH, 01HINT21H;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUBAL, 30H;减去30H后得到键入数字所代表的数值(2) 提示信息字符串的显示通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为$。指令格式如下:MOV DX, OFFSET INFOR1;IN

4、FOR1为在数据段中定义的要显示的字符串 MOV AH, 09H INT 21H(2)非压缩型BCD数加法调整指令的使用设从键盘输入的数值已存放在寄存器AL, BL中,可用下列程序完成数据相加和调整操作:XORAH,AHADD AL, BLAAA;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字请读者考虑,为什么要使用指令“XOR AH,AH”,不用行否?(3)计算结果的显示执行完AAA指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,并依次调用功能号为2的DOS功能调用来显示字符。具体指令代码如下:PUSH AXMOV DL, AHADD DL, 30HMO

5、V AH, 02HINT 21HPOP AXMOV DL, ALADD DL, 30H MOV AH, 02H INT 21H2、 源程序框架DATASEGMENT INFOR1 DB "Please Input the First Data(<10):$" INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$" INFOR3 DB 0AH,0DH,"The Result is:$";0DH和0AH分别为非显示字符回;车和换行的ASCII码值,美圆符号“$”为字符串结

6、束标志,不能省略。DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART:MOVAX, DATA MOV DS, AX显示提示信息INFOR1并从键盘接收一个字符的指令序列 SUB AL, 30HMOV BL, AL求和并调整指令序列显示提示信息INFOR2并从键盘接收一个字符的指令序列SUB AL, 30H显示提示信息INFOR3的指令序列PUSH AXPOP AXPUSH AX显示十位及个位上数字的指令序列MOV AH, 4CH INT 21HCODE ENDS END START3、 程序调试 源程序编写完成后,先静态检查,无误后,对源程

7、序进行汇编和连接,生成可执行文件。在DOS命令提示符下运行该程序,分析运行结果是否正确。若结果不正确,使用DEBUG对其进行调试。2.2.4 实验习题1、 设a,b,c,d为四个压缩型BCD数,它们被存放在内存dbcd开始的4个存储单元中,计算a+b+c+d,并将结果在屏幕上显示出来(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)。程序编写完成并运行正确后,打开源程序,改变a,b,c,d的内容,然后重新进行汇编、连接并运行程序,检查程序运行结果与手工计算结果是否相符。下面给出几组实验用数据:(1) a=11, b=23, c=25, d=31(2) a=10,

8、b=20, c=30, d=40(3) a=45, b=45, c=45, c=45(4) a=88, b=99, c=77, d=66(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)2、 从键盘输入两个一位十进制数,计算这两个数之积,并将结果在屏幕上显示出来。3、 从键盘输入09中任意一个数自然数,将其平方值在屏幕上显示(使用查表法实现)。2.2.4 实验报告内容1 补充实验源代码:DATASEGMENT INFOR1 DB "Please Input the First Data(<10):$" INFOR2 DB 0AH,0DH,

9、"Please Input the Second Data(<10):$" INFOR3 DB 0AH,0DH,"The Result is:$"DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOVAX, DATAMOV DS, AXMOV DX, OFFSET INFOR1 ;INFOR1为在数据段中定义的要显示的字符串 MOV AH, 09H INT 21HMOVAH, 01HINT21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUBAL, 30H ;减去30H后得到

10、键入数字所代表的数值MOV BL, ALMOV DX, OFFSET INFOR2;INFOR2为在数据段中定义的要显示的字符串 MOV AH, 09H 电子0802 (01) INT 21HMOVAH, 01HINT21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUBAL, 30H ;减去30H后得到键入数字所代表的数值XORAH,AHADD AL, BLAAA ;执行该指令后AH中为和的十位上的数字,AL中为个位上的数字PUSH AX ;保护AX,压入堆栈MOV DX, OFFSET INFOR3; INFOR3为在数据段中定义的要显示的字符串MOV AH, 09HIN

11、T 21HPOP AXPUSH AXMOV DL, AHADD DL, 30HMOV AH, 02HINT 21HPOP AXMOV DL, ALADD DL, 30HMOV AH, 02HINT 21HMOV AH, 4CHINT 21HCODE ENDSEND START2 实验习题1 电子0802(01)主要算法流程图:从内存读取第一个数到AL是否加完相加从内存读取下一个数DAA调整AL,AH做带进位加法否是AL右移四位送入DL并调整为ascii码显示AH送入DL并调整为ascii码显示AL高四位清零送入DL并调整为ascii码显示结束寄存器或堆栈保存AX代码:DATASEGMENT d

12、bcd DB 88H,99H,77H,66HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOVAX, DATA MOV DS, AX XORAH,AH MOV SI,3 MOV BX,OFFSET dbcd MOV AL,BX NEXT:INC BX ADD AL,BX DAA ADC AH,0 DEC SI JNZ NEXTDONE:PUSH AXMOV DL,AHADD DL,30HMOV AH, 02HINT 21H ;显示百位POP AXMOV BL,ALMOV CL,4 SHR AL,CL ;右移4次取高位MOV DL,AL

13、ADD DL,30HMOV AH, 02HINT 21H ;显示十位AND BL,0FH ;高4位清零取低位MOV DL,BLADD DL,30HMOV AH, 02HINT 21H ;显示个位MOV AH, 4CHINT 21HCODE ENDSEND START3 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。实验中遇到的麻烦:刚开始在做四个BCD数的加法时,我只在加法全部做完后才使用DAA对结果进行调整,可是在调试时发现这样做出的结果是错误的,于是改为每加完一次,使用一次DAA,总共加了3次,使用3次DAA。后来发现当结果的BCD码大于99H时,百位显示就成问题了。想了半天,把AH作为百位,与AL做加法的同时也做和0的带进位加法,这样只要AL大于99H,DAA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论