Question: DATA SEGMENT MenuMsg DB 'Menu Options:$ ' Opt 1 Msg DB ' 1 . Select number of integers ( Max 1 0 ) $ '
DATA SEGMENT
MenuMsg DB 'Menu Options:$
OptMsg DB Select number of integers Max $
OptMsg DB Enter numbers$
OptMsg DB Compute the average$
OptMsg DB Find the maximum number$
OptMsg DB Find the minimum number$
OptMsg DB Exit program$
PromptMsg DB 'Enter your choice : $
CountPrompt DB 'Enter count : $
NumPrompt DB 'Enter number: $
AvgMsg DB 'The average is: $
MaxMsg DB 'The maximum number is: $
MinMsg DB 'The minimum number is: $
InvalidMsg DB 'Invalid choice. Try again.$
Numbers DW DUP
Count DW
Total DW
Avg DW
Max DW
Min DW
DATA ENDS
CODE SEGMENT
START:
MOV AX DATA
MOV DS AX ; Initialize Data Segment
MainMenu:
; Display the menu
CALL DisplayMenu
; Get user input
CALL GetChoice
CMP AL ; Check option
JE SelectCount
CMP AL
JE EnterNumbers
CMP AL
JE ComputeAverage
CMP AL
JE FindMaximum
CMP AL
JE FindMinimum
CMP AL
JE ExitProgram
; Invalid choice
CALL DisplayInvalid
JMP MainMenu
SelectCount:
; Prompt for count
CALL DisplayCountPrompt
CALL GetNumber
CMP AX
JL InvalidInput
CMP AX
JG InvalidInput
MOV Count, AX ; Store count
JMP MainMenu
EnterNumbers:
; Prompt for numbers
MOV CX Count ; Loop count
XOR SI SI ; Index
EnterLoop:
CALL DisplayNumPrompt
CALL GetNumber
MOV Numbers SI AX
ADD SI
LOOP EnterLoop
JMP MainMenu
ComputeAverage:
; Compute the average
MOV CX Count ; Loop count
XOR AX AX ; Clear AX sum
XOR SI SI ; Index
SumLoop:
ADD AXNumbers SI
ADD SI
LOOP SumLoop
MOV BX Count
DIV BX ; AX BX
MOV Avg, AX ; Store average
CALL DisplayAvg
JMP MainMenu
FindMaximum:
; Find the maximum number
XOR SI SI
MOV AXNumbers
MOV CX Count
DEC CX
MaxLoop:
MOV BXNumbers SI
CMP BX AX
JLE SkipMax
MOV AX BX
SkipMax:
ADD SI
LOOP MaxLoop
MOV Max, AX
CALL DisplayMax
JMP MainMenu
FindMinimum:
; Find the minimum number
XOR SI SI
MOV AXNumbers
MOV CX Count
DEC CX
MinLoop:
MOV BXNumbers SI
CMP BX AX
JGE SkipMin
MOV AX BX
SkipMin:
ADD SI
LOOP MinLoop
MOV Min, AX
CALL DisplayMin
JMP MainMenu
ExitProgram:
MOV AHCH
INT H
DisplayMenu:
; Print menu
MOV AHH
LEA DX MenuMsg
INT H
LEA DX OptMsg
INT H
LEA DX OptMsg
INT H
LEA DX OptMsg
INT H
LEA DX OptMsg
INT H
LEA DX OptMsg
INT H
LEA DX OptMsg
INT H
RET
DisplayCountPrompt:
MOV AHH
LEA DX CountPrompt
INT H
RET
DisplayNumPrompt:
MOV AHH
LEA DX NumPrompt
INT H
RET
DisplayInvalid:
MOV AHH
LEA DX InvalidMsg
INT H
RET
DisplayAvg:
MOV AHH
LEA DX AvgMsg
INT H
CALL PrintNumber
RET
DisplayMax:
MOV AHH
LEA DX MaxMsg
INT H
CALL PrintNumber
RET
DisplayMin:
MOV AHH
LEA DX MinMsg
INT H
CALL PrintNumber
RET
GetChoice:
MOV AHH
INT H
SUB AL
RET
GetNumber:
; Read a number from the user
MOV AHH
INT H
SUB AL
MOV AH
RET
PrintNumber:
; Convert and print number in AX
; Simplified implementation, add routines for formatting numbers
RET
CODE ENDS
END START
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
