|
надо в ассемблере в таблице организовать базу данных |
|
|
|
Sep 20 2007, 07:09
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Всем Привет ! Есть малюсенькая задачка -
_____________________.doc ( 20.5 килобайт )
Кол-во скачиваний: 267надо в ассемблере в таблице организовать базу данных для сегментов
_____________________.doc ( 20.5 килобайт )
Кол-во скачиваний: 267 в виде , показанном в приложении. Суть проблемы - каждая цифра должна быть записана в ассемблере на своей строчке ( иначе получается очень длинная запись , и не видна по ширине экрана . Но при записи .db надо сразу записывать 2 байта ( через запятую ) . Теоретически после записи первого байта можно поставить \n и перейти на следующую строку и всё должно быть хорошо , но ассемблер ругается : error: syntax error, unexpected '(' с уазанием на ошибку во втором байте ( почему не отрабатывает \n ? или я чтото не так делаю ? Если кто знает как решить проблему , помогите плиз .
_____________________.doc ( 20.5 килобайт )
Кол-во скачиваний: 267
|
|
|
|
|
 |
Ответов
|
Sep 20 2007, 08:29
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Цитата(SasaVitebsk @ Sep 20 2007, 12:08)  А почему обязательно в ассемблере? Программа на писана на ассме . Тем более что мне ассм больше нравится - каждому своё .
|
|
|
|
|
Sep 20 2007, 10:01
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Yuriy_AVR @ Sep 20 2007, 07:29)  Программа написана на ассме Или так Код .DB (On<<D7)+(On<<D6)+(On<<D5)+(On<<D4)+(On<<D3)+(Of<<D2)+(On<<D1)+(Of<<D0);0 .DB (Of<<D7)+(Of<<D6)+(Of<<D5)+(Of<<D4)+(On<<D3)+(Of<<D2)+(On<<D1)+(Of<<D0);1 .DB (On<<D7)+(On<<D6)+(Of<<D5)+(On<<D4)+(On<<D3)+(On<<D2)+(Of<<D1)+(Of<<D0);2 . . . . . .DB (On<<D7)+(Of<<D6)+(On<<D5)+(On<<D4)+(On<<D3)+(On<<D2)+(On<<D1)+(Of<<D0);9
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Sep 20 2007, 11:10
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Цитата(=GM= @ Sep 20 2007, 14:01)  Или так Код .DB (On<<D7)+(On<<D6)+(On<<D5)+(On<<D4)+(On<<D3)+(Of<<D2)+(On<<D1)+(Of<<D0);0 .DB (Of<<D7)+(Of<<D6)+(Of<<D5)+(Of<<D4)+(On<<D3)+(Of<<D2)+(On<<D1)+(Of<<D0);1 .DB (On<<D7)+(On<<D6)+(Of<<D5)+(On<<D4)+(On<<D3)+(On<<D2)+(Of<<D1)+(Of<<D0);2 . . . . . .DB (On<<D7)+(Of<<D6)+(On<<D5)+(On<<D4)+(On<<D3)+(On<<D2)+(On<<D1)+(Of<<D0);9 Да понятно что так можно сделать , но при таком подходе памяти для таблицы будет ровно в 2 раза больше расходоваться . . . Цитата(Wild007 @ Sep 20 2007, 14:00)  Для большей читабельности програим надо вводить дополнительные переменные с помощью .equ, например: Код .equ S1 = (Seg_On<<D7)+(Seg_On<<D6)+(Seg_On<<D5)+(Seg_On<<D4)+(Seg_On<<D3)+(Seg_Off<<D2)+(Seg_On<<D1)+(Seg_Off<<D0)
.equ S2 = (Seg_On<<D7)+(Seg_On<<D6)+(Seg_On<<D5)+(Seg_On<<D4)+(Seg_On<<D3)+(Seg_Off<<D2)+(Seg_On<<D1)+(Seg_Off<<D0) а в .db уже использовать их названия, например: Код .DB S1,S2,......... Сочетание '\n' компилятор воспринимает не как перевод строки, а присваивает ему значение Newline (ASCII LF 0x0a) (см. хелп по Студии). Да наверное это выход . . . Странно как я ненодумался до такого простого переопределения . Большое спасибо
|
|
|
|
|
Sep 20 2007, 17:18
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Цитата(=GM= @ Sep 20 2007, 20:13)  Да? Это почему же? Да потому что у AVRа память программ организована не побайтно ( у AVRа команды то не байтовые ) , а пословно , т.е по 2 байта , а выборка производится побайтно ( именно по этой причине при указании адреса таблицы его необходимо умножать на 2 ) . Оператор .db указывает только на чёное значение адреса , а нечётное значение из Flash можно получить только с нечётным адресом ( т.е сделав указатель на Flash нечётным ). Иными словами , чтобы получить из таблицы байт по указанному адресу , необходимо сложить указатель со смещением . При указанном вами методе необходимо будет смещение умножать на 2 , и затем складывать с указателем . При ассемблировании нечётные ячейки будут пропущены , и фактически потеряны впустую . Так что итоговый обьём будет равен обьём таблицы х2 .
|
|
|
|
Сообщений в этой теме
Yuriy_AVR надо в ассемблере в таблице организовать базу данных Sep 20 2007, 07:09      =GM= Цитата(Yuriy_AVR @ Sep 20 2007, 16:18) Да... Sep 20 2007, 22:31       Yuriy_AVR Цитата(=GM= @ Sep 21 2007, 02:31) Ну, а е... Sep 21 2007, 06:06        Wild007 Цитата(Yuriy_AVR @ Sep 21 2007, 09:06) Са... Sep 21 2007, 06:53        Сергей Борщ Цитата(Yuriy_AVR @ Sep 21 2007, 09:06) К ... Sep 21 2007, 07:51      Maik-vs Цитата(Yuriy_AVR @ Sep 20 2007, 21:18) Да... Sep 21 2007, 08:17       Wild007 Цитата(Maik-vs @ Sep 21 2007, 11:17)... Sep 21 2007, 08:36        Maik-vs Цитата(Wild007 @ Sep 21 2007, 12:36) Ну т... Sep 21 2007, 09:22       Yuriy_AVR Цитата(Maik-vs @ Sep 21 2007, 12:17)... Sep 21 2007, 09:58        Wild007 Цитата(Yuriy_AVR @ Sep 21 2007, 12:43) Та... Sep 21 2007, 10:04         Yuriy_AVR Цитата(Wild007 @ Sep 21 2007, 14:04) В но... Sep 21 2007, 11:49          Wild007 Цитата(Yuriy_AVR @ Sep 21 2007, 14:49) Он... Sep 21 2007, 12:17        CDT Цитата(Yuriy_AVR @ Sep 21 2007, 12:58) DB... Sep 24 2007, 10:08  SasaVitebsk Цитата(Yuriy_AVR @ Sep 20 2007, 11:29) Пр... Sep 20 2007, 19:03 Wild007 Для большей читабельности програим надо вводить до... Sep 20 2007, 10:00 CDT Цитата(Yuriy_AVR @ Sep 20 2007, 10:09) Но... Sep 21 2007, 04:26 _Pasha А вот лично я такие таблицы со сложными зависимост... Sep 21 2007, 16:46 SasaVitebsk Цитата(_Pasha @ Sep 21 2007, 19:46) А вот... Sep 21 2007, 17:04 _Pasha ...Не заметил.
Это ж Вы (автор темы) намекаете на... Sep 21 2007, 17:24 Yuriy_AVR Цитата(_Pasha @ Sep 21 2007, 21:24) ...Не... Sep 22 2007, 13:00 ReAl Цитата(Yuriy_AVR @ Sep 21 2007, 11:58) Но... Sep 21 2007, 19:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|