1、 西 安 邮 电 大 学(计算机学院)课内实验报告实验名称:字符及字符串输入输出与顺序程序设计专业名称: 通信工程班 级: 通工 1203学生姓名: 杜媛媛学号(8 位): 03121064指导教师: 宁 晓 菊实验日期: 2014 年 11 月 3 日一. 实验目的及实验环境1、学习和掌握字符及字符串的输入输出方法。2、掌握顺序程序设计方法。3、进一步掌握调试工具的使用方法。二 实验预习要求1、 复习 DOS 功能调用中用于字符输入(功能号 01H)、字符输出(功能号 02H)、字符串输入(功能号为 0AH)以及字符串输出(功能号 09H)的调用方法(详见教材 5.5.6)。2、 复习 BC
2、D 码运算调整指令。3、 根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。4、 从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。三实验内容1、从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。四方案设计1. 问题分析考虑到与用户进行交互,则需要使用 dos 功能调用1) 从键盘获取一个字符并显示MOV AH, 01HINT 21H ;调用 21 号软中断,等待用户输入一个字符,并将该字符保存在 AL 中SUB AL, 30H ;将 ASCII 码转换为对应的数值2) 显示一个字符MOV DL, 2OR DL, 30H ;
3、将数值转换为 ASCII 码MOV AH, 02HINT 21H ;将字符A显示到显示器上3) 显示一个以$结尾的字符串LEA DX, INFOR ;或者 MOV DX, OFFSET INFORMOV AH, 09HINT 21H4) 计算两个一位十进制数的加法MOV BL, NUM1MOV AL, NUM2ADD AL, BL ;将两个数加起来AAA ;非压缩性 BCD 码加法调整指令,调整 AX 寄存器中的内容。5) 计算两个一位十进制数的乘法MOV BL, NUM1MOV AL, NUM2MUL AL, BL ;将两个数相乘结果放在 AL 寄存器中AAM ;非压缩型 BCD 码乘法调整
4、指令,调整 AX 寄存器中的内容。五 测试数据及运行结果1. 两个一位十进制数之和程序运行结果2、求两个一位十进制数的积1) 部分反汇编结果2) 输入第一个数 8 后, AL=38H3) 输入第二个数 6 后,AL = 36H4) 乘法指令执行后,AL=30H5) 乘法调整后,AX=04086*8=48,与实际计算结果一致6) 最终结果图六 总结实验心得:通过这次试验我学习了字符及字符串的输入输出方法,并对顺序程序的设计方法有了一定了解,并且通过这次试验也进一步掌握调试工具的使用方法,通过这次试验,我发现我在基本的命令上理解还不是很透彻,常把一些命令弄错,有待进一步提高。七附录:源代码(电子版
5、)1、源程序框架补全源代码assume cs:code, ds:datadata segmentinfor1 db “Please Input the First Data(10):$“infor2 db 0ah, 0dh, “Please Input The Second Data(10):$“infor3 db 0ah, 0dh, “The Result is:$“data endscode segmentstart: mov ax, datamov ds, axlea dx, infor1 ;获取第一个数mov ah, 09hint 21hmov ah, 01hint 21hsub al
6、, 30hmov bl, allea dx, infor2 ;获取第二个数mov ah, 09hint 21hmov ah, 01hint 21hsub al, 30hmov ah, 0 ;计算结果add al, blaaapush ax ;显示结果lea dx, infor3mov ah, 09hint 21hpop axpush axmov dl, ahor dl, 30hmov ah, 02hint 21hpop axmov dl, alor dl, 30hmov ah, 02hint 21hmov ah, 4ch;返回 dosint 21hcode endsend start2、求两个
7、一位十进制数的积assume cs:code, ds:datadata segmentinfor1 db “Please Input the First Data(10):$“infor2 db 0ah, 0dh, “Please Input The Second Data(10):$“infor3 db 0ah, 0dh, “The Result is:$“data endscode segmentstart: mov ax, datamov ds, axlea dx, infor1 ;获取第一个数mov ah, 09hint 21hmov ah, 01hint 21hsub al, 30hmov bl, allea dx, infor2 ;获取第二个数mov ah, 09hint 21hmov ah, 01hint 21hsub al, 30hmov ah, 0 ;计算结果mul blaampush ax ;显示结果lea dx, infor3mov ah, 09hint 21hpop axpush axmov dl, ahor dl, 30hmov ah, 02hint 21hpop axmov dl, alor dl, 30hmov ah, 02hint 21hmov ah, 4ch;返回 dosint 21hcode endsend start