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

 
 
> Как работать с переменными int в асемблере?, Работаю в компиляторе AVRStudio4....
Professor
сообщение May 21 2006, 09:32
Сообщение #1


Участник
*

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



Задача собсветно вот в чем.....
Преременная имеет расширение unsigned int и хранится в двух регистрах......
Хранится к примеру в регистрах r20 и r21 где r20 старший байт а r21 младший.... К примеру они равны числам r20 =0x11, r21 =0xF0.... Получается число 0x11F0 которое в свою очередь в десятичной системе равно 4592..... Также имеется регистор r23..... Мне теперь нужно извлечь из числа 4592 сначала 2 потом 9 потом 5 потом 4.... и заносить эти чила по очереди в регистор r23.... На C++ задача решается просто:

Допустим регистор r23 это переменная unsigned char REZULTAT = 0
а r20 и r21 это переменная unsigned int HISLO = 4592 имеем следующий код:

REZULTAT = HISLO%10; извлекдли 2
HISLO = HISLO/10;
REZULTAT = HISLO%10; извлекдли 9
HISLO = HISLO/10;
REZULTAT = HISLO%10; извлекдли 5
HISLO = HISLO/10;
REZULTAT = HISLO; извлекдли 4

Как решить эту задачу на асемблере? Заранее спасибо за помощь......
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение May 21 2006, 15:11
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Деление 16-ти разрязного числа на 10 можно заменить умножением числа на 0xCCCD и сдвигом произведения вправо на 19.

Цитата
Sha © (17.05.05 12:42) [20]
Для реализации беззнакового деления на 10
надо реализовать следующие алгоритмы:

08 бит: j:=(i*$CD) shr 11;
16 бит: j:=(i*$CCCD) shr 19;
32 бит: j:=(i*$CCCCCCCD) shr 35;
Go to the top of the page
 
+Quote Post
Professor
сообщение May 21 2006, 17:41
Сообщение #3


Участник
*

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



[/quote]
Sha © (17.05.05 12:42) [20]
Для реализации беззнакового деления на 10
надо реализовать следующие алгоритмы:

08 бит: j:=(i*$CD) shr 11;
16 бит: j:=(i*$CCCD) shr 19;
32 бит: j:=(i*$CCCCCCCD) shr 35;
[/quote]

Это код на асемблере что-ли?
Go to the top of the page
 
+Quote Post
defunct
сообщение May 21 2006, 19:38
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Professor @ May 21 2006, 20:41) *
Цитата

Sha © (17.05.05 12:42) [20]
Для реализации беззнакового деления на 10
надо реализовать следующие алгоритмы:

08 бит: j:=(i*$CD) shr 11;
16 бит: j:=(i*$CCCD) shr 19;
32 бит: j:=(i*$CCCCCCCD) shr 35;


Это код на асемблере что-ли?

Это демонстрация полного нежелания решать свою задачу самостоятельно?

Цитата(Professor @ May 21 2006, 22:04) *
Мне нужен код чисто на асемблере... AVRStudio это не сишный компилятор а асемблерный....

Пишите, алгоритм вам дан.
За вас это никто делать не будет, а уже сделанным вы полностью отбили желание с вами делиться.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Professor   Как работать с переменными int в асемблере?   May 21 2006, 09:32
- - _artem_   У атмела в аппликейшн нот уже есть готовая програм...   May 21 2006, 09:52
|- - Professor   Цитата(_artem_ @ May 21 2006, 12:52) У ат...   May 21 2006, 09:59
|- - prottoss   Цитата(Professor @ May 21 2006, 17:59) Ци...   May 21 2006, 10:58
|- - Professor   [/quote] http://atmel.ru/Articles/Atmel13.htm - эт...   May 21 2006, 11:29
- - GetSmart   А оно вам надо? У АВРов нет команды деления, поэто...   May 21 2006, 11:06
- - _artem_   Professor, я специально ссылку вам не дал, чтобы в...   May 21 2006, 11:31
- - GetSmart   Так ведь можно прекрасно писать на си с асмовыми в...   May 21 2006, 12:15
|- - Professor   Цитата(GetSmart @ May 21 2006, 15:15) Так...   May 21 2006, 12:41
|- - Professor   [/quote] Как мед так и ложка побольше? Скажите сп...   May 21 2006, 19:43
- - GetSmart   Professor, Вы можете скомпилить вот это и посмотре...   May 21 2006, 18:24
|- - Professor   Цитата(GetSmart @ May 21 2006, 21:24) Это...   May 21 2006, 19:04
- - GetSmart   Универсальная MOD / DIV функция. Регистры можно по...   May 21 2006, 20:27


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

 


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


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