Значение 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 - я система) Если собираешся заниматся програмингом учи ее !!!!!!!!!!
Есть такая команда 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-ю системы