Poprzedni temat «» Następny temat
Instrukcja warunkowa
Autor Wiadomość
raichle
Nowy na forum


Dołączył: 08 Mar 2014
Posty: 1
Skąd: Wroclaw
Wysłany: 2014-03-08, 10:51   Instrukcja warunkowa

Zadanie polega na napisaniu programu w Assemblerze, który będzie zapal i gasił diody w dowolnej sekwencji po naciśnięciu klawisz odpowiadającego za dana diodę (mikro-kontroler 8051)

Napisałem coś takiego, ale nie wiem dlaczego nie działa mi ta instrukcja if.
Są to moje początki z Asemblerem. Z góry dziękuje za wszelkie wskazówki

$INCLUDE (REG51.INC)

POCZATEK:

MOV r0, 0
lampka1 EQU p3.7
lampka2 EQU p3.6
lampka3 EQU p3.5
lampka4 EQU p3.4

KLAWIATURA:

JNB P1.7,ENTER
JNB P1.6,DOWN
JNB P1.5,UP
JNB P1.4,ESCAPE
JMP KLAWIATURA

ENTER:
IF( r0 == 0 )
CLR lampka1
DEC r0
JMP KLAWIATURA
elseIF( r0 == 1 )
SETB lampka1
INC r0
JMP KLAWIATURA
endif
JMP KLAWIATURA

DOWN:
CLR lampka2
JMP KLAWIATURA


UP:
CLR lampka3
JMP KLAWIATURA

ESCAPE:
CLR lampka4
JMP KLAWIATURA

end

Z góry dziękuje za wszelką pomoc i wskazówki.
 
     
Ertew 
-.^



Wiek: 26
Dołączył: 03 Lip 2005
Posty: 1347
Skąd: Leszno
Wysłany: 2014-03-08, 11:24   

Czysty assembler '51 nie ma instrukcji if, żaden procesor '51 nie ma takiego rozkazu i żaden standard nie obejmuje takiego zapisu.

Zamiana instrukcji warunkowych if (znanych z języków wysokopoziomowych) na kod maszynowy może być dokonana przez kompilator ale nie musi, wszystko zależy od tego z jakiego kompilatora korzystasz i jakie opcje włączyłeś podczas kompilacji.

Jeśli tak ma wyglądać Twój program, poszukaj jak działa instrukcja JB/JNB, JZ/JNZ lub CJNE. Jedna lub dwie z tych 5 instrukcji umożliwią Ci właściwe rozwiązanie problemu.
 
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2014-03-09, 20:25   

IF w makro asemblerze jest, ale to nie jest instrukcja mikrokontrolera, tylko instrukcja do kompilacji warunkowej (przydatne gdy mamy kilka wariantów kodu). Ale jak kolega wyżej wspomniał, w asemblerze nie ma czegoś takiego jak IF (jako instrukcja MCU).
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,02 sekundy. Zapytań do SQL: 10