Программирование на Ассемблере
Это связано с тем, что команда MULU может умножать только
16-битные слова, поэтому наибольший результат, который можно получить с
помощью MULU, определяется как $FFFF*10 = 65535*10 = 655350. Однако это не
слишком серьезное ограничение и мы не будем переписывать программу для
обработки больших чисел. Раздел 5. Внешние регистры. Как мы уже говорили, процессор Amiga может адресовать не только ячейки
оперативной и постоянной памяти, но и специальные регистры - регистры
внешних устройств. Именно регистры внешних устройств обеспечивают интерфейс
обмена информацией между процессором и остальным \"железом\" (hardware). Для каждой компоненты hardware выделяется один или несколько регистров,
каждый из которых имеет свой адрес. Обращение процессора к этим компонентам
происходит как обычное обращение к памяти по этим адресам (с помощью уже
известных Вам команд MOVE, AND, OR итд.). Нетрудно понять, что на языке
ассемблера можно писать программы, использующие все возможности Amiga.
В этом разделе мы рассмотрим основные функции custom-чипов и других
устройств Amiga и на примерах покажем, как эти функции можно использовать в
программах. 5.1. Работа со специальными клавишами. Загрузите AssemPrо, войдите в отладчик, выберите пункт меню \"Parameter-
Display-From-Address\" и введите адрес $BFEC00. Затем выберите пункт
\"Parameter-Display-HEX-Dump\" (в системе SEKA наберите \"q $bfec00\").
Вы увидите список адресов начиная с $BFEC00, в котором два байта всегда
повторяются. Эти два байта отражают состояния двух внешних регистров.
Повторение одних и тех же байтов по разным адресам связано с тем, что при
декодировании адреса используются не все биты. В нашем примере для
адресации регистров используются только два старших байта и младший бит
(нулевой). Адреса таких регистров записываются как $BFECxx, где байт xx не
несет никакой информации о нужном адресе в битах 1-7, и только значение
бита 0 определяет, какой из двух регистров используется.
|