 |
|
|
|
| Автор |
Сообщение |
klevogivesh Частый гость (>5)

Зарегистрирован: 04.07.2007 Сообщения: 10
|
Добавлено: 05 Июл 2007, 6:32 Заголовок сообщения: Что значит следующий код на ассемблере? |
|
|
Помогите пожалуйста понять значение следующего кода на ассемблере:
LDI ZH, HIGH(TAB_RATE*2) |
|
| Вернуться к началу |
|
 |
moskatov Знатный посетитель (>20)


Зарегистрирован: 02.05.2006 Сообщения: 95 Откуда: Россия, Ростовская область, г. Таганрог
|
Добавлено: 05 Июл 2007, 6:48 Заголовок сообщения: |
|
|
| Загружаем в регистр Z удвоенный адрес TAB_RATE. |
|
| Вернуться к началу |
|
 |
derun Знатный посетитель (>20)

Зарегистрирован: 10.04.2007 Сообщения: 32
|
Добавлено: 05 Июл 2007, 9:27 Заголовок сообщения: |
|
|
| moskatov писал(а): | | Загружаем в регистр Z удвоенный адрес TAB_RATE. |
Я бы даже сказал что в старшую часть регистра Z загрузить старшую часть (TAB_RATE уноженое на 2) |
|
| Вернуться к началу |
|
 |
klevogivesh Частый гость (>5)

Зарегистрирован: 04.07.2007 Сообщения: 10
|
Добавлено: 05 Июл 2007, 10:42 Заголовок сообщения: |
|
|
А если TAB_RATE представляет из себя такую таблицу
TAB_RATE:
.DB 0X11,0X21,0X,0X11,0X10,0X23,0X08,0X0B
.DB 0X09,0X55,0XCC,0XDF,0X00,0X66,0X31,0XFF
.DB 0X89,0X80,0X63,0XA3,0X00,0XAA,0XA3,0X9A
.DB 0X23,0X1F,0XF4,0XF0,0X56,0X3F,0X5F,0X4F
где здесь старшая часть? Что именно будет загружаться в ZH?
Последний раз редактировалось: klevogivesh (05 Июл 2007, 13:43), всего редактировалось 1 раз |
|
| Вернуться к началу |
|
 |
derun Знатный посетитель (>20)

Зарегистрирован: 10.04.2007 Сообщения: 32
|
Добавлено: 05 Июл 2007, 12:07 Заголовок сообщения: |
|
|
| в ZH загрузится не содержимое таблицы, а старшая часть адреса указывающего на таблицу |
|
| Вернуться к началу |
|
 |
klevogivesh Частый гость (>5)

Зарегистрирован: 04.07.2007 Сообщения: 10
|
Добавлено: 05 Июл 2007, 12:32 Заголовок сообщения: |
|
|
.ORG 0X0800
TAB_RATE:
.DB 0X11,0X21,0X,0X11,0X10,0X23,0X08,0X0B
.DB 0X09,0X55,0XCC,0XDF,0X00,0X66,0X31,0XFF
.DB 0X89,0X80,0X63,0XA3,0X00,0XAA,0XA3,0X9A
.DB 0X23,0X1F,0XF4,0XF0,0X56,0X3F,0X5F,0X4F
Теперь можно определить, что загружаем в ZH? |
|
| Вернуться к началу |
|
 |
derun Знатный посетитель (>20)

Зарегистрирован: 10.04.2007 Сообщения: 32
|
Добавлено: 05 Июл 2007, 13:27 Заголовок сообщения: |
|
|
Дело в том что в AVR все команды двухбайтные это накладывает определнный отпечаток на адресацию.
когда вы пишите ORG 0x800 то в данном случае это адрес слов, когда вы будете читать байты из таблицы, то должны получить адрес для байт, для этого у вас написано (TAB_RATE*2). Но это было отступление, а тепер ответ на конкретно ваш вопрос (0х0800*2)=0х1000 итого в ZH будет загружено 0х10 |
|
| Вернуться к началу |
|
 |
klevogivesh Частый гость (>5)

Зарегистрирован: 04.07.2007 Сообщения: 10
|
Добавлено: 09 Июл 2007, 13:47 Заголовок сообщения: |
|
|
| спасибо, теперь этот код мне более менее ясен |
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять вложения в этом форуме Вы можете просматривать вложения в этом форуме
|
|