I have the following code so far, but it's only capable of taking a number any amount of digits long, 8 times. It (I believe) finds the max, but won't display it. Any help would be greatly greatly appreciated.
org 100h BDOS equ 5 boot equ 0 keyin equ 1 keyout equ 2 sprint equ 9 cr equ 0Dh lf equ 0Ah lxi sp,sp0 lxi h,buff mvi B,8 ;the B register holds the counter for how many inputs the user has left lxi D,mess1 ;these three print the message at mess1, which is the program welcome message mvi C,sprint call BDOS lxi D,mess2 ;this piece prints the message at mess2 then jumps to getnum mvi C,sprint call BDOS jmp getnum start: lxi D,mess3 ;these three print the message at mess3, over and over mvi C,sprint call BDOS getnum: mvi c,keyin ;this piece gets user input, and reads a cr as the end of their input call BDOS cpi cr jz mem ;if a cr is found, it jumps to mem jnz getnum ;if no cr is found, it continues to take user input mem: mov M,A ;the user input is moved into memory inx H ;the buffer is increased by 1 for the next bit of user input to be stored into dcr B ;the counter is decremented mov A,M jz pre ;if the counter is 0, then the program moves on to next loop jnz start ;if the counter is not 0, the program takes more user input pre: dcr h mov E,A jmp next next: mov A,E mov E,A sub H jm hbig dcr h mov A,E jz print jp next hbig: mov A,H mov E,A dcr h jz print jnz next print: lxi D,mess5 mvi c,sprint call BDOS mov E,A mvi C,keyout call BDOS jmp boot ;these next lines, mess1-mess6, are messages seen by the user mess1: db lf,cr,'Calculate averages, mins and maxes using this tool!',lf,cr,'$' mess2: db lf,cr,'Type in a number between 0-255: $' mess3: db lf,cr,'Type in another number between 0-255: $' mess4: db lf,cr,'The average number was: $' mess5: db lf,cr,'The highest number entered was: $' mess6: db lf,cr,'The lowest number entered was: $' buff: ds 40 ds 25 sp0 equ $ end