计算学生平均成绩实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算学生平均成绩实验

《计算机原理实验报告》----- 接口部分 实验( 三 )名称: 计算学生平均成绩实验 一、实验目的: 1.熟悉汇编语言程序的使用 2.熟悉十进制的运算、设计显示程序运行结果的格式 3.熟悉掌握DOS功能调用 二、实验要求: 编写程序,求30个分数的平均值,并以十进制表示将结果显示在屏幕上,显示的格式要求如下: 第一行显示: The thirty scores are: 以分号分隔的30个分数; 第二行显示:average scores is= 求得的平均分数。 三、编程算法与说明: 本实验从键盘输入N个分数数据,调用DOS 10号功能,便可实现从键盘输入一个字符串,然后将输入的字符串转为N个分数,累加,求平均值,然后将平均值除以N取余数,余数入栈,然后出栈输出到屏幕即可。 DOS 10号功能调用说明: MOV AH,0AH是从键盘输入字符到缓冲区。 调用参数: DS:DX=缓冲区首地址 [DS:DX]=缓冲区最大字符数。 返回参数: [DS:DX+1]=实际输入的字符数 DS:DX+2=字符串首地址 四、程序流程图: 五、程序清单: data segment infor1 db 201081516 linyun,0dh,0ah,$ infor2 db please input the scores split by ; ,0dh,0ah,$ first db 0dh,0ah,The scores are: ,$ second db The average score is = ,$ limit db 200 ;最大能从键盘输入200个字符 numb db ? ;实际输入的字符 msg db 200 dup(0) ;从键盘输入的字符首地址 count dw ? ;统计输入的分数个数 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax lea dx, infor1 mov ah,9 int 21h lea dx,infor2 mov ah,9 int 21h mov dx,offset limit ;DOS 10号功能调用 mov ah,0ah int 21h mov bl,numb ;numb为实际输入的值 mov bh,0 mov byte ptr msg[bx],$ ;将最后一个字符为$,表示字符串的结尾 lea dx,first mov ah,9 int 21h lea dx,msg mov ah,9 int 21h mov dl,0dh ;回车换行 mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h lea dx,second mov ah,9 int 21h lea bx,msg mov dl,0 ;用dl统计分数的个数 mov cx,0ffffh circle: ;统计分数的个数,由于分数之间是用逗号隔开的,所以统计逗 mov al,[bx] ;号的个数就是分数的个数 cmp al,$ ;碰到字符串结尾跳出循环 je main cmp al,; jne next inc dl next: inc bx loop circle main: lea bx,msg mov si,0 mov dh,0 mov count,dx ;将统计到的分数个数赋给count变量,再赋给CX mov cx,count ;cx为累加的次数,也就是循环的次数 loop1: mov ah,00h mov al,[bx] sub al,30h inc bx mov dl,[bx] inc bx cmp dl,; ; 第二个字符为逗号则说明分数为0-9之间的数,直接跳转到累加程序 je sum sub dl,30h ;如果是10-99之间的数,十位乘以10加上各位 mov ah,10 mul ah mov dh,00h add ax,dx inc bx sum: add si,ax ; 累加的值在si寄存器中 loop loop1 mov ax,si mov cx,count div cl ;总分数除以个数就是平均值,存与AL中 mov ah,0 ;平均值存在AX中 ;;;;;;;;;;;;;;;;;;;;;;;;;;接下来的程序是将AX里的值转为ascii码输出到屏幕 mov

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档