Я пытаюсь напечатать целое число без знака из регистра MIPS в виде текста ASCII на консоль.Печать MIPS Регистрация Содержание
Другими словами, давайте притворимся, что в $ a0 есть «0x4ab3c823». Я хочу распечатать «4ab3c823» для консоли в xSPIM.
Вот моя попытка. Я продолжаю получать десятичные значения, а не ASCII. Это всего лишь отрезанная от всей программы, поэтому я вырезал все остальное.
.data
printspace: .space 8
.text
printHex:
move $t0,$a0
la $a0,printspace #Save address of 8 blank bytes to $a0
sw $t0,0($a0) #Copys the integer I want to print to $a0's address in memory
li $v0 1
syscall
jr $ra
Я попытаюсь повторить то, что я хотел бы сделать. У меня возникли проблемы с пониманием hex, ASCII и т. Д., Поэтому трудно объяснить ... Например, у меня есть регистр $ t1 = a1b2c3d4. То, что я хотел бы сделать, это распечатать на консоли именно этот «a1b2c3d4». Насколько я понимаю, мне нужно взять один символ регистра, определить, есть ли a-f или 0-9, добавить соответствующее смещение, а затем напечатать как символ (syscall 11)? Я просто не уверен в простой способ сделать это, не загружая каждый отдельный символ в память для печати. В идеале я печатаю все «a1b2c3d4» сразу, а не буквой. – user3290553
@ user3290553 К сожалению, для этого SPIM не имеет простой syscall. Вам не обязательно обязательно искать символы, потому что для 0-9 значение ASCII является вашим значением + ASCII '0'. Для a-f вы добавляете int ('a') - 10. Подробности здесь http://stackoverflow.com/questions/19370600/mips-assembly-convert-from-integer-to-hexadecimal – qwr