资源描述:
《天安门广场扩声改造系统工程综合施工技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、天津大学计算机科学与技术学院实验报告《汇编语言》实验报告(二)年级:2011班级:学号:姓名:一、实验题目编写一程序使其实现将1个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把两个数组显示出来.二、实验要求需要定义3个数组,一个是含有20个数据的数组M,另两个是正数数组P和负数数组N.P数组里放着M中的正数,N放着M里的负数,并且分别将P和N显示出来.三、程序设计说明(用来说明程序的功能、结构。包括:程序名、功能、原理及算法说明、程序及数据结构、主要符号名的说明、程序框图等。)程序的功能是将含有20个数据的数组分成2个数组,一个为正数数组,一
2、个为负数数组,并将2个数组分别显示出来.首先在定义数据段时定义数据数组,将20个数据分别定义出来,并定义2个数组P和N.在代码段里,利用段寄存器si对数组M的数据进行访问,并用比较语句cmp判断数据的正负,然后用传送语句mov存放到P和N数组中,最后用一个屏幕显示的DOS指令,将数组中的数据显示出来.四、程序调试说明(包括:调试情况,如上机时遇到的问题及解决办法,观察到的寄存器、存储器的内容或状态及其分析.对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会,以及诸如调试日期、文件存放位置等需要记录的信息。)首先,在数据段的装入时,ds=13C
3、E,从ds:0000-ds:0027存放着M的数组的数据ds:0028-ds:004f和ds:0050-ds:0077分别存放p和n.在执行cmp对数据的判断和mov对数据的传送之后,P和N分别存放M数组的整数和负数.然后将数据按16进制输出.符合预期的输出,调试成功.共8页第8页天津大学计算机科学与技术学院实验报告四、实验结果与结论(经调试正确的程序的运行结果)五、使用说明(包括:程序的使用方法,调用方式,操作步骤等;要求输入信息的类型及格式;出错信息的含义及程序的适用范围等。)本程序是对数据按照正负进行分类,并输出.在使用时,只要在数据定义时进行数据的修改,就可
4、以对不同的数据进行分类.六、实验中遇到的问题及解决方法开始时,我本来想在数据判断正负之后的数据传送,进行P和N的无间隙存储,即PN数组之间的数据没有间隔.但我发现这样程序会变得复杂.后来改为,3个数组M,P,N定义同样空间的数组,并且PN定义全为0数据.数据在M里按同样位置存储到PN里面.如此,有一个问题需要解决.数据在显示时,不应该在0的数据输出.因此,本程序不允许对0进行分类.七、程序源代码datasegmentmdw23,-35,243,5634,-1572dw1652,-2034,56,-27,-3521dw496,128,-209,-114,-7843dw
5、17,505,-34,-378,96pdw20dup(0)ndw20dup(0)xdb0共8页第8页天津大学计算机科学与技术学院实验报告dataendsstacksegmentparastackdw20hdup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovsi,0movcx,20again:testm[si],8000hjnsposintmovax,m[si]movn[si],axjmpnextposint:movax,m[si]movp[si],axn
6、ext:addsi,2loopagain共8页第8页天津大学计算机科学与技术学院实验报告movsi,39movbx,1again1:cmpp[si-1],0jeexitmovdl,byteptrp[si]here:anddl,0fhcmpdl,9janext1adddl,30hjmpnext2next1:adddl,37hnext2:movx,dlmovdl,byteptrp[si]movcl,4shrdl,clcmpdl,9janext3adddl,30hjmpnext4共8页第8页天津大学计算机科学与技术学院实验报告next3:adddl,37hnext4:mo
7、vah,2int21hmovdl,xmovah,2int21hdecsimovdl,byteptrp[si]subbx,1jzhereaddsi,2addbx,2movdl,72movah,2int21hmovdl,32movah,2int21hexit:subsi,2jnsagain1共8页第8页天津大学计算机科学与技术学院实验报告movdl,0ahmovah,2int21hmovdl,0dhmovah,2int21hmovsi,39movbx,1again2:cmpn[si-1],0jeexit1movdl,byteptrn[si]here1:anddl,0