Sida 1 av 1

Kodningsproblem if/else(selektionsatser)

Postat: 7 november 2005, 19:27:00
av Markus
Hej programmerings eliten. Nu har rockyen problem i gen. Problemet är följande :

Om man vill ha följande c++ kod i lågnivå hur går man till väga då:

c++ kod

if(a='00001111' & b='00110011)
{
nop



}
else if (a='11100011 &='11100000')
{

nop

}

else
{


nop

}


lågnivå

?????????????????


Det som är problemet är när jag ska ha mer än ett vilkor i en if sats.

om man skulle koda en if sats en if sats med ett vilkor gör jag på föjande sätt antar jag.

if(a=00001111)
{


nop




}

lågnivå





Movf PORTA,W
Sublw B'00001111'
bz

Postat: 7 november 2005, 19:43:32
av gvs
Skulle inte något liknande fungera:

Movf PORTA,W
Sublw B'00001111'
bnz , (hoppa till else)
Movf PORTB,W
Sublw B='00110011'
bnz , (hoppa till else)
.
.
.
else......

Ja du fattar säkert. Tanken är att göra två kollar efter och om det inte stämmer efter första så hoppar man ur då.

Reserverar mig för totalt katastrofala fel i min pseudokod.

Postat: 8 november 2005, 10:00:38
av sodjan
Helt omöjligt att svara på utan att veta vilken målmiljö det skall vara för !!
Du har med lite PIC assembler, men är det PIC16 eller PIC18 ?

Postat: 8 november 2005, 11:14:55
av Icecap
Sen är det också beroende av hur många val som kan vara aktuella som avgör hur man väljer att göra det.

Är det få val är det enklare o snabbare på 1 sätt, är det många val är overheaden en del större men själva valet blir enklare.

Postat: 8 november 2005, 11:23:19
av vfr
Det beror också lite på hur värdena ligger fördelade. Ligger alla värden "nära" varandra så kan det vara lättast med en hopptabell. Ligger värdena däremot utspridda så kan isåfall tabellen bli gigantiskt stor.

Postat: 8 november 2005, 11:35:20
av sodjan
När vi ändå är inte på "beror på" frågor... :-)

Den faktiska lösning kan även bero på hur vanliga de olika alternativen är. Man kanske vill optimera det vanligaste valet så att den tar "kortast väg".