2014-02-28 9 views
1

У меня возникли проблемы с пониманием следующего ассемблерного кода, который используется для добавления двух целых чисел с использованием регистров. Это не очень громоздкий вопрос, просто у меня нет хорошей ссылки для изучения синтаксиса. Если вы можете дать мне прозрение по строкам. Я был бы чрезвычайно благодарен.код сборки для добавления двух целых чисел

MOV R1, #100 
MOV R2, #100 
MOV (R1), #50 
ADD R2,(R1) 

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

Вопрос: каковы значения R1, R2 после выполнения инструкций.

+0

Что * вы * думаете, что ответы, и почему? Мы здесь не для того, чтобы делать домашнее задание (в конце концов, мы не получаем кредит) –

+0

На самом деле, @Damien_The_Unbeliever академическая честность потребовала бы, чтобы SO был дан кредит. В противном случае это будет плагиат, который большинство школ считают серьезным преступлением. –

+0

@Damien_The_Unbeliever: Это не вопрос домашней работы, и я не студент колледжа, я сам изучаю ISA. Я не просил ответа только на теорию, использующую скобки в инструкции. (V.putha) – chamara

ответ

-1

На другом сайте я нашел следующее объяснение, которое помогло мне понять использование скобок. Я считаю, что это будет очень разъяснение для других людей тоже, так что я отправлю его ниже:


Позволяет анализировать эту программу:

MOV AX, 4710 MOV DS, AX MOV [3998], 36 INT 32

... Первая инструкция, MOV AX, 47104, сообщает компьютеру копировать номер 47104 в местоположение AX. Следующая инструкция MOV DS, AX сообщает компьютеру копировать номер в AX в местоположение DS. Следующая инструкция MOV [3998], 36 указывает компьютеру поместить номер 36 в ячейку памяти 3998. Наконец, INT 32 выходит из программы, возвращаясь в операционную систему.

Прежде чем мы продолжим, я хотел бы объяснить, как работает эта программа. Внутри CPU есть несколько мест, называемых регистром, которые могут хранить число. Некоторые регистры, такие как AX, являются общими целями и не делают ничего особенного. Другие регистры, такие как DS, контролируют работу ЦП.

DS просто является регистром сегментов и используется для выбора области памяти, на которую может записывать процессор. В нашей программе мы помещаем номер 47104 в DS, который сообщает CPU о доступе к памяти на видеокарте.

Следующее, что делает наша программа, - это поместить номер 36 в место 3998 памяти видеокарты. Так как 36 - это код знака доллара, а 3998 - это место памяти в правом нижнем углу экрана, на экране появляется несколько значков доллара спустя несколько микросекунд.

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


Мы можем видеть из этого примера, что использование скобок в результате ввода значения в ячейку памяти, а не в регистр. В последнее время это значение было прочитано видеокартой для отображения символа на экране.

Кредиты писателя на: http://www.swansontec.com/sprogram.html

Смежные вопросы