moze mi niekto pomoct, potrebujem odcitat dve 16bitove cisla ulozene v pamati na x51. Mate na to nejaky sposob. Robil som to sposobom, ze som odpocitaval nizsie byty navzajom pomocou SUBB a potom vysie, ale funguje to len pokial neochadza k presunu cez C a zatial si neviem rady.
Nejdriv vynulujes C (clr C)
do A nactes spodni byte mensence (MOV A, adresa)
od A odectes spodni byte mensitele (SUBB A, adresa)
Zde je podle potreby automaticky nastaven priznak vypujcky
instrukce presunu neovlivnuji C takze si ho nemusis vsimat
vysledek rozdilu v A (spodni byte) si ulozis
do A nactes horni byte mensence
odectes od A horni byte mensitele a vysledek (v A) si ulozis.
Melo by to bejt, pak jeste podle C muzes urcit, jesli se nahodou neodecitalo vetsi cislo od mensiho
(C = 1)
Používám následující prográmek:
menšenec R5, R4
menšitel R3, R3
výsledek v R5,R4
xxx:
clr c
xch a,r4
subb a,r2
xch a,r5
subb a,r3
xch a,r5
xch a,r4
ret
toto funguje, mrknu na to tvoje…
[code];odcitani 2 16bit cisel
;c1 - mensenec, C2 mensitel, vysledek v c1
c1_l DATA 30h
c1_h DATA 31h
c2_l DATA 32h
c2_h DATA 33h
ORG 0000H
start: mov c1_l, #low 7940
mov c1_h, #high 7940
mov c2_l, #low 7265
mov c2_h, #high 7265
;------------------- ;odecteni spodnich bytu
clr c
mov A, c1_l
subb A, c2_l
mov c1_l, A
mov A, c1_h ;odecteni hornich bytu s vypujckou ze spodnich
subb A, c2_h
mov c1_h, A
sjmp $
end[/code]
EDIT: to tvoje chodi taky, v cem je problem?
[code]
ORG 0000H
start:
mov r4, #low 7940 ;0x1F04
mov r5, #high 7940
mov r2, #low 7265 ;0x1C61, k prenosu pri odcitani dojde
mov r3, #high 7265
acall xxx
sjmp $
xxx:
clr c
xch a,r4
subb a,r2
xch a,r5
subb a,r3
xch a,r5
xch a,r4
ret
end[/code]
EDIT: to tvoje chodi taky, v cem je problem?
Ahoj, nemyslel jsem, že je v něčem problém, jen jsem poslal to , s čím pracuji, aby si případně dotazovač prošel, jak se registrech ty elektrony šoupou.
Pardon, jsem tak nejak omylem predpokladal, ze jsi autor vlakna…