预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

西安邮电大学 (计算机学院) 课内实验报告 实验名称:字符及字符串输入输出与顺序程序设计 专业名称:通信工程 班级:通工1203 学生姓名:杜媛媛 学号(8位):03121064 指导教师:宁晓菊 实验日期:2014年11月3日 一.实验目的及实验环境 1、学习和掌握字符及字符串的输入输出方法。 2、掌握顺序程序设计方法。 3、进一步掌握调试工具的使用方法。 二.实验预习要求 复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。 复习BCD码运算调整指令。 根据“2.2.3实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。 从“2.2.4实验习题”中任选一道题目,编写源程序,以便上机调试。 三.实验内容 1、从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 四.方案设计 问题分析考虑到与用户进行交互,则需要使用dos功能调用 从键盘获取一个字符并显示 MOV AH,01H INT 21H ;调用21号软中断,等待用户输入一个字符,并将该字符保存在AL中 SUB AL,30H ;将ASCII码转换为对应的数值 显示一个字符 MOV DL,2 OR DL,30H ;将数值转换为ASCII码 MOV AH,02H INT 21H ;将字符’A’显示到显示器上 显示一个以’$’结尾的字符串 LEA DX,INFOR ;或者MOV DX,OFFSETINFOR MOV AH,09H INT 21H 计算两个一位十进制数的加法 MOV BL,NUM1 MOV AL,NUM2 ADD AL,BL ;将两个数加起来 AAA ;非压缩性BCD码加法调整指令,调整AX寄存器中的内容。 计算两个一位十进制数的乘法 MOV BL,NUM1 MOV AL,NUM2 MUL AL,BL ;将两个数相乘结果放在AL寄存器中 AAM ;非压缩型BCD码乘法调整指令,调整AX寄存器中的内容。 测试数据及运行结果 两个一位十进制数之和程序运行结果 2、求两个一位十进制数的积 1) 部分反汇编结果 输入第一个数8后,AL=38H 输入第二个数6后,AL=36H 乘法指令执行后,AL=30H 乘法调整后,AX=0408 6*8=48,与实际计算结果一致 最终结果图 总结 实验心得:通过这次试验我学习了字符及字符串的输入输出方法,并对顺序程序的设计方法有了一定了解,并且通过这次试验也进一步掌握调试工具的使用方法,通过这次试验,我发现我在基本的命令上理解还不是很透彻,常把一些命令弄错,有待进一步提高。 七.附录:源代码(电子版) 1、源程序框架补全源代码 assumecs:code,ds:data data segment infor1 db"PleaseInputtheFirstData(<10):$" infor2 db0ah,0dh,"PleaseInputTheSecondData(<10):$" infor3 db0ah,0dh,"TheResultis:$" data ends code segment start: mov ax,data movds,ax leadx,infor1 ;获取第一个数 movah,09h int21h movah,01h int21h subal,30h movbl,al leadx,infor2 ;获取第二个数 movah,09h int21h movah,01h int21h subal,30h movah,0 ;计算结果 addal,bl aaa pushax ;显示结果 leadx,infor3 movah,09h int21h popax pushax movdl,ah or dl,30h movah,02h int21h popax movdl,al ordl,30h movah,02h int21h movah,4ch ;返回dos int21h code ends end start 2、求两个一位十进制数的积 assumecs:code,ds:data data segment infor1 db"PleaseInputtheFirstData(<10):$" infor2 db0ah,0dh,"PleaseInputTheSecondData(<10):$" infor3 db0ah,0dh,"TheResul