MPLAB IDE & SUBLW 256

Zdravím
v programu MPLAB IDE v8.50 jsem si vytvořil projekt pro 16F84A
a zjistil jsem, ze jde použít příkaz SUBLW 256
funguje pod simulátorem a jde dokonce i zkompilovat…
to nevadí, že je konstanta větší než 255?
a jak se to bude chovat po nahrání do pic?

Jde mi totiž o to, když odčítám například:
30 – 35 = -5
Ale v případě pod pic 16F84
Dostanu 251 a příznak podtečení…
A teď jak z toho co nejrychleji dostat 5?
Provedu test podtečení a pak
SUBLW .255
SUBLW .1
A jsem na pěti.
SUBLW .256 by bylo rychlejší.
Konstanta může nabývat hodnoty 0-255
Ještě jsem na to kouknul po zkompilování v programu PIC Simulator IDE
A zjistil jsem, že se příkaz SUBLW .256 po kompilaci změnil na SUBLW .0
a funguje správně vrací v mém případě 5
je toto řešení v reálu funkční?

Ak odcitas prikazom SUBLW vacsie cislo ako je hodnota registra, tak ti to vyrata zaporny vysledok bez znamienka.

MOVLW	.0      ;W=0
SUBLW	.256  ;W=0
SUBLW	.257  ;W=1 (-)
MOVLW	.100  ;W=100
SUBLW	.256  ;W=156 (-)
SUBLW	.257  ;W=101 (-)

Ak operacia prekroci hranicu registra, tak z 255 ide hore na 0 a z 0 ide dole na 255.

MOVLW	.100   ;W=100
SUBLW	.430   ;W=74 (100-430 = -330 + 256 = -74)
SUBLW	.550   ;W=220 (74-550=-476 + 256 = -220)

Plati to pre lubovolne velke cisla.

MOVLW	.100   ;W=100
SUBLW	.620   ;W=8 (100-620=-520 +256 =-264 + 256 = -8)
SUBLW	.810   ;W=34 (8-810=-802 +256 +256 +256 = -34)

Po nahrati do pic sa to bude chovat presne tak isto.

Jste vtipálci! Pokud použijete sublw .256 je to totéž, jako sublw 0. Tak co vymýšlíte? Pokud je pro konstantu vyhrazeno 8 bitů, tak holt větší být nemůže a překladač to musí uříznout. Jak to uřízne, vám napíše ve varovném hlášení při překladu, stačí jen číst.

Co sa vlastne stotoznuje s mojim vysvetlenim :smiley: :smiley: :smiley:

movlw .100 sublw .256
Tak mi vysvětli, proč je v WREG 156?

No protože je to úplně stejné jako v případě

movlw .100 sublw .0
Taky je v WREG hodnota 156. Prostě jak říkám, pokud použijete parametr větší než 8 bitů, tak se vezme jen těch dolních 8 bitů.
Kdysi jsme si hráli s nedokumentovanými instrukcemi Ziloga, to bylo fajn. Ale tady filozofujete nad zjevným nesmyslem. Trochu si pohrajte s dvojkovou aritmetikou a uvědomte si, že do osmibitové konstanty 9 nebo více bitů nenacpete.
V simulátoru MPLABU si tyhle binární počty můžete snadno vyzkoušet. Ale i tužka a papír na to stačí víc než bohatě.