Jste zde

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…

Jde mi totiž o to, když odčítám například:
30 - 35 = -5
Ale v případě 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.
použít jen jeden příkaz SUBLW .256 by bylo rychlejší, jen že konstanta může nabývat pouze 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 tak jak potřebuji vrací v mém případě 5: 

MOVLW    .251    ;W=251
SUBLW    .0    ;W=5
 

je toto řešení v reálu funkční?
a jak se to bude chovat po nahrání do pic?

jsem začátečník prosím nefackovat :-)

Forums: 

Můžeš použít jedničkový doplněk nebo vynulovat jeden registr a odečíst od něj ten výsledek z W .. to by bylo asi nejrychlejší..

Děkuji už jsem se tázal snad na všech diskusních fórech, ale nikdo mi neodpověděl zda se dá odečtení od nulou naplněného registru v tomto případě použít(zda se takto nechová jen simulátor) . Chtěl jsem se tímto vyvarovat zbytečného zkoumání kde jsem udělal chybu :-)

251 je hexa 0xFB a -5 je hexa taky 0xFB. Tak nevím, kde hledáte chybu. Počítáte-li 30 - 35 , je výsledek 0xFB. Pak už jen záleží na interpretaci, jestli se vám zobrazí 251 nebo -5. Protože obě čísla mají v osmibitové reprezentaci stejné 0xFB.