求一个求平均数的简单程序

czy243956393 2011-06-20 02:44:02
要求:用汇编语言写一个程序其功能为:


从键盘输入N个数,算出其平均数。谢谢了...
...全文
309 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
masmaster 2011-06-21
  • 打赏
  • 举报
回复
;
;This Program Compiled Sucess by Masm 6.15
;
assume cs:code,ds:data
data segment
buf db 5,0,5 dup(0) ;输入缓冲区,每次输入小于10000的数字
msg1 db 'Enter numbers of digit:$'
sum dd 0
ave db 'Average is:$'
data ends
code segment
start:
mov ax,data ;指定数据段
mov ds,ax

mov dx,offset msg1 ;提示信息
mov ah,9
int 21h

mov ah,1 ;输入N个数
int 21h

call crlf ;回车

mov cl,al ;处理循环次数
mov ch,0
sub cl,30h

push cx ;保存,以后恢复做除数

_in: ;循环输入
call input ;调用输入子程序
add word ptr sum,ax ;低位
adc word ptr sum+2,0 ;高位
call crlf ;回车
loop _in

mov dx,word ptr sum+2 ;将结果高16位存放在DX,低16位放在AX里
mov ax,word ptr sum

pop cx ;恢复
div cx ;计算平均值

push ax ;保存平均值

mov dx,offset ave ;显示信息
mov ah,9
int 21h

pop dx ;取出平均值
call show ;调用显示子程序,显示平均值

mov ah,4ch ;程序技术
int 21h
;回车子程序
crlf proc uses ax
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
ret
crlf endp
;输入子程序,结果在AX中
input proc uses cx
mov dx,offset buf
mov ah,10
int 21h

xor cx,cx
mov cl,buf+1
mov bx,offset buf+2
mov ax,0
inp:
mov dx,10
mul dx
and byte ptr [bx],0fh
add al,[bx]
adc ah,0
inc bx
loop inp

ret
input endp
;显示十进制子程序,将DX的值以十进制形式显示
show proc uses ax bx cx dx
mov ax,dx
xor dx,dx
mov bx,10
mov cx,0
a: cmp ax,10
jb ok
div bx
add dl,30h
push dx
xor dx,dx
inc cx
jmp a
ok: add al,30h
push ax
inc cx
b: pop dx
mov ah,2
int 21h
loop b
ret
show endp
;
code ends
end start

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧