Данные ASCII не являются "расширенными знаками".Используя симулятор MIPS Mars, я набрал:
.data
.asciiz "The sum"
.text
main:
Это сгенерировало сегмент данных:
Address: Value:
0x10010000 0x20656854
0x10010004 0x006d7573
НО ПОДОЖДИТЕ, разве это не шестнадцатеричное значение "суммы" просто 54:68:65:20:73:75:6d
?Да, обратите внимание на порядок, в котором они на самом деле хранятся. Вернее, посмотрите на Endianness .Наименьшее значение имеет самый высокий адрес (или самый старший байт - первый адрес).Строки ASCII хранятся в формате Big Endian.
Итак, когда вы храните свои строки, вычислите шестнадцатеричное значение, разбейте строку на слова, а затем сохраните каждый символ в обратном порядке.Затем преобразовать в двоичный файл.