资源描述:
《[计算机软件及应用]汇编实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、南华大学计算机科学与技术学院汇编语言程序设计实验作业报告(2010~2011学年度第二学期)姓名张要军学号20104030325专业电气信息班级1003班地点8—209教师刘芳菊实验一1.题目要求描述不用串操作指令,把字符串string1的内容传送到字符串string2,字符长度为count。2实验步骤(1)首先定义string1变量存放待移动字符串count变量存放字符串长度string2为目的串单元地址(2)将string1和string2的地址送向bx和si分别做基址和变址寄存器将count内容送往cx每次将string1一个单元内容送往string2对应单元内容总共做cx次(3)最后
2、输出string2的内容3流程图开始将si,bx初始化为0cx中存串长度loop跳转的次数将count+si地址存的值传到所对应count+di地址中si=si+1bx=bx+1cx=cx-1cx是否为0结束4代码DATASSEGMENTstring1db'hello$'countdw9string2db9dup(?);此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXleabx,string1leas
3、i,string2movcx,countagain:deccountmovax,[bx+count]mov[si+count],axloopagainleadx,string1movah,09hint21hMOVAH,4CHINT21HCODESENDSENDSTART5运行结果6实验总结分析通过本实验知道了串操作指令的用法及其特性,掌握了串操作下隐藏的操作。实验二1题目要求:从键盘输入一个十进制数要求输出其十六进制表示2实验步骤:(1)调用dos2号功能从键盘接受一个字符存放在AL中输入为换行时结束输入(2)每次将输入的字符转换成数字并与之前输入的数字*10相加(3)使用除16取余方法将余
4、数压栈(4)依次出栈判断是否大于9若是则转换成字母若不是则转换成数字3流程图开始将bx初始化为-1并压栈作为出栈结束条件之后将bx初始化为0从键盘接受一个字符转换成数字依次出栈到DX用除16取余法将余数压栈若AX=0!=0结束若字符不是0dh则存入AX中并交换AX,BX内容接着做BX=BX+AX操作判断dx!=-1调用dos2号功能输出dl内容4代码;输入一个2559以下的10进制数输出其16进制数DATASSEGMENT;此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATA
5、S,SS:STACKSSTART:MOVAX,DATASMOVDS,AXmovbx,-1pushbxmovdl,10movbx,0cin:movah,01hint21hcmpal,0dhjzfinish2subal,30hmovah,0xchgax,bxmuldladdbx,axjmpcinfinish2:movax,bxmovbx,16again:movdx,0divbxpushdxcmpax,0jnzagainmovah,02hmovdl,0ahint21hcout:popdxcmpdx,-1jzoverdcmpdx,9jazimuadddl,30hint21hjmpcoutzimu:a
6、dddl,37hint21hjmpcout;此处输入代码段代码overd:MOVAH,4CHINT21HCODESENDSENDSTART5运行结果6实验总结分析掌握了从键盘输入的功能,并把数字与ASCII码相互转换的能力。实验三1.题目要求:将mem地址后的数字0移到最后面并将前面的0位置补上2.实验步骤(1)将si,di初始化为0将mem的数字个数送向cx(2)判断si+count地址指向的单元是否为0若是则si+2若不是则si+2且di+2且将count+si的内容送向count+di(3)循环cx次步骤(2)(4)输出mem每一个数3流程图开始将si,di初始化为0cx初始化为cou
7、nt判断si+count的内容是否为0若是0则做si=si+2Cx=cx-1若cX=0则跳转到输出部分!=0结束若不为0则做count+si的内容送向count+disi=si+2且di=di+2将mem的内容送向dl调用dos2号功能输出dl内容4代码;移动0DATASSEGMENTmemdb1,0,2,1,4,0,5,45,0,44,7,0countdw6;此处输入数据段代码DATASENDSSTACKS