请帮忙改下程序
题目要求 :输入每个学生两门成绩: C语言,汇编,并计算平均成绩,;列表显示.
出错在 求平均成绩 AAVG的那段程序.
请能改的慷慨出手改下
DATA SEGMENT
RGST STRUC
NAM DB 18,?,' '
SUCCS DB 4,?,' '
SUCCS1 DB 4,?,' '
ASCVAL DB 4,?,' '
PS DB 0AH,0DH,'$'
RGST ENDS
PRNAME DB 'Enter name:$'
PRSUC DB 'enter succes of yuyan:$'
PRSUC1 DB 'enter succes of huibian:$'
PROMPT DB 0DH,'NAME SCORE1 SCORE2 AVERAGE',0DH,0AH,'$'
S RGST 20H DUP(<>)
MULFACT dw 1
BINVAL dw 0
TOT DB 4,?,'000'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV BX,0
AGAIN: LEA SI,S
AGAIN1:
LEA DX,PRNAME
CALL LDSPLY
LEA DX,[SI].NAM
CALL INPUT
CMP [SI].NAM[2],0DH
JE GOON
MOV CX,20
LEA DI,[SI].NAM
CALL REPLAC
LEA DX,PRSUC
CALL LDSPLY
LEA DX,[SI].SUCCS
CALL INPUT
MOV CX,6
LEA DI,[SI].SUCCS
CALL REPLAC
LEA DX,PRSUC1
CALL LDSPLY
LEA DX,[SI].SUCCS1
CALL INPUT
MOV CX,6
LEA DI,[SI].SUCCS1
CALL REPLAC
CALL AAVG
ADD SI,TYPE S
CALL LSPACE
INC BX
JMP AGAIN1
GOON: LEA DX,PROMPT
CALL LDSPLY
MOV CX,BX
LEA SI,S
CLRPR:
MOV WORD PTR [SI].NAM,2020H
MOV WORD PTR [SI].SUCCS,2020H
MOV WORD PTR [SI].SUCCS1,2020H
MOV WORD PTR [SI].ASCVAL,2020H
ADD SI,TYPE S
LOOP CLRPR
MOV CX,BX
LEA DX,S.NAM[1]
DISPLY: CALL LDSPLY
ADD DX,TYPE S
LOOP DISPLY
MOV AH,4CH
INT 21H
LDSPLY PROC
MOV AH,09H
INT 21H
RET
LDSPLY ENDP
INPUT PROC
MOV AH,0AH
INT 21H
RET
LSPACE:MOV DL,0AH
MOV AH,02H
INT 21H
RET
INPUT ENDP
REPLAC PROC
CLD
MOV AL,0DH
REPNZ SCASB
MOV BYTE PTR[DI-1],20H
RET
REPLAC ENDP
AAVG PROC
XOR AX,AX
MOV AL,[SI].SUCCS[4]
ADD AL,[SI].SUCCS1[4]
AAA
MOV TOT+4,AL
MOV TOT+3,AH
MOV AL,[SI].SUCCS[3]
ADD AL,[SI].SUCCS1[3]
AAA
ADD TOT+3,AL
MOV TOT+2,AH
MOV AL,[SI].SUCCS[2]
ADD AL,[SI].SUCCS1[2]
AAA
ADD TOT+2,AL ;+
XOR DX,DX
MOV AL,TOT+4
AND AX,000FH
MUL MULFACT
ADD BINVAL,AX
MOV AX,MULFACT
MUL DX
MOV MULFACT,AX
MOV AL,TOT+3
AND AX,000FH
MUL MULFACT
ADD BINVAL,AX
MOV AX,MULFACT
MUL DX
MOV MULFACT,AX
MOV AL,TOT+2
AND AX,000FH
MUL MULFACT
ADD BINVAL,AX ;
MOV CX,0010
MOV AX,BINVAL
B20:
CMP AX,CX
JB B30
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI].ASCVAL[4],DL
CMP AX,CX
JB B301
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI].ASCVAL[3],DL
CMP AX,CX
JB b302
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI].ASCVAL[2],DL
B30:
OR AL,30H
MOV [SI].ASCVAL[4],AL
RET
B301:
OR AL,30H
MOV [SI].ASCVAL[3],AL
RET
B302:
OR AL,30H
MOV [SI].ASCVAL[2],AL
RET
AAVG ENDP
CODE ENDS
END START
问题点数:10、回复次数:3Top
1 楼cauliflower1()回复于 2005-06-02 14:03:04 得分 0
DATA SEGMENT
RGST STRUC
NAM DB 18,?,' '
SUCCS DB 4,?,' '
SUCCS1 DB 4,?,' '
ASCVAL DB 4,?,' '
PS DB 0AH,0DH,'$'
RGST ENDS
PRNAME DB 'Enter name:$'
PRSUC DB 'enter succes of yuyan:$'
PRSUC1 DB 'enter succes of huibian:$'
PROMPT DB 0DH,'NAME SCORE1 SCORE2 AVERAGE',0DH,0AH,'$'
S RGST 20H DUP(<>)
MULFACT dw 1
BINVAL dw 0
TOT DB 4,?,'000'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV BX,0
AGAIN: LEA SI,S
AGAIN1:
LEA DX,PRNAME
CALL LDSPLY
LEA DX,[SI].NAM
CALL INPUT
CMP [SI].NAM[2],0DH
JE GOON
MOV CX,20
LEA DI,[SI].NAM
CALL REPLAC
LEA DX,PRSUC
CALL LDSPLY
LEA DX,[SI].SUCCS
CALL INPUT
MOV CX,6
LEA DI,[SI].SUCCS
CALL REPLAC
LEA DX,PRSUC1
CALL LDSPLY
LEA DX,[SI].SUCCS1
CALL INPUT
MOV CX,6
LEA DI,[SI].SUCCS1
CALL REPLAC
CALL AAVG
ADD SI,TYPE S
CALL LSPACE
INC BX
JMP AGAIN1
GOON: LEA DX,PROMPT
CALL LDSPLY
MOV CX,BX
LEA SI,S
CLRPR:
MOV WORD PTR [SI].NAM,2020H
MOV WORD PTR [SI].SUCCS,2020H
MOV WORD PTR [SI].SUCCS1,2020H
MOV WORD PTR [SI].ASCVAL,2020H
ADD SI,TYPE S
LOOP CLRPR
MOV CX,BX
LEA DX,S.NAM[1]
DISPLY: CALL LDSPLY
ADD DX,TYPE S
LOOP DISPLY
MOV AH,4CH
INT 21H
LDSPLY PROC
MOV AH,09H
INT 21H
RET
LDSPLY ENDP
INPUT PROC
MOV AH,0AH
INT 21H
RET
LSPACE:MOV DL,0AH
MOV AH,02H
INT 21H
RET
INPUT ENDP
REPLAC PROC
CLD
MOV AL,0DH
REPNZ SCASB
MOV BYTE PTR[DI-1],20H
RET
REPLAC ENDP
AAVG PROC
XOR AX,AX
MOV AL,[SI].SUCCS[4]
ADD AL,[SI].SUCCS1[4]
AAA
MOV TOT+4,AL
MOV TOT+3,AH
MOV AL,[SI].SUCCS[3]
ADD AL,[SI].SUCCS1[3]
AAA
ADD TOT+3,AL
MOV TOT+2,AH
MOV AL,[SI].SUCCS[2]
ADD AL,[SI].SUCCS1[2]
AAA
ADD TOT+2,AL ;+
XOR DX,DX
MOV AL,TOT+4
AND AX,000FH
MUL MULFACT
ADD BINVAL,AX
MOV AX,MULFACT
MUL DX
MOV MULFACT,AX
MOV AL,TOT+3
AND AX,000FH
MUL MULFACT
ADD BINVAL,AX
MOV AX,MULFACT
MUL DX
MOV MULFACT,AX
MOV AL,TOT+2
AND AX,000FH
MUL MULFACT
ADD BINVAL,AX
MOV CX,0010
MOV AX,BINVAL
B20:
CMP AX,CX
JB B30
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI].ASCVAL[4],DL
CMP AX,CX
JB B301
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI].ASCVAL[3],DL
CMP AX,CX
JB b302
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI].ASCVAL[2],DL
B30:
OR AL,30H
MOV [SI].ASCVAL[4],AL
JMP A
B301:
OR AL,30H
MOV [SI].ASCVAL[3],AL
JMP A
B302:
OR AL,30H
MOV [SI].ASCVAL[2],AL
JMP A
A: RET
RET
AAVG ENDP
CODE ENDS
END START
我改到这种程度 以下就要大虾们指点迷经了
Top
2 楼csdsjkk()回复于 2005-06-02 14:38:17 得分 10
DATA SEGMENT
RGST STRUC
NAM DB 18,?,' '
SUCCS DB 4,?,' '
SUCCS1 DB 4,?,' '
ASCVAL DB 4,?,' '
PS DB 0AH,0DH,'$'
RGST ENDS
PRNAME DB 'Enter name:$'
PRSUC DB 'enter succes of yuyan:$'
PRSUC1 DB 'enter succes of huibian:$'
PROMPT DB 0DH,'NAME SCORE1 SCORE2 AVERAGE',0DH,0AH,'$'
S RGST 20H DUP(<>)
MULFACT dw 1
BINVAL dw 0
TOT DB 4,?,'000'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV BX,0
AGAIN: LEA SI,S
AGAIN1:
LEA DX,PRNAME
CALL LDSPLY
LEA DX,[SI].NAM
CALL INPUT
CMP [SI].NAM[2],0DH
JE GOON
MOV CX,20
LEA DI,[SI].NAM
CALL REPLAC
CALL Lspace
LEA DX,PRSUC
CALL LDSPLY
LEA DX,[SI].SUCCS
CALL INPUT
MOV CX,6
LEA DI,[SI].SUCCS
CALL REPLAC
CALL Lspace
LEA DX,PRSUC1
CALL LDSPLY
LEA DX,[SI].SUCCS1
CALL INPUT
MOV CX,6
LEA DI,[SI].SUCCS1
CALL REPLAC
CALL AAVG
ADD SI,TYPE S
CALL LSPACE
INC BX
JMP AGAIN1
GOON: LEA DX,PROMPT
CALL LDSPLY
MOV CX,BX
LEA SI,S
CLRPR:
MOV WORD PTR [SI].NAM,2020H
MOV WORD PTR [SI].SUCCS,2020H
MOV WORD PTR [SI].SUCCS1,2020H
MOV WORD PTR [SI].ASCVAL,2020H
ADD SI,TYPE S
LOOP CLRPR
MOV CX,BX
LEA DX,S.NAM[1]
DISPLY: CALL LDSPLY
ADD DX,TYPE S
LOOP DISPLY
MOV AH,4CH
INT 21H
LDSPLY PROC
MOV AH,09H
INT 21H
RET
LDSPLY ENDP
INPUT PROC
MOV AH,0AH
INT 21H
RET
LSPACE:MOV DL,0AH
MOV AH,02H
INT 21H
mov dl,0dh
int 21h
RET
INPUT ENDP
REPLAC PROC
CLD
MOV AL,0DH
REPNZ SCASB
MOV BYTE PTR[DI-1],20H
RET
REPLAC ENDP
s2d proc
mov dl,0
s1:
mov al,[di]
cmp al,'0'
jb s9
cmp al,'9'
ja s9
sub al,'0'
xchg al,dl
mov ah,10
mul ah
add dl,al
inc di
jmp s1
s9:
mov al,dl
ret
s2d endp
d2s proc
mov dx,-1
push dx
mov dl,10
d1:
mov ah,0
div dl
push ax
or al,al
jnz d1
d2:
pop ax
cmp ax,-1
je d9
add ah,'0'
mov [di],ah
inc di
jmp d2
d9:
ret
d2s endp
AAVG PROC
lea di,[si].succs[2]
call s2d
push ax
lea di,[si].succs1[2]
call s2d
pop dx
add al,dl
shr al,1
lea di,[si].ascval[2]
call d2s
ret
AAVG ENDP
CODE ENDS
END START
Top
3 楼cauliflower1()回复于 2005-06-02 16:54:44 得分 0
这程序还没完
要求输入 A时,输出平均分为100到90的人的名单和个别分数和平均分
输入B时时为89到80的人的,C是79到70 的,D是69到60 的,E是60以下的Top




