[ASM] Jak dodac 4 lub wiecej liczb, suma >255

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
TheTaoist
-
Posty: 3
Rejestracja: 30 lis 2008, 13:07
Lokalizacja: Dolny Śląsk

[ASM] Jak dodac 4 lub wiecej liczb, suma >255

Post autor: TheTaoist » 30 lis 2008, 13:29

Jak w temcie - jak dodac w asemblerze 4 albo i wiecej liczb ktorych suma wieksza jest niz 255

Awatar użytkownika
Melon
Użytkownik
Posty: 128
Rejestracja: 20 cze 2008, 15:53
Lokalizacja: Kraków / Jarosław
Kontakt:

Post autor: Melon » 30 lis 2008, 14:33

Sprawdzać, czy nie wystąpiło przeniesienie (to bodajże bit C). Jeżeli chodzi o większe, to pewnie nie obejdzie się bez jakiejś procedury.

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 01 gru 2008, 1:05

Liczby, które chcesz dodawać do siebie mają być 8-bitowe czy większe?

Asembler AVR (dodawanie liczb 8-bitowych):

Kod: Zaznacz cały

;przykladowe dane
ldi R18, 250
ldi R19, 186
ldi R20, 240
ldi R21, 92
ldi R22, 0	;zerowanie R22

;dodawanie do R16 kolejnych liczb
;do R17 dodajemy tylko flage przeniesienia [0 albo 1]

add R16, R18	
adc R17, R22

add R16, R19
adc R17, R22

add R16, R20
adc R17, R22

add R16, R21
adc R17, R22

;wynik jest w R17:R16 [0x0300 - 768]
Podobnie jest w asemblerze x86 (w 8051 zapewne także).
Chodzi tu głównie o flagę przeniesienia, tak jak powiedział przedmówca.

TheTaoist
-
Posty: 3
Rejestracja: 30 lis 2008, 13:07
Lokalizacja: Dolny Śląsk

Post autor: TheTaoist » 02 gru 2008, 11:04

Szczerze mowiac, to nie bardzo wiem ;]]] Ale prosilbym o napisanie dla 8 i 16 bitowych jesli istnieje taka mozliwosc.
Ddevil dzieki Ci ze napisales ale to chyba niewiele mi pomoze - korzystam z asemblera 8051 z instrukcjami takimi jak m.in: MOV, MOVC, ADD ADDC, - i nie moge zbytnio zrozumiec tego co napisales ;/ W programie ktorego uzywam jest 7 rejestrow - R0-R7.
Bylbym niezmiernie wdzieczny jakbys mogl mi napisac wersje dla asemblera 8051 - z w/w instrukcjami.

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 02 gru 2008, 21:37

Żaden problem przerobić to na 8051 :) To, co napisałem, jest dla AVRów, ale rozkazy są podobne. ADD jest ten sam dla obu procesorów. ADC = ADDC (dodawanie z przeniesieniem). Ładowanie wartości do rejestrów w 8051 to MOV, o ile się nie mylę. W moim programie tę funkcję pełni LDI. Jeżeli chodzi o rejestry robocze, to odpowiednio możesz użyć R0...R7.

ODPOWIEDZ