文档详情

大连理工计算机原理实验三(报告).doc

发布:2017-06-20约2.73千字共5页下载文档
文本预览下载声明
《计算机原理实验报告》——汇编语言 实验(三)名称: 计算学生平均成绩实验 一、实验目的: 1.学习运算类指令 2.复习几种常用INT 21H 指令 二、实验要求: 编制一个:求30名学生平均成绩的程序 三、编程算法与说明: 先将成绩求平均值,存储于特定的存储区域,然后将平均值转换为ASCII码输出显示 1.累加和子程序accum:将数据串buf中的数据累加,结果存于data1 2.平均值子程序average :将data1中的累加和转换为平均值,结果存于data2 3.二进制/BCD装换子程序conver :将data2中的平均值转换为BCD码。其中: 百位存于data3单元; 十位存于data4单元; 个位存于data5单元。 4.显示子程序display :将data3-5中的BCD码的百十个位利用INT21H的9号功能显示在屏幕上。 四、程序流程图: 五、程序清单: data segment buf dw 80,100,100,80,75,66,58,100,69,95 count equ ($-buf)/2 data1 dw ? ;累加和单元(字数据) data2 db ? ;平均值单元(字节数据) data3 db ? ;BCD的百位单元(字节数据) data4 db ? ;BCD的十位单元(字节数据) data5 db ? ;BCD的个位单元(字节数据) buf2 db 0dh,0ah,$ buf1 db my name is chenyubin 1956,0dh,0ah,$ buf3 db The average score is ,$ buf4 db 80,100,100,80,75,66,58,100,69,95,0AH,0DH,$ data ends ssg1 segment dw 100 dup(?) ssg1 ends code segment assume cs:code,ds:data,ss:ssg1 main: mov ax,data mov ds,ax lea dx,buf1 mov ah,09h int 21h lea dx,buf4 mov ah,09h int 21h call accum ;accumulatino from buf to data1 call average ;average from data1 to data2 call conver ;with data2 conver to bcd(to data3-5) lea dx,buf3 ;显示字符串buf3 mov ah,09h int 21h call display1 ;将data3、data4和data5的BCD码进行显示 mov ax,4c00h int 21h accum proc mov cx,count ;累加和子程序 lea bx,buf ;将数据串buf中的数据累加 and ax,0 cc: add ax,[bx] add bx,2 loop cc mov data1,ax ret ;结果存于data1 accum endp average proc mov dx,0 mov bx,count div bx ;求平均值程序中 mov data2,al ;将data1中的累加和转换为平均值 ret ; 结果存于data2 average endp conver proc mov dx,0 ;BCD码转换子程序 mov si,10 ;将data2中的平均值转换为BCD码 div si call
显示全部
相似文档