Ostale teme
 

MALI SAVETI ZA POČETNIKE IZ ASEMBLERA ZA INTEL 8051

Asembler je vrlo zahvalan programerski jezik ako želite skoro totalnu kontrolu i uvid u tok programa. To je pravi “inženjerski” jezik. Međutim, može biti jako naporan ako ga koristite u najosnovnijem obliku. Na primer, ako u programu imamo 10 promenljivih, početnici ih najčešće nazivaju njihovim osnovnim imenima - R0, R1, 20h, 21h ... Ovaj način označavanja obično jako zakomplikuje duži program. Ne samo da je program teško pisati, već je strašno zamorno tražiti greške u njemu. Srećom, asemblerski kompajleri podržavaju mnemoničke i druge olakšice pri pisanju programa. Registrima, bitovima i konstantama moguće je dodeljivanje imena, obično u zaglavlju programa, npr:

Temperatura .reg 30h
Vlaznost .reg 31h
Pritisak .reg 32h
Kontrol_bit1 .reg 20h.1
Kontrol_bit2 .reg 20h.2
MAX_TEMP .equ 50d

Dalje u programu umesto registara, bitova i konstanti pišu se njihove mnemoničke oznake. Umesto:

mov 30h,#50d
mov a,31h
jb 20h.1,Labela1

mnogo je preglednije:

mov Temperatura,#MAX_TEMP
mov a,Vlaznost
jb Kontrol_bit1,Labela1

Takođe, na ovaj način maximalna temperatura se može zadati u zaglavlju i ne mora se tragati u programu za svim mestima gde je korišćena.
Moguće je i ovako nešto:

Temp .reg 30h
Vlaznost .reg Temp+1
Pritisak .reg Temp+2

Ovo je zgodno kad neki paket registara treba prebaciti na druge lokacije - dovoljno je promeniti lokaciju veličini Temp.

Ako se koristi nekoliko kontrolnih bitova - flegova, korisno je uraditi sledeće:

Flags .reg 20h
Kontrol_bit1 .reg Flags.0
Kontrol_bit2 .reg Flags.1

U fazi ispitivanja, program se ne upisuje u EPROM, već se izvršava iz RAM-a. U tu svrhu se koriste eprom emulatori ili mali programi koji se smeštaju u eprom i preusmeravaju korisnički kod u RAM. Ovaj drugi način ima za posledicu da program ima ofset koji ne utiče samo na početnu adresu programa već i na vektorske adrese interapta. Umesto da se piše:

.org 8003h
ljmp Ext_interapt_0
.org 8023h
ljmp Serijski_interapt
.org 8100h
ljmp Start

mnogo je korisnije:

Ofset .equ 8000h
.org Ofset+03h
ljmp Ext_interapt_0
.org Ofset+23h
ljmp Serijski_interapt
.org Ofset+100h
ljmp Start

Korišćenjem ovih i sličnih olakšica u organizaciji, neuporedivo je lakše pisati program i otklanjati greške u njemu. Sve što se uradi u zaglavlju reflektuje se na ceo program i nema potrebe za mukotrpnim listanjem i pretraživanjem.


(Sve naredbe korišćene u primerima se odnose na asembler firme ‘2500AD SOFTWARE, INC’ )


Pročitajte više o ovoj temi
Smart LCD, šta i kako?
LOOK-UP tabele
Softverska kašnjenja
Serijska komunikacija
Mapiranje
Razvojni sistem za intelov mikrokontroler i8031 i i8051

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji