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

 
 
> Несколько вопрсов по ассемблеру к AVR
Reboot_s
сообщение May 28 2005, 09:22
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 9-05-05
Пользователь №: 4 855



Есть такая команда sbc и adc. Первая означет - вычесть с переносом, вторая - сложить с переносом. Обьясните пожалуйста, что это за операция. Что такое перенос. На примере если можно.
И еще вопрос.Что значит такая запись:
ldi tmp16a, low(10000)
ldi tmp16b, high(10000)
а именно low(10000) и high(10000). Как нашел в одной книге, что это младшая и старшая часть 16-битного слова из двух регистров. Можно ли както переписать это под 24 битное слово из трех регистров? А точнее, как исполуется запись BYTE2(выражение) и BYTE3(выражение)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
MicronSys
сообщение May 28 2005, 12:11
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 12-05-05
Пользователь №: 4 946



Значение 10000 в HEX будет 0х2710

ldi tmp16a, low(10000) в tmp16a будет занесено 0х10 - 16
ldi tmp16b, high(10000) в tmp16b будет занесено 0х27 - 39

( 39*256+16 = 10000 )

Прочитай еще ра з книгу там есть еще функции
LWRD - возвращает биты 0-15
HWRD - возвращает биты 16-31
Для твоего случая енто так

есть число 24 бита 0х00E1E2E3 - 14803683
ldi temp1, LWRD(LOW(0х00E1E2E3)) - temp1 = E3
сначала берется E2E3(LWRD) потом E3 (LOW)

ldi temp2, LWRD(HIGH(0х00E1E2E3)) - temp2 = E2
сначала берется E2E3(LWRD) потом E2 (HIGH)

ldi temp3,HWRD(LOW(0х00E1E2E3)) - temp3 = E1
сначала берется 00E1(HWRD) потом E1 (LOW)


Да здесь все в Hex формате ( 16 - я система) Если собираешся заниматся програмингом учи ее !!!!!!!!!! rolleyes.gif

Есть такая команда sbc и adc.

ADC R1,R2 слаживает два регистра и добовляет бит С ( это флаг переноса )
то есть R1=R1+R2+C
SBC R1,R2 то есть R1=R1-R2-C

флаг переноса задействуется при сложение или вычитании
если ты слаживаеш два числа 255 + 10 = 265
но так как у проца регистры 8 битные то ты получиш не 265 а 9
1111 1111
+ 0000 1010
---------------
1000 01001
|_Это бит уйдет в флаг переноса

Вобщем учить АСМ это прикольно но для начала надо хотябы знать не только
родимую 10-ю систему но и 2-ю и 16-ю системы
smile3046.gif
Go to the top of the page
 
+Quote Post
Reboot_s
сообщение May 28 2005, 20:26
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 9-05-05
Пользователь №: 4 855



Спасибо за детальный ответ. Но меня таки интерисует как исполуется запись BYTE2(выражение) и BYTE3(выражение)?
Go to the top of the page
 
+Quote Post

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

 


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


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