您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 西安交通大学-汇编语言-实验报告(2015)
汇编语言实验报告计算机xx班21x0505xxxxx2015年6月2日80X86汇编语言程序设计课内实验报告班级计算机xx实验时间2015姓名xx学号21x0505xxx实验内容概述实验一熟悉汇编语言的实验环境实验二数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。实验三设计一程序,接收从键盘输入的数字(1~5),并对每个数字的输入次数进行计数,计数结果存放在以COUNT为首地址的数组中。(最好能将计数结果打印出来)。实验四子程序及DOS/BIOS调用程序设计题6.9设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数并分别存放到S6,S7,S8,S9和S10单元中。实验五高级汇编语言技术题7.11试编写一段程序,完成以下功能:若给定名为X的字符串长度大于5时,下列指令将汇编10次。ADDAX,AX(要求:使用条件汇编,编译过程中生成LST文件,查看宏展开情况)实验六输入输出程序设计编写程序,使类型1CH的中断向量指向中断处理程序COUNT,COUNT统计1CH中断次数并存入单元M中。实验七BIOS和DOS中断题9.2编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为:输入数字:0,1,2,3,4,5,6,7,8,9密码数字:7,5,9,1,3,6,8,0,2,4实验步骤第一题1.熟悉汇编语言的实验环境,了解各项功能的调用。2.熟悉掌握masm,link,debug等工具,将一个asm文件通过汇编连接成一个可执行文件。第二题1.编写实验二并调试并调试2.查看数据段寄存器结果是否正确。第三题1.编写实验三并调试,初步了解中断的功能调用。2.从键盘输入若干1-5,看输出结果是否正确。第四题:1.在主程序中调用子函数count,完成将每个在数组mark里的成绩一一取出。2.分别判定其大小而放入统计60~69分,70~79分,80~89分,90~99分和100分的人数的S6,S7,S8,S9和S10单元中,在数据段中查看出S6,S7,S8,S9和S10中的数。第五题:1.使用条件汇编和重复汇编。2.判断当给定名为X的字符串长度大于5时,重复ADDAX,AX10次。第六题:1.使类型1CH的中断向量指向中断处理程序COUNT。2.COUNT中1CH中断每调用一次则给num加一,计算出num最后的值后存入单元M中。第七题:1.接收从键盘输入的10个十进制数字,输入回车符则停止输入。2.调用xlat使得(al)—((al)+(bx))实验中遇到的问题及其解决方法1、关于没有定义堆栈段系统发出warning问题?Link的时候,如果程序没有定义堆栈,dos系统会发出警告,但不影响后续操作。问题是在实验2中遇到,解决的思路是暂且忽略这个警告,因为堆栈是用来保存便于返回的,当程序不是很复杂时,用堆栈显得不叫繁琐。2、关于汇编语言的输出问题?汇编语言输出时,预期为数字或者英文字母,但有时会出现乱码。经过仔细思考,发现汇编的输出同一为16进制,只要把所有的输出同一为16进制而不是10进制,输出就没有问题。3、关于数据加密问题?最后一题为数据加密后输出,题目给定一个密码表,要求将输入的数据加密后输出通过查找命令,发现xlat命令的作用是使得(al)—((al)+(bx)),这样就很方便的将数据加密。实验结果第一题:第二题第三题第四题第五题实验结果第六题:第七题:建议1.上机实验太少,可以考虑增加上机次数。2.两次上机时间相隔太久,最好可以将上机时间提前。3.可以增加一些选作的课程设计,满足不同需求的同学。下附各个题目代码;第二题:datasegmentmdw-1,0,0,1,-2,-3,-4,4maxdw0dizhidw?dataendscodesegmentmainprocfarassumecs:code,ds:datamovax,datastart:pushdssubax,axpushaxmovax,datamovds,axleabx,mmovcx,8t1:movax,[bx]testax,8000hjzt2negaxt2:cmpax,maxjbt3movmax,axmovdizhi,bxt3:addbx,2loopt1movax,axretmainendpcodeendsendstart第三题:datasegmentcountdb5dup(0)dataendscodesegmentmainprocfarassumecs:code,ds:datastart:movax,datamovds,axs1:movcx,10dcallfenleicalldispmovax,4c00hint21hretmainendpfenleiprocnearinput:movah,1int21hcmpal,0dhjzexitsubal,30hcmpal,01hjbinputcmpal,05hjainputmovah,0cbwmovbx,axdecbxinccount[bx]loopinputexit:retfenleiendpdispprocnearmovsi,0movbx,5s:movdl,count[si]adddl,30hmovah,2int21hincsidecbxcmpbx,0jasretdispendpcodeendsendstart第四题:datasegmentscoredw76,69,84,90,73,88,99,63,100,80S6dw0S7dw0S8dw0S9dw0S10dw0dataendscodesegmentmainprocfarassumecs:code,ds:datastart:pushdssubax,axpushaxmovax,datamovds,axs1:movcx,10callfenleimovax,1retmainendpfenleiprocnearmovsi,0s2:movax,score[si]movbx,10divblmovbl,alsubbx,6salbx,1incS6[bx];S6为S6,S7,S8,S9,S10的首地址addsi,2;根据((socre)/10-6)*2决定该成绩送给哪一个单元loops2retfenleiendpcodeendsendstart第五题:datasegmentxdb'123456'ydb0dataendscodesegmentmainprocfarassumecs:code,ds:datastart:pushdssubax,axpushaxmovax,datamovds,axmovax,2IF(y-x)gt5rept10addax,axendmendifmovbx,1retmainendpcodeendsendstart第六题:datareasegmentMdw0datareaends;------------------------------programsegmentmainprocfarassumecs:program,ds:datareastart:pushdssubax,axpushaxmovax,datareamovds,ax;getinterruptvectormoval,1chmovah,35hint21hpushespushbx;setinterruptvectorpushdsmovax,segcountmovds,axmovdx,offsetcountmoval,1chmovah,25hint21hpopds;--------------------------int1chint1chint1chint1ch;inal,21h;andal,11111110b;out21h,al;sti;------------------------;movdi,1000;delay:;decdi;jnzdelay;resetinterruptvectorpopdxpopdsmoval,1chmovah,25hint21hretmainendpcountprocnearstiincMiretcountendpprogramendsendstart第七题:datasegmentscoredb7,5,9,1,3,6,8,0,2,4bufferdb10dup(1)dataendscodesegmentmainprocfarassumecs:code,ds:datastart:pushdssubax,axpushaxmovax,datamovds,axmovsi,0movcx,10leabx,scoreinput:movah,1int21hcmpal,0dhjzexitsubal,30hjbinputcmpal,09hjainputxlat;[(bx)+(al)]-almovbuffer[si],alincsiloopinputexit:movax,axretmainendpcodeendsendstart
本文标题:西安交通大学-汇编语言-实验报告(2015)
链接地址:https://www.777doc.com/doc-5469225 .html