21,458
社区成员
发帖
与我相关
我的任务
分享
data segment
buf dw -1,3,248,90,42,9042,-4539,0,-28,792,0dh,0ah,'$'
minmsg dw 'min:'
maxmsg dw 'max:'
avgmsg dw 'avg:'
min dw ?,0dh,0ah,'$'
max dw ?,0dh,0ah,'$'
avg db ?,0dh,0ah,'$'
data ends
stack segment stack
stack ends
code segment
assume cs:code,ds:data,ss:stack
begin: mov ax,data
mov ds,ax
mov dx,offset buf
mov ah,9
int 21h;显示buf缓冲区中的内容
mov ax,[bx];读取第一个数
mov dx,ax;dx用来存放总和
mov cx,0;cx用来计数
mov [min],ax
mov [max],ax
add bx,2
again:
mov ax,[bx]
cmp ax,0dh
jz exit
add dx,ax
cmp ax,[min]
jl less
after_less:
cmp ax,[max]
jg more
after_more:
inc cx
jmp next
next:
add bx,2
jmp again
less:
mov [min],ax
jmp after_less
more:
mov [max],ax
jmp after_more
exit:
mov ax,dx
idiv cx;求平均值,平均值入ah
mov [avg],ah;把平均值放入avg
mov dx,offset minmsg
mov ah,9
int 21h
mov dx,offset min
mov ah,9
int 21h
mov dx,offset maxmsg
mov ah,9
int 21h
mov dx,offset max
mov ah,9
int 21h
mov dx,offset avgmsg
mov ah,9
int 21h
mov dx,offset avg
mov ah,9
int 21h
mov ah,4ch
int 21h;退出到DOS
code ends
end begin