1、计算机原理实验报告- 接口部分实验( 二 )名称: 循环程序设计编程训练 一、实验目的:1.加深对循环结构的理解2.掌握循环结构程序设计的方法3.熟练掌握调试循环结构程序设计的方法二、实验内容:求数据区的第一单元存放区内数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。三、编程算法与说明:为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为 1 的数据的个数累加起来,即得区内所含负数的个数。四、程序流程图:YNN YINC SIINC BX开始SI 为计数器count 为元素个数MOV SI,0LEA BX,ARRAYMOV CX,COUNTMOV
2、 AX,BXAX=0CX-1=0?显示10SI-10=0?ADD SI,30H 输出结束五、程序清单:data segmentcount dw 10 ;第一单元定义元素个数myname db linyun 201081516,0dh,0ah,$array db 1,1,-2,-3,-4,5,-6,-7,-8,9,-10 ;第二单元定义数据infor1 db the number of positive: ,0dh,0ah,$infor2 db 0dh,0ah,the number of negtive: ,0dh,0ah,$msg db 10,$ ;定义一个字符串10positive dw ?
3、negtive dw ?data endscode segmentassume cs:code,ds:datastart:push dsmov ax,0push axmov ax,datamov ds,axmov ah,09hlea dx,mynameint 21hmov cx,countmov si,0 ;SI 为计数器,计算负数的个数lea bx,arraycircle:mov ax,bxcmp al,0 ;al 与 0 比较,小于 0 为负数,si 加一jge label01inc silabel01:inc bxloop circlemov cx,10sub cx,simov posi
4、tive,cx ;将正数的个数存放在 positive 单元中mov negtive,si ;将负数的个数存放在 negtive 单元中cmp si,10 ;如果 10 个数都是负数,则,直接显示字符串负数的个数为10 ,不用再转为asciijne label02mov ah,09hlea dx,infor1int 21hmov ah,02hmov dl,30hint 21hmov ah,09hlea dx,infor2int 21hlea dx,msgmov ah,09hint 21hjmp label03label02:lea dx,infor1mov ah,09hint 21hmov a
5、h,02hadd cl,30h ;输出正数的个数mov dl,clint 21hlea dx,infor2mov ah,09hint 21hadd si,30hmov dx,si ;输出负数的个数mov ah,02hint 21hlabel03:mov ah,4chint 21hcode endsend start六、实验结果:程序编译后,用 dump 窗口查看 ds 数据段,如下图,可知,存入的 10 个数据分别为01h,01h,0feh,0fdh,0fch,05h,0fah,0f9h,0f8h,09h,0f6h也就是十进制的1,1,-2,-3,-4,5,-6,-7,-8,9,-10。图一:编译后变量图程序运行后,如下图,可知,将统计到的正数的个数存在数据段中的 005ah 单元,将负数的个数存在 005ch 单元。图二:数据段中 005ah 单元存入的为 4,005ch 中存入的为 6,说明正数为 4 个,负数为6 个,符合预期。七、实验体会本次编程实践较为简单,主要是学习循环语句的使用以及学会用 td.exe 调试程序并查看变量的值。实验较为成功。学生签字: 日期: