реклама на сайте
подробности

 
 
> Как в асемблерной вставке обратится к масиву?, Компилятор Embedded Workbench 2.3
Professor
сообщение May 16 2006, 18:07
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 35
Регистрация: 12-05-06
Из: Украина Харьков
Пользователь №: 17 045



Суть вопроса состоит в том чтоб в асемблерной вставке обратится к масиву чисел и одно из чисел извлечь.... Массив должен быть описан как unsigned char... Как его правильно описать и как его вызывать в асемблерной вставке....

Вставка организованна таким образом:

В main.c:

extern void set_int(void);

void main(void){
set_int();
}

В Text file.asm:

NAME set_int
#include <iom16.h>
PUBLIC set_int
RSEG CODE

set_int:

; (в этом месте и надо обратится и извлеч число из масива)

ret
END set_int

Заранее благодарю за помощь.....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение May 16 2006, 18:31
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ух как давно я не писал для AVR!

NAME set_int
#include <iom16.h>
PUBLIC set_int
RSEG CODE
EXTERN chartabl

set_int:
; (в этом месте и надо обратится и извлечЬ число из масива)
ldi ZL,LOW(chartabl)
ldi ZH,HIGH(chartabl)
ld r0,Y ; или ld r0,Y+ если нужно с инкрементом

ret
END set_int
_______________________
Это если массив расположен в RAM. А если во флэше, то так:

NAME set_int
#include <iom16.h>
PUBLIC set_int
RSEG CODE
EXTERN chartabl

set_int:
; (в этом месте и надо обратится и извлечЬ число из масива)
ldi ZL,LOW(chartabl*2)
ldi ZH,HIGH(chartabl*2)
lpm ; или lpm rx,z+ , где rx - любой регистр, и можно z, z+, y, y+
ret
END set_int

хотя могу ошибаться на счёт умножения на 2. Я это делал когда метка находилась в этом же ASM-файле. Глобальный адрес может уже быть умножен на 2.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Professor   Как в асемблерной вставке обратится к масиву?   May 16 2006, 18:07
- - rezident   А где обозначен сам массив из которого нужно извле...   May 16 2006, 18:15
|- - Professor   Цитата(rezident @ May 16 2006, 21:15) А г...   May 16 2006, 18:21
|- - Professor   Цитата(GetSmart @ May 16 2006, 21:31) Ух ...   May 16 2006, 18:37
- - GetSmart   Чё-то я намудрил немного. Вобщем так. Если указате...   May 16 2006, 18:38
|- - Professor   Цитата(GetSmart @ May 16 2006, 21:38) Чё-...   May 16 2006, 18:40
- - GetSmart   Ну блин так и писали бы в начале. Я-то думал, что ...   May 16 2006, 18:46
|- - Professor   set_int: ; (в этом месте и надо обратится и извлеч...   May 16 2006, 19:14
- - GetSmart   ЦитатаА если надо извлечь не один из эелементов ма...   May 16 2006, 19:28
|- - Professor   Цитата(GetSmart @ May 16 2006, 22:28) ...   May 16 2006, 19:50
- - GetSmart   Блин, да вы вообще в асме ни бум-бум. Во-первых, ...   May 16 2006, 20:21
- - vet   Хинт: вместо add/adc оптимальнее применять subi/sb...   May 16 2006, 20:37
- - _Bill   Цитата(Professor @ May 16 2006, 21:07) Су...   May 18 2006, 11:18
- - Сергей Борщ   самый эффективный способ: main.cКод#include <s...   May 19 2006, 13:23


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016