- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 娄底房产网优秀员工颁奖词.doc
- 娘想儿-流水长;儿想娘-扁担长范文(含分数) 议论文.doc
- 娜样纯杰的爱恋歌词.doc
- 娱乐圈十大混血儿明星.doc
- 娱乐圈著名远房亲戚关系.doc
- 娱乐圈顾家好男人揭秘.docx
- 娱乐风向标-第十期稿.docx
- 娱评:相声的互联网思维不是趴网上找段子.doc
- 婚后男人需要女人做的五件事.doc
- 婚宴上的祝酒词(已改改).doc
- 高炉炉前工(高级)技能鉴定考试题库-下(多选、判断题汇总).pdf
- 2024年A特种设备相关管理考试题库附答案.pdf
- 第十四届全国旅游院校服务技能(导游服务)大赛理论考试题库-下(多选、判断题汇总).pdf
- 2024年物联网安装调试员(高级工)职业资格鉴定考试题库(含答案).pdf
- 2024年第九届中小学“学宪法、讲宪法”竞赛题库(两套试题).pdf
- 2024年发电集控值班员(高级)技能鉴定考试题库(含答案).pdf
- 2024 年“湖北工匠杯”-全省职工职业技能大赛无人机驾驶员赛项考试题库(含答案).docx
- 道路与桥梁专业知识考试题库及答案(完整版).pdf
- “巴渝工匠”杯第十三届居民服务业职业技能竞赛(中式烹调师赛项)参考试题库(含答案).docx
- 2024省技能大赛植物嫁接赛项备考试题库(含答案).pdf
文档评论(0)