
汇编题目 急!!!!!!!!!!在线等
求40个学生成绩的平均值,并求出其中的最大值和最小值过程要具体,这是期末作业,谢谢了在线等答案,回答出来再送分请问"鲲鹏展翅LHY-高级经理七级"movbl,10为什么是...
求40个学生成绩的平均值,并求出其中的最大值和最小值
过程要具体,这是期末作业,谢谢了
在线等答案,回答出来再送分
请问" 鲲鹏展翅LHY - 高级经理 七级 "
mov bl,10 为什么 是 10 而不是 40 呢
快点好吗?谢谢了,急 急 急!!!! 展开
过程要具体,这是期末作业,谢谢了
在线等答案,回答出来再送分
请问" 鲲鹏展翅LHY - 高级经理 七级 "
mov bl,10 为什么 是 10 而不是 40 呢
快点好吗?谢谢了,急 急 急!!!! 展开
4个回答
展开全部
DATA SEGMENT
TABLE1 DW 28h dup(?) ;成绩表
VARX DW ?
VARY DW ?
VARZ DW ?
OUTPUT1 DB 'the totle is:',0AH,0DH,'$'
OUTPUT2 DB 'the min data is:',0AH,0DH,'$'
OUTPUT3 DB 'the max data is:',0AH,0DH,'$'
BUFFER DB 05H DUP(?)
DATA ENDS
STACK1 SEGMENT STACK
DW 20H DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK1,CS:CODE
START: XOR AX,AX
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET OUTPUT1
MOV AH,09H
INT 21H
MOV AX,0
MOV DX,0
MOV SI,0
MOV CX,40D
MOV DX,TABLE1[SI]
LP1: INC SI
MOV AX,TABLE1[SI]
ADD AX,DX
MOV DX,AX
CMP CX,SI
JGE LP1 ;循环加成绩
MOV AX,DX
MOV BX,0AH
MOV SI,04
MOV BUFFER[SI],'$'
LP2: XOR DX,DX ;处理总成绩数据为十进制数
DIV BX
ADD DL,30H
DEC SI
MOV BUFFER[SI],DL
CMP AX,0AH
JGE LP2
ADD AL,30H
DEC SI
MOV BUFFER[SI],AL
MOV AX,OFFSET BUFFER
ADD AX,SI
MOV DX,AX ;送显示数据入口地址
MOV AH,09H ;显示总成绩
INT 21H
MOV AX,0
MOV DX,0
MOV SI,1
MOV AX,TABLE1
MOV DX,TABLE1[SI]
CMP AX,DX
JG LP4
LP3: MOV BUFFER,AL ;存小的数据
LP4: MOV BUFFER+1,DL ;存大的数据
LP5: INC SI
MOV DX,TABLE1[SI] ;取下一个数据
MOV AL,BUFFER ;和小的数比较
CMP AL,DL
JL LP3
MOV BUFFER,DL ;存储较小的数
MOV AL,BUFFER+1 ;和大的数比较
CMP AL,DL
JG LP4
MOV BUFFER+1,DL ;存储较大的数
CMP CX,SI
JG LP5 ;循环取数比较
MOV DX,OFFSET OUTPUT2 ;显示字符串
MOV AH,09H
INT 21H
MOV DX,OFFSET BUFFER ;显示最小的数据
MOV AH,09H
INT 21H
MOV DX,OFFSET OUTPUT3 ;显示字符串
MOV AH,09H
INT 21H
MOV DX,OFFSET BUFFER
INC DX ;显示最大的数据
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
程序编得有点长,带有输出显示!很好理解。时间不够,暂时想到的就是这么麻烦的了!可以参考一下,试着自己改进一下,缩小代码长度。
TABLE1 DW 28h dup(?) ;成绩表
VARX DW ?
VARY DW ?
VARZ DW ?
OUTPUT1 DB 'the totle is:',0AH,0DH,'$'
OUTPUT2 DB 'the min data is:',0AH,0DH,'$'
OUTPUT3 DB 'the max data is:',0AH,0DH,'$'
BUFFER DB 05H DUP(?)
DATA ENDS
STACK1 SEGMENT STACK
DW 20H DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK1,CS:CODE
START: XOR AX,AX
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET OUTPUT1
MOV AH,09H
INT 21H
MOV AX,0
MOV DX,0
MOV SI,0
MOV CX,40D
MOV DX,TABLE1[SI]
LP1: INC SI
MOV AX,TABLE1[SI]
ADD AX,DX
MOV DX,AX
CMP CX,SI
JGE LP1 ;循环加成绩
MOV AX,DX
MOV BX,0AH
MOV SI,04
MOV BUFFER[SI],'$'
LP2: XOR DX,DX ;处理总成绩数据为十进制数
DIV BX
ADD DL,30H
DEC SI
MOV BUFFER[SI],DL
CMP AX,0AH
JGE LP2
ADD AL,30H
DEC SI
MOV BUFFER[SI],AL
MOV AX,OFFSET BUFFER
ADD AX,SI
MOV DX,AX ;送显示数据入口地址
MOV AH,09H ;显示总成绩
INT 21H
MOV AX,0
MOV DX,0
MOV SI,1
MOV AX,TABLE1
MOV DX,TABLE1[SI]
CMP AX,DX
JG LP4
LP3: MOV BUFFER,AL ;存小的数据
LP4: MOV BUFFER+1,DL ;存大的数据
LP5: INC SI
MOV DX,TABLE1[SI] ;取下一个数据
MOV AL,BUFFER ;和小的数比较
CMP AL,DL
JL LP3
MOV BUFFER,DL ;存储较小的数
MOV AL,BUFFER+1 ;和大的数比较
CMP AL,DL
JG LP4
MOV BUFFER+1,DL ;存储较大的数
CMP CX,SI
JG LP5 ;循环取数比较
MOV DX,OFFSET OUTPUT2 ;显示字符串
MOV AH,09H
INT 21H
MOV DX,OFFSET BUFFER ;显示最小的数据
MOV AH,09H
INT 21H
MOV DX,OFFSET OUTPUT3 ;显示字符串
MOV AH,09H
INT 21H
MOV DX,OFFSET BUFFER
INC DX ;显示最大的数据
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
程序编得有点长,带有输出显示!很好理解。时间不够,暂时想到的就是这么麻烦的了!可以参考一下,试着自己改进一下,缩小代码长度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得你还是最好自己编,毕竟是学了一学期的东西了,怎么也得弄出点成绩出来啊。。。汇编的难点无外乎最开始的时候不太会用那些寄存器,还有内存。。这道题的难点就是在于你要知道你需要哪些数据,比如平均值,那么平均值应该怎么来得到呢,当然如果是纯数学的题,我想不用我说你也知道是总数除以个数,在汇编语言里,除了立即数(也就是我们数学里面的常数)可以 不用一个容器来装(我说的容器就是寄存器,还有内存),直接用它本身表示之外,其它的数,都得用寄存器或者内存来操作。。,在汇编里面你要执行一个操作,用它的内部寄存器(ax,bx,cx。。。)是执行速度最快的。。所以你要得到你要的结果,就必须把你需要的数据存放在寄存器,或者内存里面。。如何使用内存,就是我们常用的定义一个变量,比如,我要定义一个变量max,那我就可以这样写max dw ?或者max dw 0,这两种的不同前者是不赋初值,后者则给初值0。计算总数就是把所有的数加起来,我想加法的操作不用我讲应该怎么实现吧。。。add指令就可以了。。汇编里面提供了loop这个指令可以实现循环,减少我们重复写相同的指令。。ax,bx这些寄存器就是c语言里面的变量,他们里可以存放任何满足他们大小的值,ax是16位的寄存器,所以就最大只能放ffffh这么大的值。。如果再大就会溢出。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
求40个学生成绩的平均值,并求出其中的最大值和最小值
data segment
score db 40 dup (?)
sum db 0
ave db ?
max db 0
min db 100
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov cx,40
lea si,score
next:
mov al,[si]
add sum,al
cmp al,max
jna next1
mov max,al
next1:
cmp al,min
jnb next2
mov min,al
next2:
inc si
loop next
mov al,sum
mov ah,0
mov bl,10
div bl
mov ave,al
mov ah,4ch
int 21h
code ends
end start
data segment
score db 40 dup (?)
sum db 0
ave db ?
max db 0
min db 100
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov cx,40
lea si,score
next:
mov al,[si]
add sum,al
cmp al,max
jna next1
mov max,al
next1:
cmp al,min
jnb next2
mov min,al
next2:
inc si
loop next
mov al,sum
mov ah,0
mov bl,10
div bl
mov ave,al
mov ah,4ch
int 21h
code ends
end start
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
data segment
score db 40 dup (?)
sum dw 0
ave db 0
max db 0
min db 0
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov cx,40
lea si,score
next:
mov al,[si]
add sum,al
cmp al,max
jna next1
mov max,al
next1:
cmp al,min
jnb next2
mov min,al
next2:
inc si
loop next
mov al,sum
mov ah,0
mov bl,10
div bl
mov ave,al
mov ah,4ch
int 21h
code ends
end
score db 40 dup (?)
sum dw 0
ave db 0
max db 0
min db 0
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov cx,40
lea si,score
next:
mov al,[si]
add sum,al
cmp al,max
jna next1
mov max,al
next1:
cmp al,min
jnb next2
mov min,al
next2:
inc si
loop next
mov al,sum
mov ah,0
mov bl,10
div bl
mov ave,al
mov ah,4ch
int 21h
code ends
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询