но мой инструктор не отвечает. У меня есть следующий дополнительный вопрос для программы MIPS:
Extra credit covers binary to ASCII data type conversion. It is useful
to convert the 2’s complement integer into an ASCII string so that it
can be displayed on the monitor. Derive a binary-to-ASCII conversion
routine, BinarytoASCII, for converting a 2’s complement integer stored
in a0 register into an ASCII string stored in v0 register. The value
initially in a0 is restricted to be within the range -999 to +999. After
the algorithm completes execution, v0 contains the sign of the value
initially stored in a0. The following three bytes contain the three
ASCII codes corresponding to the three decimal digits representing its
magnitude. This algorithm always produces a string of four characters
independent of the sign and magnitude of the integer being converted.
Может быть, я неправильно читаю эту проблему, но разве невозможно хранить двоичное значение непосредственно в регистре в MIPS? Кажется, что это запрашивает преобразование десятичного числа в ASCII. Если я ошибаюсь, можете ли вы показать, как поместить число с основанием 2 в регистр в MIPS? благодарю вас
:)
(все, что знает компьютер, это0
или1
). Таким образом, профессор в основном хочет, чтобы вы взяли содержимое регистра и преобразовали его в серию ASCII.'0'
и'1'
(например,and
иshift
и добавьте, например,or
к'0'
...), затем переверните строку, чтобы восстановить исходный порядок) - person David C. Rankin   schedule 22.12.20180x30
это'0'
, а0x31
это'1'
. - person David C. Rankin   schedule 22.12.2018shift and add
. - person David C. Rankin   schedule 22.12.2018a0
содержит1234
, он берет исходный 32-битный шаблон и интерпретирует его как целое число (т. е. выполняет преобразование в строку) и отображает это на экране, но регистр по-прежнему представляет собой просто битовый шаблон... ( то есть, если это1234
было шестнадцатеричным, то регистр содержит 16 нулевых битов сверху, а затем0001_0010_0011_0100
... если десятичное, мне лень конвертировать base10 1234 в base2 ... что угодно, надеюсь, теперь вы поняли идею). - person Ped7g   schedule 22.12.2018li $a0,999
(это загрузка кодированного значения999
с основанием 2 вa0
, преобразование из десятичного числа 999 в битовый шаблон с основанием 2 выполняется ассемблером в процессе сборки), затем ваша магия, затемv0
в конце должно содержать значение0x20393939
(т.е. четыре char string" 999"
(0x20 - это пробел в ASCII)) (если я правильно понимаю определение задачи, по моим меркам оно недостаточно точное, поэтому я частично догадываюсь, что именно ожидается) - person Ped7g   schedule 22.12.2018