sahra
10.11.2010, 12:38
ich habe ein kleines Prog geschrieben, und der soll 2 Reg vergleichen, wenn reg 1>reg2 dann zeigt das richtiges Ergebnis aber andersrum(reg2>reg1) tut er nicht: zum Beispiel:
reg1 = 0x0501
reg2 = 0xA2BB
main:
mov temp1, V1 ; V1=low (reg1) in temp1 speichern
mov temp2,V2 ; V2=high(reg1) in temp2 speichern
sub temp1,V3 ; V3=low(reg2)
;(V1-V3) in temp1 speichern
sbc temp2,V4 ; V4=high(reg2)
; (V2-V4) in temp2 speichern
cp temp1, low(65531)
cp tem2, high(65531)
brsh led2_aus
cp temp1, low(5)
cp tem2, high(5)
brsl led2_aus
Cp V1,V3
Breq led1_on
Brlo led2_on
Brsh led2_aus
Led1_on:
Sbi portb,0
Rjmp main
Led2_on:
Sbi portb, 2
Rjmp main
Led2_aus:
Cbi portb2
Rjmp main
Das Ergebnis ist: temp1 = 0x63 ( das richtige Ergeb= 0xFFFFFFFFFFFFFF63)
: temp2 = 0x46 (Erg= FFFFFFFFFFFFFF46).
Wie macht man das um den richtigen Wert zu zeigen, gibt es irgend einen Befehl für den absolut Wert.
Oder wie macht man das?
danke
reg1 = 0x0501
reg2 = 0xA2BB
main:
mov temp1, V1 ; V1=low (reg1) in temp1 speichern
mov temp2,V2 ; V2=high(reg1) in temp2 speichern
sub temp1,V3 ; V3=low(reg2)
;(V1-V3) in temp1 speichern
sbc temp2,V4 ; V4=high(reg2)
; (V2-V4) in temp2 speichern
cp temp1, low(65531)
cp tem2, high(65531)
brsh led2_aus
cp temp1, low(5)
cp tem2, high(5)
brsl led2_aus
Cp V1,V3
Breq led1_on
Brlo led2_on
Brsh led2_aus
Led1_on:
Sbi portb,0
Rjmp main
Led2_on:
Sbi portb, 2
Rjmp main
Led2_aus:
Cbi portb2
Rjmp main
Das Ergebnis ist: temp1 = 0x63 ( das richtige Ergeb= 0xFFFFFFFFFFFFFF63)
: temp2 = 0x46 (Erg= FFFFFFFFFFFFFF46).
Wie macht man das um den richtigen Wert zu zeigen, gibt es irgend einen Befehl für den absolut Wert.
Oder wie macht man das?
danke