odcitanie dvoch 16 bitovych cisiel

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… :blush: