大连理工计算机原理实验三(报告).doc
文本预览下载声明
《计算机原理实验报告》——汇编语言
实验(三)名称: 计算学生平均成绩实验
一、实验目的:
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
显示全部