Рутинное программирование сборки вопросы - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно написать две программы на ассемблере для класса, и мне было просто интересно, можете ли вы, ребята, помочь мне понять, что меня спрашивают / какие-нибудь общие советы о том, как это сделать.

Первая проблема гласит:

Напишите свою собственную подпрограмму для преобразования целого числа в шестнадцатеричную строку ascii, поместив результат в последовательность из восьми символов в буфере. Когда вызывается ваша подпрограмма, $ a0 будет содержать число для форматирования, $ a1 будет содержать указатель на место в памяти, куда должно быть помещено представление ASCII , потому что шестнадцатеричные цифры соответствуют группам из четырех двоичных файлов. цифры, вы можете генерировать цифры слева направо. Не беспокойтесь об отрицательных значениях. Вы можете преобразовать отдельные десятичные цифры в соответствующий символ ASCII, добавив значение нулевого символа ASCII (0x30 или '0) к целой цифре.

Я выделил разделы, в которых я запутался. Может ли кто-нибудь объяснить мне, как именно работает точка и как я буду использовать ее в этой ситуации? И вторая ли жирная часть буквально просто говорит мне, как преобразовать десятичные дроби в шестнадцатеричные? Смысл для преобразования, мой код будет выглядеть примерно так:

add $a1,$a0, '0

Напишите подпрограмму общего назначения для форматирования целых чисел в строковом буфере в любой числовой базе от 2 до 36. $ a0 должен содержать число для форматирования, $ a1 указатель на строковый буфер, $ a2 основание между 2 и 36 использовать для этого преобразования и $ a3 размер буфера, включая терминал nul. Вам нужно будет сгенерировать цифры справа налево, используя деление на основание с остатком, дающим следующую цифру, в то время как частное содержит остаток числа. Когда частное возвращает ноль, оно сигнализирует конец цикла. Заполните все оставшиеся места в буфере. Отрицательные числа должны обрабатываться путем размещения знака минус слева от самой значимой цифры. Для обработки отрицательных чисел вам нужно будет взять абсолютное значение остатков, сохранив при этом копию исходного числа для хранения знака. Если число не помещается в предоставленный буфер, заполните буфер символом #.

Этот я, честно говоря, запутался в общем вопросе и о том, что он спрашивает у меня. Опять выделенные здесь детали выделены деталями, на которых я особенно застрял.

Заранее спасибо за любую помощь, которую вы можете предложить! Я использую MIPSym, кстати, если это необходимо, информация.

...