资源描述:
《微机原理 实验一 加法程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一加法程序一、实验目的:学习数据传送和算术运算指令的用法。二、实验内容:将两个多位十进制28056,47193相加,并显示加数,被加数,和。要求两个加数均以ASCII码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。三,程序流程图:程序流程如图2.1所示。YN开始显示被加数和加数将被加数和加数由ASCII码转化为十六进制计数值5CX清除最低位进位执行ADC带进位相加AAA调整结果送被加数存储区调整偏移量将十六进制的结果转化为ASCII码表示的数字串显示结果“和”结束CX-1=0?图2.1十进制数相加程序流程图四、编写源程序如下:SHO
2、WMACROBMOVDL,BMOVAH,02HINT21HENDMDATASEGMENTDATA1DB33H,39H,31H,37H,34HDATA2DB36H,35H,30H,38H,32HDATA3DB'____',0DH,0AH,'$'DATAENDSSTACKSEGMENTSTACKSTADB20DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVS
3、I,OFFSETDATA2MOVBX,05SHOW20HCALLDISPLSHOW0DHSHOW0AHMOVSI,OFFSETDATA1MOVBX,05SHOW2BhCALLDISPLSHOW0DHSHOW0AHMOVCL,7S1:SHOW2DHLOOPS1SHOW0DHSHOW0AHMOVSI,OFFSETDATA1MOVDI,OFFSETDATA2CALLADDAMOVSI,OFFSETDATA1MOVBX,05SHOW20HCALLDISPLMOVAX,4C00HINT21HDISPLPROCNEARDS1:SHOW[SI+BX-1]DECBXJNZDS1RETDISPLENDP
4、ADDAPROCNEARMOVDX,SIMOVBP,DIMOVBX,05AD1:SUBBYTEPTR[SI+BX-1],30HSUBBYTEPTR[DI+BX-1],30HDECBXJNZAD1MOVSI,DXMOVDI,BPMOVCX,05CLCAD2:MOVAL,[SI]MOVBL,[DI]ADCAL,BLAAAMOV[SI],ALINCSIINCDILOOPAD2MOVSI,DXMOVDI,BPMOVBX,05AD3:ADDBYTEPTR[SI+BX-1],30HADDBYTEPTR[DI+BX-1],30HDECBXJNZAD3RETADDAENDPCODEENDSENDSTA
5、RT编写完源程序后,保存为文件名为“JIAFA.ASM”的文件。五、实验结果:①用“ML”命令对源程序“JIAFA.ASM”进行汇编链接。由于输入代码时粗心,输入有误,编译器提示程序错误在20和21行:②输入“EDITJIAFA..ASM”进入编辑界面,查找20和21行,发现输入逗号“,”输入时错写成句号“.”,开始改错:③纠正后保存,接着汇编链接,程序正确,生成可执行文件“JIAFA.EXE”:④输入“JIAFA.EXE”执行程序,执行结果如下,符合题目要求:六、思考题:问:不改变数据段DATE1和DATE2的内容,如何将加数和被加数分别由28056和47193变成65082和391
6、74,并且相加。答:将原程序中的数据相加顺序改变一下,即将原来的倒序相加变为顺序相加,也可将结果变为65082和39174。程序具体改动如下: 源程序改变后的程序DS1:SHOW[SI+BX-1] 改为DS1:SHOW[SI]AD2:MOVAL,[SI]改为AD2:MOVAL,[SI+BX-1]MOVBL,[DI]改为MOVBL,[DI+BX-1]INCSIINCDI 改为DECBXADDBYTEPRT改为ADDBYTEPRT[SI],30H[SI+BX-1],30H改为ADDBYTEPRT[DI],30HADDBYTEPRT改为INCSI[DI+BX-1],30H改为INCDI七、实
7、验总结:本次实验第一次将课本上的程序搬入机器中运行,虽然程序较长且难理解,不过在电脑上可进行“debug”调试,学起来更加得心应手。同时,编译器能提示程序的错误行,这对程序的调试提供很大的帮助。虽然自己目前还达不到自己编写出类似复杂汇编程序的水平,不过本次实验激发了我的学习热情,在接下来的学习过程中,我将更加重视上机实验这个环节,毕竟在自己笔记本上也可以做这些类似实验。实验过程中注意保持细心、耐心,因为正确输入源程序将为接下来的工作提供很大便利