- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
班级 学号 姓名 实验日期
实验一 两个多位十进制数相加实验
一、实验目的
1.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
2.掌握数据传送、算术运算、BCD码调整和循环指令的用法,掌握字符显示的方法。
3.熟悉和掌握用DEBUG调试程序的方法。
二、实验内容
1.将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回以DATA3为首的5个内存单元中(低位在前),并显示相加的结果。
2.将第1题改为(高位在前)的形式存放数据,程序如何修改?
3.上述程序只显示了相加的结果,没有显示被加数和加数,如果在第1题的基础上将显示格式改为47193+28056=75249,则程序如何修改?
4.上面程序没有考虑运算结果最高位有进位的情况,如果考虑可能产生的进位,则要显示完整的结果,程序如何修改?(提示:INC和LOOP指令均不影响CF)
三、实验要求
1.实验内容1、内容2为基础题,必须做,完成后可得7分。
2.实验内容3为提高题,完成后可再加2分。
3.实验内容4为提高题,完成后可再加1分。
四、实验程序和结果
1.将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回以DATA3为首的5个内存单元中(低位在前),并显示相加的结果。
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H ;存放被加数47193,ASCII码形式,低位在前
DATA2 DB 36H,35H,30H,38H,32H ;存放加数28056,ASCII码形式,低位在前
DATA3 DB 5 DUP(?) ;留出5个存放结果的单元
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,5 ;循环次数置5,5个位要相加5次
MOV SI,0 ;SI放地址位移量,每个数的第一字节地址位移量为0
CLC ;CF清0,防止第1个字节相加时ADC指令多加CF中可能的1
NEXT: MOV AL,DATA1[SI] ;取被加数一个字节送AL,DATA1偏移地址+SI为有效地址
ADC AL,DATA2[SI] ;AL+加数对应字节+CF(低位相加时可能的进位)结果送AL
AAA ;AL中两字节相加的和调整成非压缩的BCD码,进位在CF中
MOV DATA3[SI],AL ;结果送入DATA3对应字节单元中
INC SI ;地址位移量加1指向高一位字节单元
LOOP NEXT ;5次未到,继续循环
MOV SI,5 ;显示5个位,SI中的数既是循环次数又作地址位移量
DISP: ADD DATA3[SI-1],30H ;将结果从高位单元开始把非压缩的BCD码变成ASCII码
MOV DL,DATA3[SI-1] ;将ASCII码送DL以满足2号功能调用的规定要求
MOV AH,2 ;功能号送AH
INT 21H ;调用2号功能,显示一位数字
DEC SI ;次数减1
JNZ DISP ;5次未到,继续循环
MOV AH,4CH ;功能号送AH
INT 21H ;调用4CH号功能,返回DOS
CODE ENDS
END START
运行结果: 75249
2.将第1题改为(高位在前)的形式存放数据,程序如何修改?(要求给出程序、注释、运行结果)
五、实验总结和体会
班级 学号 姓名 实验日期
实验二 字符串匹配实验
一、实验目的
1.掌握提示信息的使用方法及键盘输入字符串的用法。
2.掌握串操作指令的编程使用方法。
二、实验
文档评论(0)