Произвести обмен содержимого младшего байта регистра X с регистром А.
Микроконтроллер семейства МC68НС11
комплирую в Micro-IDE
ОС WinXP
такая задача.. ну во первых, куча вопросов конечно. все по порядку.
1)что значит младшего байта?
2)какая адресация тут?
При полном отсутствии понимания того что я делаю, я конечно попытаюсь набросать что нибудь, что бы не быть наглым , пожалуйста исправьте и помогите кто чем может
Код
org $8000
ldx #$1f00; установить регистр X (вот тут не знаю, во что установил, и надо ли ????? )
ldaa $03,х ; считать информацию (не знаю, интуитивно пишу это)
Спасибо.
MC68HC11. Младший байт регистра Х
Модератор: Andy
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А скольки битный там регистр A?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Нашел. Вот тут весьма доходчивое объяснение.
http://notes.ump.edu.my/fkee/BEE4323%5F ... echnology/
индексные регистры 16-битные
ACCA и ACCB - 8-битные и составляют вдвоем ACCD - 16-битный аккумулятор.
Сложность задания заключается в том, что
1) Инструкций обмена у мотороловских микроконтроллеров никогда не было
2) индексным регистром можно оперировать только целиком, т.е. нельзя обратиться к его младшей или старшей половине.
Поэтому надо делать через сохранение в память.
А может через операции сдвига....
Вот еще сводная таблица всех команд http://www.netzmafia.de/skripten/mikroc ... eflist.pdf
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Дааааа, придется все делать в памяти. Операции сдвига могут только на 1 бит сдвигать. Т.е. целый байт двигать нерационально.
Это не программирование
Этот больше похоже на тетрис за 10 секунд до проигрыша 
А, чОрт
хорошая мыслЯ, как говорится, приходит опослЯ.
Подумайте над тем, чтобы данные запихнуть в стек, а потом снять со стека в нужном порядке. Это наверное будет рациолнальнее.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Нашел. Вот тут весьма доходчивое объяснение.
http://notes.ump.edu.my/fkee/BEE4323%5F ... echnology/
индексные регистры 16-битные
ACCA и ACCB - 8-битные и составляют вдвоем ACCD - 16-битный аккумулятор.
Сложность задания заключается в том, что
1) Инструкций обмена у мотороловских микроконтроллеров никогда не было
2) индексным регистром можно оперировать только целиком, т.е. нельзя обратиться к его младшей или старшей половине.
Поэтому надо делать через сохранение в память.
А может через операции сдвига....
Вот еще сводная таблица всех команд http://www.netzmafia.de/skripten/mikroc ... eflist.pdf
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Дааааа, придется все делать в памяти. Операции сдвига могут только на 1 бит сдвигать. Т.е. целый байт двигать нерационально.
Код: Выделить всё
org $8000
;загружаем начальные значения
ldx #$1234
ldaa #$56
;теперь надо байт $34 поменять местами с $56
;в этом и состоит задача, собственно
stx $9000 ;по адресам $9000-$9001 записывается $34 и $12
ldab $9000 ; запоминаем $34 в регистре B
sta $9001 ;по адресу $9001 записываем $56
;(получается готовое значение для X)
ldx $9000 ; теперь X=$1256
;осталось как-то перекинуть B в А
clra
aba
;вот и все X=$1256, A=$34
stop


А, чОрт

Подумайте над тем, чтобы данные запихнуть в стек, а потом снять со стека в нужном порядке. Это наверное будет рациолнальнее.
org $8000
;загружаем начальные значения
ldx #$1234
ldaa #$56
;теперь надо байт $34 поменять местами с $56
;в этом и состоит задача, собственно
stx $9000 ;по адресам $9000-$9001 записывается $34 и $12
ldab $9000 ; запоминаем $34 в регистре B вот тут пишет $12 а не $34
sta? $9001 ;по адресу $9001 записываем $56 ТУТ НЕ ДОПИСАНА КОМАНДА вместо знака вопроса А или B ?
;(получается готовое значение для X)
ldx $9000 ; теперь X=$1256
;осталось как-то перекинуть B в А
clra
aba
;вот и все X=$1256, A=$34
stop
идея понравилась, но пока не могу сгенернуть, доделать.
тут не мотороловский, а интелевский контроллер
но огромное вам спасибо за помощь
На счет стека - я не прочь подумать, и даже есть огромное желание, но я отсутствие знания команд не дает возможности, такое обучение(
;загружаем начальные значения
ldx #$1234
ldaa #$56
;теперь надо байт $34 поменять местами с $56
;в этом и состоит задача, собственно
stx $9000 ;по адресам $9000-$9001 записывается $34 и $12
ldab $9000 ; запоминаем $34 в регистре B вот тут пишет $12 а не $34
sta? $9001 ;по адресу $9001 записываем $56 ТУТ НЕ ДОПИСАНА КОМАНДА вместо знака вопроса А или B ?
;(получается готовое значение для X)
ldx $9000 ; теперь X=$1256
;осталось как-то перекинуть B в А
clra
aba
;вот и все X=$1256, A=$34
stop
идея понравилась, но пока не могу сгенернуть, доделать.
тут не мотороловский, а интелевский контроллер
но огромное вам спасибо за помощь
На счет стека - я не прочь подумать, и даже есть огромное желание, но я отсутствие знания команд не дает возможности, такое обучение(
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Странно... Значит порядок байтов в слове прямой а не обратный как чаще всего бывает. Значит все наоборот" писал(а):stx $9000 ;по адресам $9000-$9001 записывается $34 и $12
ldab $9000 ; запоминаем $34 в регистре B
вот тут пишет $12 а не $34
stx $9000 ;по адресам $9000-$9001 записывается $12 и $34
ldab $9001
STAA. $56 же у нас лежит в А." писал(а):sta? $9001 ;по адресу $9001 записываем $56
ТУТ НЕ ДОПИСАНА КОМАНДА вместо знака вопроса А или B ?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Гуглим по названию микроконтроллера и попадаем на сайт производителя - это моторола. Там лежат спецификации чипа в формате PDF. Я в бытность много чего написал на мотороловском ассемблере. (Правда процессор был 8-битный.) И LDA, LDX, STA, STX.... отпечаталось в мозгу как дважды два" писал(а):тут не мотороловский, а интелевский контроллер

На счет контроллера приношу извинения
Все заработало, спасибо. Посоветуйте литературки для новичков пожалуйста. Хочется все таки самому понимать.
Спасибо.
Все заработало, спасибо. Посоветуйте литературки для новичков пожалуйста. Хочется все таки самому понимать.
Спасибо.