In assembly language only Note: use arrays for this assignment Your program shou
ID: 3920317 • Letter: I
Question
In assembly language only
Note: use arrays for this assignment
Your program should first ask for 3 names.
Your program will then receive 5 grades from each person.
Once complete, you will calculate the average and the letter grade.
Finally (after all the above was calculated). You will display all the information. Here is an example.
Please enter 3 names.
Nick
Joe
Tom
Please enter 5 grades for Nick.
100
100
100
100
100
Please enter 5 grades for Joe
50
60
70
80
90
Please enter 5 grades for Tom
90
90
80
80
85
Nicks Average is a +100. Letter Grade is a A
Joes Average is a +70. Letter Grade is a C.
Toms Average is a +85. Letter Grade is a B.
**For this assignment, you will be using nested loops and arrays to hold the grades entered.**
Explanation / Answer
As per your requirement program taking input from user like name and grade
To output a string following code is used:
MOV DX,
MOV AH, 09h
INT 21h
To Input a string following code is used:
MOV DX, ...
MOV AH, 0Ah
INT 21h
Syntax to declare array:
Array_name Data_type No._of _Index DUP(?)
here DUP means initializing array to null
Variable declaration:
Variable_name Data_type ?
----------------Code start here--------------
.MODEL SMALL
.STACK 100H
.DATA
gmsg1 db 10, " Letter grade is A"
gmsg2 db 10, " Letter grade is B"
gmsg3 db 10, " Letter grade is c"
Name DW 3 DUP(?)
Grade1 DW 5 DUP(?)
Grade2 DW 5 DUP(?)
Grade3 DW 5 DUP(?)
avg1 DB ?
avg2 DB ?
avg3 DB ?
Num1 DB 100
Num2 DB 85
Num3 DB 70
msg1 DB 10, " Please enter 3 names::"
msg2 DB 10, " Please enter 5 grades for 1st name :"
msg3 DB 10, " Please enter 5 grades for 2nd name :"
msg4 DB 10, " Please enter 5 grades for 3rd name :"
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
XOR BX,BX
XOR CX,CX
lea Dx,msg1 ;print :please enter 3 names
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT1:
INT 21H
MOV Name[SI],AL
INC SI
LOOP INPUT1
lea Dx,msg2 ;Printmsg: grade for 1st
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT2:
INT 21H
MOV Grade1[SI],AL
INC SI
LOOP INPUT2
lea Dx,msg3 ;Printmsg :grade for 2nd
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT3:
INT 21H
MOV Grade2[SI],AL
INC SI
LOOP INPUT3
lea Dx,msg4 ;Printmsg: grade for 3rd
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT4:
INT 21H
MOV Grade3[SI],AL
INC SI
LOOP INPUT4
;-------------average and grade calculation for 1st---------
LEA SI,Grade1 ;si point to grade1 array
MOV AX,00
MOV BL,5
MOV CX,5 ; taking average of grade1 array
LOOP1:
ADD AL,Grade1[SI]
INC SI
LOOP LOOP1
DIV BL
ADD AL,30H
MOV DX, Name[0] ;PRINT name
MOV AH,2
INT 21H
PRINT "Average is a : "
MOV DL,AL ;PRINT average of 1st name
MOV AH,2
INT 21H
MOV AL, avg1
MOV BL, NUM1
CMP AL, BL
JLE TAG1
TAG1:
lea Dx,gmsg1
MOV AH, 02H
INT 21H
mov bl, NUM2
cmp al,bl
JLE TAG2
TAG2:
lea Dx,gmsg2
MOV AH, 02H
INT 21H
mov bl, NUM3
cmp al,bl
JLE TAG3
TAG3:
lea Dx,gmsg3
MOV AH, 02H
INT 21H
;--------average and grade calculation for 2nd----------------
LEA SI,Grade2 ;si point to grade2 array
MOV AX,00
MOV BL,5
MOV CX,5 ; taking average of grade1 array
LOOP2:
ADD AL,Grade2[SI]
INC SI
LOOP LOOP2
DIV BL
ADD AL,30H
MOV DX, Name[1] ;PRINT name
MOV AH,2
INT 21H
PRINT "Average is a : "
MOV DL,AL ;PRINT average of 2nd name
MOV AH,2
INT 21H
MOV AL, avg2
MOV BL, NUM1
CMP AL, BL
JLE TAG4
TAG4:
lea Dx,gmsg1
MOV AH, 02H
INT 21H
mov bl, NUM2
cmp al,bl
JLE TAG5
TAG5:
lea Dx,gmsg2
MOV AH, 02H
INT 21H
mov bl, NUM3
cmp al,bl
JLE TAG6
TAG6:
lea Dx,gmsg3
MOV AH, 02H
INT 21H
;----------------average and grade calculation for 3rd--------------------------------------
LEA SI,Grade3 ;si point to grade3 array
MOV AX,00
MOV BL,5
MOV CX,5 ; taking average of grade1 array
LOOP3:
ADD AL,Grade3[SI]
INC SI
LOOP LOOP3
DIV BL
ADD AL,30H
MOV DX, Name[2] ;PRINT name
MOV AH,2
INT 21H
PRINT "Average is a : "
MOV DL,AL ;PRINT average of 1st name
MOV AH,2
INT 21H
MOV AL, avg3
MOV BL, NUM1
CMP AL, BL
JLE TAG7
TAG7:
lea Dx,gmsg1
MOV AH, 02H
INT 21H
mov bl, NUM2
cmp al,bl
JLE TAG8
TAG8:
lea Dx,gmsg2
MOV AH, 02H
INT 21H
mov bl, NUM3
cmp al,bl
JLE TAG9
TAG9:
lea Dx,gmsg3
MOV AH, 02H
INT 21H
MOV AH,4CH
INT 21H
.MODEL SMALL
.STACK 100H
.DATA
gmsg1 db 10, " Letter grade is A"
gmsg2 db 10, " Letter grade is B"
gmsg3 db 10, " Letter grade is c"
Name DW 3 DUP(?)
Grade1 DW 5 DUP(?)
Grade2 DW 5 DUP(?)
Grade3 DW 5 DUP(?)
avg1 DB ?
avg2 DB ?
avg3 DB ?
Num1 DB 100
Num2 DB 85
Num3 DB 70
msg1 DB 10, " Please enter 3 names::"
msg2 DB 10, " Please enter 5 grades for 1st name :"
msg3 DB 10, " Please enter 5 grades for 2nd name :"
msg4 DB 10, " Please enter 5 grades for 3rd name :"
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
XOR BX,BX
XOR CX,CX
lea Dx,msg1 ;print :please enter 3 names
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT1:
INT 21H
MOV Name[SI],AL
INC SI
LOOP INPUT1
lea Dx,msg2 ;Printmsg: grade for 1st
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT2:
INT 21H
MOV Grade1[SI],AL
INC SI
LOOP INPUT2
lea Dx,msg3 ;Printmsg :grade for 2nd
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT3:
INT 21H
MOV Grade2[SI],AL
INC SI
LOOP INPUT3
lea Dx,msg4 ;Printmsg: grade for 3rd
MOV AH, 02H
INT 21H
MOV CL,3
MOV BL,AL
MOV SI,0
INPUT4:
INT 21H
MOV Grade3[SI],AL
INC SI
LOOP INPUT4
;-------------average and grade calculation for 1st---------
LEA SI,Grade1 ;si point to grade1 array
MOV AX,00
MOV BL,5
MOV CX,5 ; taking average of grade1 array
LOOP1:
ADD AL,Grade1[SI]
INC SI
LOOP LOOP1
DIV BL
ADD AL,30H
MOV DX, Name[0] ;PRINT name
MOV AH,2
INT 21H
PRINT "Average is a : "
MOV DL,AL ;PRINT average of 1st name
MOV AH,2
INT 21H
MOV AL, avg1
MOV BL, NUM1
CMP AL, BL
JLE TAG1
TAG1:
lea Dx,gmsg1
MOV AH, 02H
INT 21H
mov bl, NUM2
cmp al,bl
JLE TAG2
TAG2:
lea Dx,gmsg2
MOV AH, 02H
INT 21H
mov bl, NUM3
cmp al,bl
JLE TAG3
TAG3:
lea Dx,gmsg3
MOV AH, 02H
INT 21H
;--------average and grade calculation for 2nd----------------
LEA SI,Grade2 ;si point to grade2 array
MOV AX,00
MOV BL,5
MOV CX,5 ; taking average of grade1 array
LOOP2:
ADD AL,Grade2[SI]
INC SI
LOOP LOOP2
DIV BL
ADD AL,30H
MOV DX, Name[1] ;PRINT name
MOV AH,2
INT 21H
PRINT "Average is a : "
MOV DL,AL ;PRINT average of 2nd name
MOV AH,2
INT 21H
MOV AL, avg2
MOV BL, NUM1
CMP AL, BL
JLE TAG4
TAG4:
lea Dx,gmsg1
MOV AH, 02H
INT 21H
mov bl, NUM2
cmp al,bl
JLE TAG5
TAG5:
lea Dx,gmsg2
MOV AH, 02H
INT 21H
mov bl, NUM3
cmp al,bl
JLE TAG6
TAG6:
lea Dx,gmsg3
MOV AH, 02H
INT 21H
;----------------average and grade calculation for 3rd--------------------------------------
LEA SI,Grade3 ;si point to grade3 array
MOV AX,00
MOV BL,5
MOV CX,5 ; taking average of grade1 array
LOOP3:
ADD AL,Grade3[SI]
INC SI
LOOP LOOP3
DIV BL
ADD AL,30H
MOV DX, Name[2] ;PRINT name
MOV AH,2
INT 21H
PRINT "Average is a : "
MOV DL,AL ;PRINT average of 1st name
MOV AH,2
INT 21H
MOV AL, avg3
MOV BL, NUM1
CMP AL, BL
JLE TAG7
TAG7:
lea Dx,gmsg1
MOV AH, 02H
INT 21H
mov bl, NUM2
cmp al,bl
JLE TAG8
TAG8:
lea Dx,gmsg2
MOV AH, 02H
INT 21H
mov bl, NUM3
cmp al,bl
JLE TAG9
TAG9:
lea Dx,gmsg3
MOV AH, 02H
INT 21H
MOV AH,4CH
INT 21H
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.