《计算机原理实验报告》----- 汇编语言编程部分
实验(3)名称:计算学生平均成绩实验
一、实验目的:
1、熟练掌握运算类指令以及其对各状态标志位的影响。
2、掌握运算类程序的设计及调试方法。
3、掌握BCD码的基本知识和BCD码的转换。
二、实验要求:
在DOS环境下利用EDIT软件来编辑源文件,并使用MASM和LINK工具对源文件进行编译链接,最终在实现对30个学生成绩的求和以及求平均数,并将平均数转换为BCD码显示出来。
三、程序流程图:
四、程序清单:
data segment
buf dw 60,70,80,90,95,98,20,30,40,50
dw 25,35,65,67,88,99,100,78,12,23
dw 100,90,80,70,60,50,59,68,79,90
count equ ($-buf)/2
data1 dw ?
data2 db ?
data3 db ?
data4 db ?
data5 db ?
buf1 db ' my name is chongkun 201383109',0dh,0ah,'$'
buf2 db 0dh,0ah,'$'
buf3 db ' The average score is ','$'
buf4 db ' 80,100,100,80,75,66,58,100,69,95
',0dh,0ah,'95,72,78,58,62,63,98,91,72,78',0dh,0ah,'90,85,67,74,82,59,66,88, 99,77',0DH,0AH,'$'
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
call average
call conver
lea dx,buf3
mov ah,09h
int 21h
call display
conver: mov al,data2
mov ah,0
mov bl,100
div bl
mov data3,al
mov al,ah
mov ah,0
mov bl,10
div bl
mov data4,al
mov data5,ah
ret
accum: mov cx,count
mov ax,0
lea bx,buf
lop: add ax,[bx]
add bx,2
loop lop
mov data1,ax
ret
average: mov ax,data1
mov bl,count
div bl
mov data2,al
ret
display:
lop3: mov si,offset data3
mov al,ds:[si] and al,0f0h
mov cl,04h
shr al,cl
add al,30h
mov dl,al
mov al,ds:[si]
and al,0fh
add al,30h
mov dl,al
mov ah,02h
int 21H
lop4: mov si,offset data4
mov al,ds:[si] and al,0f0h
mov cl,04h
shr al,cl
add al,30h
mov dl,al
mov al,ds:[si]
and al,0fh
add al,30h
mov dl,al
mov ah,02h
int 21H
lop5: mov si,offset data5
mov al,ds:[si] and al,0f0h
mov cl,04h
shr al,cl
add al,30h
mov dl,al
mov al,ds:[si]
and al,0fh
add al,30h
mov dl,al
mov ah,02h
int 21H
lea dx,buf2
mov ah,09h
int 21h
lop22: mov ax,4c00h ; to DOS
int 21h
ret
code ends
end main
五、实验结果:
图二运行结果
学生签字:日期: