Прошу прощения за то, что пытался ввести в заблуждение. Моя вина. Вкурил документацию и увидел там следующее:
Формат команды: ldr #n , значение

где: n - номер служебного регистра

Номер служебного регистра лежит в диапазоне 0-7, определяя один из регистров SR0-SR7. Загружаемое значение может быть константой, меткой или выражением, задающим адрес в памяти данных или памяти команд.

При загрузке регистров SR0-SR3 загружаемое значение является адресом в памяти данных. Константа или выражение, загружаемое в регистр, преобразуется в адрес сегмента путем отсечения младших 3-х разрядов значения.
Это, оказывается, фича языка ассемблера. При загрузке регистров #5, #6, #7 -- нужно сдвигать константу влево. При загрузке регистров #a, #b, #c, #d -- не нужно...

---------- Post added at 14:19 ---------- Previous post was at 13:34 ----------

Цитата Сообщение от Andrei88 Посмотреть сообщение
Насчет ассемблера - было бы интересно, особенное, если в комплекте с "средой разработки" типа Borland Pascal (городить что-то более навороченное, думаю, смысла нет, а вещицу, которая знает понятие "проект" и позволяет сделать несколько файлов, а заодно скрывает от пользователя командную строку - это то, что надо :-))
Ну, полноценную среду разработки я вряд ли потяну. И, как показали последние события, сам код ассемблера тоже надо проверить на (невольные) неточности.

Когда начнет получаться что-то более-менее похожее на нормальный продукт, я, наверное, отдельную тему открою в этом же разделе.

Синтаксис не смущает? Я-то привык.