您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 中南大学汇编程序设计实验三
1《汇编程序设计》实验报告项目名称实验三专业班级1203学号姓名张晓航实验成绩:批阅教师:2013年10月28日2实验3实验学时:2实验地点:二综实验日期:2013.10.28一、实验目的掌握汇编编程规范,熟悉编程环境。二、实验内容1、编写子程序把字符串中的小写字母转变为大写字母(参见教材实验11)。2、编写0号中断处理程序,使得在除法溢出发生时在屏幕中间显示“divideerror!”(参见教材实验12)。(请预习第12章并完成实验,时间不够则在课后完成)三、实验步骤算法及关键代码1.代码:assumecs:codesgdatasgsegmentdbBeginner'sAll-purposeSymbolicInstructionCode.,0datasgendscodesgsegmentbegin:movax,datasg3movds,axmovsi,0calllettercmovdh,1;dh装行号(范围:1--25)movdl,1;dl装列号(范围:1--80)[注:每超过80等于行号自动加1]movcl,02h;cl中存放颜色属性(0cah为红底高亮闪烁绿色属性)movsi,0callshow_strmovax,4c00hint21hshow_str:;显示字符串的子程序[定义开始]pushcxpushsimoval,0A0hdecdh;行号在显存中下标从0开始,所以减1muldhmovbx,axmoval,2muldlsubax,2;列号在显存中下标从0开始,又因为偶字节存放字符,所以减2addbx,ax;此时bx中存放的是行与列号的偏移地址movax,0B800hmoves,ax;es中存放的是显存的第0页(共0--7页)的起始的段地址movdi,0moval,clmovch,0s:movcl,ds:[si]jcxzokmoves:[bx+di],cl;偶地址存放字符moves:[bx+di+1],al;奇地址存放字符的颜色属性incsiadddi,2jmpshortsok:popsipopcxret;显示字符串的子程序[定义结束]letterc:movax,codesgmovbx,datasgsubax,bx4movcx,48t:cmpbyteptrds:[si],'a'jbnextcmpbyteptrds:[si],'z'janextmoval,ds:[si]andal,11011111bmovds:[si],alnext:incsilooptretcodesgendsendbegin2实验结果实验代码:assumecs:codedatasegmentdbdivideerror!dataendscodesegmentstart:;do0安装程序movax,csmovds,axmovsi,offsetdo0movax,0moves,ax5movdi,200hmovcx,offsetdo0end-offsetdo0cldrepmovsb;设置中断向量表movax,0moves,axmovwordptres:[0*4],200hmovwordptres:[0*4+2],0;除法movax,1000hmovbh,01hdivbhmovax,4c00hint21hdo0:movax,datamovds,axmovsi,0movax,0b800hmoves,axmovdi,12*160+36*2movcx,13s:moval,[si]moves:[di],alincsiadddi,2loopsmovax,4c00hint21hdo0end:nop6codeendsendstart四、实验小结(简单说明实验过程中出现的问题和解决方法)问题:程序编写完成后,编译运行没有显示divideerror!解决方法:在程序中添加一个除法操作。
本文标题:中南大学汇编程序设计实验三
链接地址:https://www.777doc.com/doc-4363061 .html