Laboratorium Techniki Mikroprocesorowej 2 - EZ1C600 034
Szczególnym przypadkiem jest wykrycie czy jakieś wielobajtowe słowo jest wyzerowane. Optymalnym rozwiązaniem jest wtedy policzenie sumy logicznej składowych bajtów tego słowa i porównanie jej z zerem:
LD BC,(varl) ;BC<-2-ml. bajty 4-bajtowej zmiennej zm4
LD DE,(varl+2);DE<-2-st. bajty 4-bajtowej zmiennej zm4
LD A,C ;suma logiczna w akumulatorze
OR B OR E OR D
JR NZ,niezerowa ;skok gdy zm4 jest niezerowa ;tu jeśli zm4=0
Kolejnym zagadnieniem z jakim musimy się zmierzyć programując w języku maszynowym jest organizacja pętli programowych. Pisząc w asemblerze musimy sami dobrać odpowiednie rozkazy procesora i jego zasoby wewnętrzne. Pętla programowa w schemacie blokowym algorytmu zwykle jest przedstawiana następująco:
Na powyższym schemacie Ip oznacza licznik powtórzeń pętli, a l_powt - jego wartość maksymalną (wartość z przedziału 1..255). O ile to jest możliwe licznik powtórzeń pętli (Ip) powinien przez cały czas wykonania pętli programowej rezydować w rejestrach roboczych procesora. Gdy jest to niemożliwe, umieszcza się go w pamięci danych i tylko na czas modyfikacji oraz sprawdzenia warunku końca pętli ładuje do rejestrów procesora. Dosłowne przeniesienie powyższego schematu organizacji pętli programowej na język asemblera eZ80 jest następujące:
powt:
C
LD A, C
CP l_powt /porównanie lp z wartością l_powt
JR C,powt /skok na początek pętli gdy lp<l_powt
Ponieważ w językach maszynowych procesorów łatwiej jest porównać zmienną będącą licznikiem powtórzeń pętli z zerem niż z jej wartością maksymalną zwykło się ustawiać licznik pętli na wartość maksymalną by wewnątrz pętli dekrementować go aż do zera. Odpowiadające temu postępowaniu schemat blokowy i fragment programu widoczne są poniżej.
INC
LD C,0 /zainicjowanie licznika lp na wartość początkowa /etykieta początkowa pętli programowej inne działania wewn. pętli /inkrementacja licznika lp
1-12