an entry looks like this:
Code: Select all
*1 11name0*
My problem is with the second and third byte.
They represent the boundaries of a chunk of free RAM, followed by a label.
They are stored correctly, as seen through a dump, but when I go to retrieve them, I get numbers far off from what I put in.
here is the code:
Code: Select all
mov si,[tablestart]
.find
cmp byte [si],'*'
je .entry
add si,1
cmp si,[tablend]
jge .done
jmp .find
.entry
add si,3
call compare
jc .found
jmp .entry
.found
sub si,1
mov bx,[si]
sub si,1
mov ax,[si]
.done
ret
tablestart is 0:242f, tablend is 0:2461
compare just compares a the label pointed to in si to the label in di, both 0 terminated strings, and sets carry if equal.
Any ideas?