Go4Expert (http://www.go4expert.com/)
-   Assembly Language Programming (ALP) Forum (http://www.go4expert.com/forums/assembly-language-programming-forum/)
-   -   8085 Assembly Program Help (http://www.go4expert.com/forums/8085-assembly-program-help-t1057/)

SephyKid 24Jul2006 11:33

8085 Assembly Program Help
I need help with an old 8085 Assembly Program - the purpose is to take a user input of a number between 0-255 (Does not check for user input error). It takes 8 inputs, and then displays the max, the min, and the average inputs.

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 code

All times are GMT +5.5. The time now is 11:15.