汇编语言中怎样算平均值

在汇编语言中,输入四个数字,怎样计算这四个数字的平均值

急急急!!!
能不能具体点的解法阿。。。把程序写出来。。。

首先把这些数值累加起来,除以这些数据的数量

比如 add ax,49

假设数量是8个

mov bx,8

div bx

其结果就在AX中

stack segment stack

dw 256 dup(?)

stack ends

data segment

buf db 4,4,6,6 ;要求平均的四个数字

data ends

code segment

main proc far

assume cs:code,ds:data,ss:stack

start:

push ds

mov ax,0

push ax

mov ax,data

mov ds,ax

lea bx,buf

mov cx,4

xor ax,ax

lop:

add al,[bx]

inc bx

loop lop

average:

mov cl,4

div cl

mov ah,02h

add al,30h

mov dl,al

int 21h

mov ah,01h

int 21h

mov ax,4c00h

int 21h

ret

main endp

code ends

end start

扩展资料:

由于汇编指令系统庞大,因而需构建指令系统体系,其指令数量庞大,格式复杂,可记忆性差等。指令中最难的是指令所支持的寻址方式,其实质就是指令中操作数如何获取。

对于处理器而言,就是如何找到他所需的数据。但对于计算机底层的汇编语言而言,这种寻址方式将涉及大量的计算存储格式,与 复杂的存储管理方式紧密相关,因而难以理解。最后,汇编指令还关系到如何影响标志位,但处理器标志位非常复杂,因而对其机制掌握就比较困难。

参考资料来源:百度百科-汇编语言

温馨提示:内容为网友见解,仅供参考
第1个回答  2007-12-16
声明一下,我也是刚学的,如有不对的地方,请指正

stack segment stack
dw 256 dup(?)
stack ends
data segment
buf db 4,4,6,6 ;放你要求平均的四个数字
data ends
code segment
main proc far
assume cs:code,ds:data,ss:stack
start:
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
lea bx,buf
mov cx,4
xor ax,ax
lop:
add al,[bx]
inc bx
loop lop
average:
mov cl,4
div cl
mov ah,02h
add al,30h
mov dl,al
int 21h
mov ah,01h
int 21h
mov ax,4c00h
int 21h
ret
main endp
code ends
end start
第2个回答  推荐于2017-09-15
可先将4个数加
再除以4

如果是要输入任何个数,求平均
那就另法
毕竟只有4个。。本回答被提问者采纳
第3个回答  2007-12-10
#include<stdio.h>
void main()
{
int num;
int a,b,c,d;
float ave;
printf("请输入一个四位数:");
scanf("%d",&num);
a=num/1000;//求出千位上的数;
b=num%1000/100;//求出百位上的数;
c=num%1000%100/10;//求出十位上的数;
d=num%1000%100%10;//求出个位上的数;
ave=(a+b+c+d)/4;
printf("四个数字的平均值为:%f",ave);
}

我现在在学网页编程,所以我已经对这忘记的差不多了,若不对还请原谅/但不管对还是错你要回我信息,谢谢!
第4个回答  推荐于2017-09-27
首先把这些数值累加起来,然后除以这些数据的数量

比如 add ax,49
...
假设数量是8个
mov bx,8
div bx
其结果就在AX中

汇编语言中怎样算平均值
首先把这些数值累加起来,除以这些数据的数量 比如 add ax,49 假设数量是8个 mov bx,8 div bx 其结果就在AX中 stack segment stack dw 256 dup(?)stack ends data segment buf db 4,4,6,6 ;要求平均的四个数字 data ends code segment main proc far assume cs:code,ds:data,ss:stack ...

89C51汇编语言求平均值,要求有小数
(小数点左移两位,即为除以 100。)

跪求汇编调用C语言求平均数
avr1=a\/3.0;avr2=b\/3.0;avr3=c\/3.0;printf("\\nC++ 高数 英语3科成绩的总平均分分别是:%.2f %.2f %.2f\\n\\n",avr1,avr2,avr3);max=stu[1].score[0]+stu[1].score[1]+stu[1].score[2];for(i=1;i<=3;i++){q[i]=stu[i].score[0]+stu[i].score[1]+stu[...

汇编语言 实现求平均数问题 急急急急急!!!
从键盘上输入7名裁判的评分(输入范围是0~9);将7个评分由高到低进行排序,并在显示器上显示出来;扣除一个最高分,一个最低分,计算出其他8项评分的平均值(保留一位小数)在... 从键盘上输入7名裁判的评分(输入范围是0~9);将7个评分由高到低进行排序,并在显示器上显示出来;扣除一个最高分,一个最低分,...

利用汇编语言程序上机操作方法,求两个数45H,64H的平均值?
R2,#64H ;将 64H 存入寄存器 R2 FADD R3,R1,R2 ;R1 和 R2 相加,结果存入 R3 FDiv R4,R3,#2.0 ;R3 除以 2.0,结果存入 R4 STR R4,[R5] ;将 R4 的值存入指定的内存地址 这种操作需要支持浮点运算的汇编语言,并且需要编译器支持浮点指令。具体汇编语言指令及语法取决于具体编译器。

用汇编语言编写80c51单片机程序,求内部RAM中50H~59H十个单元内容的平均...
;A=溢出部分的平均值,肯定小于0FF MOV 5AH,A ;第一部分的平均值p1给5AH MOV A,#6H MOV B,5BH MUL AB ;值给5BH,最大值是3CH,所以不用考虑溢出。ADD A,5CH ;MOV B,#10 DIV AB ;6B+s1的平均值p2 ADD A,5AH MOV 5AH,A ;p1+p2 MOV 5BH,B SJMP END ...

关于初学汇编语言的问题
楼上不要混淆了,楼主写的是51单片机的汇编语言,而你说的是8086的汇编语言,两者是不一样的。楼主的程序,我在uVison中编译过,是没有出错的,并没有说B未定义,请楼主仔细核对,是否其他地方输入的问题。下面这段程序做的事情应该是求位于片内RAM30H开始的5个数的平均值,具体注释如下:UP:ADD A...

单片机汇编语言编程,采集,求和,求平均数
变更)数据的程序段,对于连续数据的存取,尽量用mov @Ri,xx,来操作,运算也用这个命令,C语言对这个已经不重要了,不过汇编还是得遵守一些默认规则。头几年还做过,采集一组10个数据,去掉两个最高分,两个最低分,中间6个值相加求平均值,现在还在用。水平的提高还得靠自己,呵呵。

汇编语言编程
用汇编语言实现 :从屏幕上输入20个学生的学号(6位),成绩(十进制),要求对学生学习成绩进行排序并显示学号和和其成绩,并统计90以上,80~89,70~79,60~69,60以下学生个数,平均值。 展开  我来答 2个回答 #热议# 生活中有哪些成瘾食物?汤旺河边 2009-12-10 · TA获得超过2.9万个赞 知道大有可为答主...

试用混合编程的方法求x的值。指标要求(1)x=(1+2!+3!+4!+5!)\/5(2...
(2) 主程的编写相对简单,只需要在main函数中添加上述代码即可。需要注意的是,计算阶乘时需要定义一个变量fact,初始化为1,每次循环后需要将fact乘上i的值。同时,计算和时需要定义一个变量sum,每次循环后需要将fact累加到sum上。最后,计算平均值时需要将sum转换为double类型再除以5。

相似回答