Your challenge:
The focus of this challenge is using push and pop to preserve and restore register
values. The challenge has been structured so that it is highly likely that you will have to use
push and pop to maintain the data in this program.
Write, compile, and execute a complete HLA program that does the following:

[15 points] contains no static or automatic (var) variables

[15 points] has a robust getUns8 procedure that takes a string parameter representing the user prompt,
min and max parameters; guarantees a user input value in the range min to max inclusive; returns the
input value in al; @forward declare the procedure

[25 points] has a procedure showGraph that has a single uns8 parameter and does the following:
 displays the parameter value and a "bar graph" representing the value, in asterisks

displays one asterisk (*) to the screen for every increment of 10 in the parameter value, rounded
down; for example, 15 will produce one asterisk, 25 will produce two asterisks, 50 will produce
five asterisks, and so on
 (SAMPLE OUTPUT FOR ONE VALUE) 45 ****

[25 points] has a procedure totalAndAverage that has four (4) uns8 parameters and does the following:
 computes and displays the sum/total of the values, with an appropriate label
 computes and displays the average (rounded, since these are integers), with an appropriate label

[25 points] has a procedure min that has four (4) uns8 parameters and does the following:
 computes and displays the minimum value in the four parameters, with an appropriate label

[25 points] has a procedure max that has four (4) uns8 parameters and does the following:
 computes and displays the maximum value in the four parameters, with an appropriate label

[10 points] main loop:

use getUns8 four times to get user values  values go in al, bl, cl, dl in that order
 display the four values in decimal format
 use showGraph four times to graph all four user values
 use totalAndAverage
 use min
 use max
 allow the user to loop back and enter new values or quit