Probably it is because IDA treats the la
arguments as integers.
Try the following : go to one of the places,where system
displayed as a number, locate your cursor on this number, press O and recheck if it is still referenced as a number.
Update based on comments - this code illustrates general idea of how it can be fixed automatically. Note: this code is not tested, and provided only for illustrative purposes:
#I didn't check this code,
#use carefully,
#beware of errors !
import idc
import idautils
import idaapi
#this function will pass over all assembly commands in correspondiong parameter
#and will set as offsets all operands mentioned in second parameter
# @param list_of_ranges --> list of tuples of start and end of code ranges where it
# should be applied
# @list_of_commands_and_operands--> list of tuples of assembly commands as string
# and number of operands where it should be applied
def multi_convert_op_to_offset(list_of_ranges, list_of_commands_and_operands):
for (start, end) in list_of_ranges:
for h in idautils.Heads(start, end):
dis = idc.GetDisasm(h).split()
mnemonic = dis[0]
for mnem, op in list_of_commands_and_operands:
if mnem == mnemonic:
idc.OpOff(h, op, 0)
#Usage:
start = start_of_your_relevant_code
end = end_of_your_relevant_code
l_of_rng = []
l_of_rng.append((start, end))
l_of_cmds_and_ops = []
l_of_cmds_and_ops.append(("la", 1))
multi_convert_op_to_offset(l_of_rng, l_of_cmds_and_ops)