Программа сборки LC3, распечатать инструкцию

Следующая программа LC3 распечатает «Hello». Но может ли кто-нибудь помочь объяснить, почему он это делает? Я смущен, потому что нет инструкций типа PUTS. Это как-то связано с загрузкой значений в R0? Благодарю вас!

     LEA R1, PROMPT
L1   LDR R0, R1, #0
     BRz FOO ; FOO is some other routine
L2   LDI R3, DSR
     BRzp  L2
     STI R0, DDR
     ADD R1, R1, #1
     BR L1
DSR    .FILL xFE04
DDR    .FILL xFE06
PROMPT  .STRINGZ  "Hello" 

person user3474606    schedule 17.09.2014    source источник


Ответы (2)


Предположительно DSR — это регистр с отображением памяти, который показывает, когда устройство вывода занято (отсюда цикл L2, который ждет), а DDR, я думаю, это регистр данных (все, что вы там напишете, будет выведено). R0 получает символы подсказки по одному.

person Jester    schedule 17.09.2014
comment
Разве DSR и DDR не просто ярлыки? - person user3474606; 17.09.2014
comment
Вы можете взглянуть на это? stackoverflow.com/questions/30017878/where-is-32768 -из-от - person committedandroider; 03.05.2015

DSR и DDR являются указателями на ячейки памяти xFE04 и xFE06 соответственно. Это определенные области памяти, встроенные в программное обеспечение lc3. Тот, который вы назвали DSR, означает регистр «статуса дисплея». Если дисплей не занят, то есть он готов распечатать один символ, значение, хранящееся в ячейке памяти xFE04, будет отрицательным значением, ваш цикл L2 будет работать вечно, пока это не станет истинным. Что делает регистр «данных» дисплея DDR, так это сохраняет ваши данные в ячейке памяти xFE06, которая выводит ваши данные на экран. Они очень похожи на KBDR и KBSR.

person magman    schedule 10.11.2015