字符及字符串输入输出与顺序程序设计.doc

字符及字符串输入输出与顺序程序设计.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西 安年月日 复习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, OFFSET INFOR 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、源程序框架补全源代码 assume cs:code, ds:data data segment 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:$ data ends code segment start: mov ax, data mov ds, ax lea dx, infor1 ;获取第一个数 mov ah, 09h int 21h mov ah, 01h int 21h sub al, 30h mov bl, al lea dx, infor2 ;获取第二个数 mov ah, 09h int 21h mov ah, 01h int 21h sub al, 30h mov ah, 0 ;计算结果 add al, bl aaa push ax ;显示结果 lea dx, infor3 mov ah, 09h int 21h pop ax push ax mov dl, ah or dl, 30h mov ah, 02h int 21h pop ax mov dl, al or dl, 30h mov ah, 02h int 21h mov ah, 4ch ;返回dos int 21h code ends end start 2、求两个一位十进制数的积 assume cs:code, ds:data data segment 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:$ data ends code segment start: mov ax, data mov ds, ax lea dx, infor1 ;获取第一个数 mov ah, 09h

文档评论(0)

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

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

1亿VIP精品文档

相关文档