资源描述:
《实验报告格式要求.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验报告实验名称:实验五子程序设计(显示学生名次表rank)课程名称:微机实验院系部:电气与电子工程学院专业班级:电网1101学生姓名:万雪婷学号:同组人:实验台号:指导教师:成绩:实验日期:华北电力大学(北京)一、实验目的及要求:1.通过调试程序,观察子程序调用及嵌套过程,进一步理解CALL指令和RET指令的功能。2.掌握子程序(或过程)调用时参数传递的方法。3.进一步学习数组的使用方法。二、仪器用具:仪器名称规格/型号数量备注清华单片机实验箱51/96系列1微机联想1TMSD开发调试软件1三、实验原理编制一个程序,要求接收从键盘输入的一个班的学
2、生成绩,并存放于50字的grade数组中,其中grade+I保存学号为i+1的学生的成绩。然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+1的内容是学号为i+1学生的名次。再按学号顺序把名次从显示器上显示出来。四、实验步骤五、讨论与结论六、实验原始数据程序清单:datarea segment ;数据段grade dw 50dup(?) rank dw 50dup(?) count dw ? mess1 db 'Grade?$' mess2 db 13,10,'Input Err
3、or!',13,10,'$' mess3 db 'Rank:$' datarea ends prognam segment main proc far ;main函数,计算并显示学生的名次 assume cs:prognam,ds:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov ax,datarea mov ds,ax call input call rankp call
4、output ret main endpinput proc near ;接受一个班的成绩 lea dx,mess1 mov ah,09 int 21h mov si,0 mov count,0enter:call decibin inc count cmp dl,',' je store cmp dl,13 je exit2 jne errorstore: mov grade[si],bx add si,2 jmp ente
5、r error:lea dx,mess2 mov ah,09 int 21h exit2: mov grade[si],bx call crlf ret input endp rankp proc near ;计算一个班的学生名次 mov di,count mov bx,0 loopl: mov ax,grade[bx] mov word ptr rank[bx],0 mov cx,count lea si,grade next: cmp ax,[si] jg no_count inc
6、 word ptr rank[bx] no_count: add si,2 loop next add bx,2 dec di jne loopl ret rankp endp out proc near ;显示一个班的学生的名次 lea dx,mess3 mov ah,09 int 21h mov si,0 mov di,count next1: mov bx,rank[si] call binidec mov dl,',' mov ah,02 int 21h add si,2 dec di jnz
7、next1 call crlf ret output endp decibin proc near ;将十进制转化为二进制,并保存在BX中 newchar: mov ah,1 int 21h mov dl,al sub al,30h jl exit1 cmp al,9d jg exit1 cbw xchg ax,bx mov cx,10d mul cx xchg ax,bx add bx,ax jmp newchar exit1: ret decibin endp binidec proc near
8、 ;将二进制转换为十进制,并输出 push bx push cx push si push di mov c