Program za bojenje cifara u asembleru
Prijava dokumenta
Napomena: Neke opcije za prijavu su dostupne samo nakon kupovine dokumenta.
;Napisati program koji ucitava proizvoljan niz cifara i sve cifre na ekranu koji se pojavljuju u tom nizu boji
u zutu boju.
;Pre startovanja programa ispisati proizvoljan tekst na ekran.
DSEG SEGMENT
Poruka : DB 'Upisati niz cifara iz skupa {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}: $'
Brojevi DB 10 DUP (0)
;Definicija niza od 10 bajtova, u kome su svi bajtovi imaju
vrednost nula
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP (0)
;obavezni deo
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG ;obavezni deo
;*****************************************************
IspisStringa MACRO str
PUSH AX
PUSH DX
MOV AH, 9
;Poziva se Podinterapt za ispis stringa
MOV DX, offset str ;U DX smestamo adresu prvog znaka stringa str (offset je funkcija koja vraca
rastojanje od pocetka Data Segmenta do pocetka str promenljive iz data segmenta)
INT 21h
;Pozivamo Interapt (isisuje string)
POP DX ;POP skidanje sa steka
POP AX
ENDM
;*****************************************************
UnosKaraktera MACRO
;Unosi znakove dok korisnik ne pritisne ENTER
PUSH AX
PUSH BX
NoviZnak:
;Ucitava znake sa tastature dok se ne pritisne ENTER
MOV AH, 1
;Podinterapt za unos znaka sa izlazom
INT 21H
;Interapt 21H, uneti znak se sada nalazi u AL
CMP AL, 13
;Proveravamo da li je pritisnut ENTER (13) (poredjenje)
JE EndRD
;Ako jeste zavrsavamo rad makroa (skace na kraj makroa)
CMP AL, 48
;Poredimo AL sa 48 (sto je nula u ASCII tabeli)
JL NoviZnak
;Ako je manje od 48 onda nije cifra pa ucitavamo sledeci znak
CMP AL, 57
;Poredimo AL sa 57 (sto je devet u ASCII tabeli)
JG NoviZnak
;Ako je vece od 57 onda nije cifra pa ucitavamo sledeci znak
;Inace jeste cifra 48-57 (nula-devet)
MOV AH, 0
; (stavljamo u gornji dio regista 0 da budemo sigurni da se u cijelom
registru nalazi ucitani broj)
SUB AL, 48
;Smanjimo AL za 48 da bi u AL bio bas uneti broj, a ne njegova
reprezentacija iz ASCII tabele
MOV BX, AX
;Prebacimo broj iz AX u BX, zato sto pomocu BX moze da se pristupi
promenljivoj u data segmentu
MOV Brojevi[BX], 1
;Setujemo bajt u promenljivoj brojevi, na indeksu BX
JMP NoviZnak
;Vracamo se na unos sledeceg znaka
EndRD:
POP BX
POP AX
ENDM
;*****************************************************
Start:

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti