Вопросы Conecept для ARM Assembly Language - PullRequest
0 голосов
/ 01 июня 2018

Имея опыт программирования, я все еще испытываю трудности с концепциями ассемблера.Все онлайн-уроки, которые я нашел до сих пор, несколько полезны, но я перехожу с урока на урок, чтобы собрать вещи воедино.В любом случае, у меня есть несколько концептуальных вопросов, касающихся следующей программы сборки ARM, и я ценю любую помощь и указатели.

@converts a lowercase letter to an uppercase letter 
.global _start

_start:
  MOV R7, #3
  MOV R0, #0
  MOV R2, #1
  LDR R1, =character
  SWI 0

_uppercase:
  LDR R1, =character
  LDR R0, [R1]
  BIC R0, R0, #32
  STR R0, [R1]

_write:
  MOV R7, #4
  MOV R0, #1
  MOV R2, #1
  SWI 0

end:
  MOV R7, #1
  SWI 0

.data
character:
  .ascii " "
  1. Я понимаю, что такое системные вызовы, такие как чтение с клавиатуры или вывод на экран, но чтоопределяет, какой регистр отвечает за какие системные вызовы и как мне узнать, какие значения необходимо передать в эти регистры?
  2. В этом примере регистр R0 используется для системного вызова в строке 6 для получения ввода изклавиатуры, а затем снова используется в строке 13, чтобы загрузить адрес регистра R1 в себя.Что происходит с исходным значением / системным вызовом из строки 6?Каждая строка выполняется построчно во время выполнения?Где хранится информация, которую я собираюсь взять с клавиатуры (строка 6)?
  3. Как и в вопросе 2, я храню адрес слова для регистрации R0 в строке 15, но создаю системувызов в строке 19 для вывода в память, используя тот же регистр.Что случилось с адресом памяти, который был сохранен в регистре R0 из строки 15?
  4. Почему каждый раздел метки должен иметь SWI 0?Почему раздел _uppercase не имеет SWI 0?
  5. Почему для завершения программы требуется системный вызов (строка 24) перед SWI 0?

Заранее спасибо за ответы иЯ надеюсь, что этот пост поможет другим понять некоторые концепции ARM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...