You are on page 1of 32

Vjeba 1: Napisati program koji u registar bx upisuje broj 5, a onda ga iz registra bx prebacuje

u ax.
.MODEL small
.DATA
.STACK
.CODE
Start:
mov bx, 5
mov ax, bx
mov ax, 4c00h
int 21h
END Start

Vjeba 2:
Napisati program koji ispisuje poruku "Zdravo svima!!!" na ekran.
Kada to proradi proiriti program da ispie dvije poruke i to jedu ispod druge.
a)
.MODEL small
.DATA
string DB "Zdravo svima!$"
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov dx, OFFSET string
mov ah, 09h
int 21h
mov ax, 4c00h
int 21h
END Start
b)
.MODEL small
.DATA
string DB "Zdravo svima!$"
pok_str DW string
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov dx, pok_str
mov ah, 09h
int 21h
mov ax, 4c00h
int 21h
END Start

Vjeba 3:

Napisati program koji na ekran ispisuje broj 3 (koristiti prekid za ispis znaka).

.MODEL small
.DATA
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov dl, '3'
mov ah, 02h
int 21h
mov ax, 4c00h
int 21h
END Start

Vjeba 4:

Napisati program koji unosi znak s tastature i odmah ga zatim ispisuje na ekran.

.MODEL small
.DATA
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov ah, 01h
int 21h
mov dl, al
mov ah, 02h
int 21h
mov ax, 4c00h
int 21h
END Start

Vjeba 5:
ispisuje 3.

Napii program koji simulira for petlju. npr. program koji 10 puta na ekranu

.MODEL small
.DATA
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov cx, 0
ponovo:
cmp cx, 10
jge kraj
mov dl, '3'

mov ah, 02h


int 21h
inc cx
jmp ponovo
kraj:
mov ax, 4c00h
int 21h
END Start

Vjeba 6:
Napii program koji simulira if-else grananje. Npr. Program koji provjerava da li
je broj u registru AX (prethodno upiemo neki broj) vei od 10 i ako je u BX upisati 0, a ako nije
u BX upisati FFFFh.
.MODEL small
.DATA
stringa DB "Upisao 0!$"
stringb DB "Upisao 1!$"
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov ax, 20
mov cx, ax
cmp cx, 10
jge upis
mov bx, 0FFFh
mov dx, OFFSET stringa
mov ah, 09h
int 21h
jmp kraj
upis:
mov bx, 0
mov dx, OFFSET stringb
mov ah, 09h
int 21h
kraj:
mov ax, 4c00h
int 21h
END Start

Vjeba 7:
kao string.

Napisati program koji s tastature skuplja 5 znakova i onda ih na ekran ispisuje

.MODEL small
.DATA
str DB 5 DUP ()
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
mov si, 0
mov cx, 0
petlja:
cmp cx, 5
jge ispis
mov ah, 01h
int 21h
mov str[si], al
inc si
inc cx
jmp petlja
ispis :
mov str[si], '$'
mov dl, 10
mov ah, 02h
int 21h
mov dx, OFFSET str
mov ah, 09h
int 21h
mov ax, 4c00h
int 21h
END Start

Vjeba 8: Napisati program koji:


a) Unosi 10 jednoznamenkastih brojeva i sprema ih u niz
b) Ispisuje sve elemente niza u jednoj liniji (s razmakom izmeu pojedinih
elemenata)
c) Nalazi najmanji element niza i ispie ga
d) Nalazi najvei element niza i ispie ga
e) Sortira niz i ispisuje sortirani niz
.MODEL small
.DATA
zvjezdice DB "***************************************************$"
zvjezdice1 DB "********************************$"
zvjezdice2 DB "**********************$"
pozdrav1 DB "* UPISIVANJE PRETRAZIVANJE I SORTIRANJE NIZA!!! *$"
pozdrav2 DB "* TRAZENJE MIN CLANA NIZA!!! *$"
pozdrav3 DB "* TRAZENJE MAX CLANA NIZA!!! *$"
sort DB "* SORTIRANI NIZ!!! *$"
minstr DB "Najmanji clan niza je: $"
maxstr DB "Najveci clan niza je: $"
str DB 10 DUP ()
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
;********************************POZDRAVNA PORUKA
mov dx, OFFSET zvjezdice
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET pozdrav1
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET zvjezdice
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h

mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ POZDRAVA
;********************************UNOS LANOVA NIZA
;Niz unosimo lano po lan
mov si, 0
mov cx, 0
petlja:
cmp cx, 10
je ispis
mov ah, 01h
int 21h
mov str[si], al
inc si
inc cx
jmp petlja
;KRAJU UNOSA
;*************************ISPIS LANOVA NIZA U NOVI RED
ispis:
mov str[si], '$'
mov dl, 13
mov ah, 02h
int 21h
mov si, 0
ispetlja:
mov dl, str[si]
mov ah, 02h
int 21h
mov dl, 32
mov ah, 02h
int 21h
inc si
cmp si ,10
jl ispetlja
;KRAJ ISPISA LANOVA NIZA U NOVI RED
;********************************NOVI RED
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13

mov ah, 02h


int 21h
;********************************NAJMANJI LAN
;Najmanji lan niza traimo na nain da postavimo prvi lan kao najmanji i zatim
;prelazimo po svim lanovima niza i taj najmanji prvi lan usporeujemo sa s
;ostalim lanovima niza, ako naiemo na manjega njega zapiemo kao najmanjega i
;idemo dalja sa pretraivanjem niza, dok ne doemo do kraja niza
;*****POZDRAVNA PORUKA MIN
mov dx, OFFSET zvjezdice1
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET pozdrav2
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET zvjezdice1
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ POZDRAVA MIN
mov dx, OFFSET minstr
mov ah, 09h
int 21h
mov si, 0
mov dl, str[si]
minpetlja:
inc si
cmp si, 10
jge minispis
cmp str[si], dl
jge minpetlja
mov dl, str[si]
jmp minpetlja
minispis:
mov ah, 02h
int 21h
;KRAJ NAJMANJEG LANA
mov dl, 10

mov ah, 02h


int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;********************************NAJVEI LAN
;Najvei lan traimo slino kao i najmanji.
;*****POZDRAVNA PORUKA MAX
mov dx, OFFSET zvjezdice1
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET pozdrav3
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET zvjezdice1
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
KRAJ POZDRAVA MIN
mov dx, OFFSET maxstr
mov ah, 09h
int 21h
mov si, 0
mov dl, str[si]
maxpetlja:
inc si
cmp si, 10
jge maxispis
cmp str[si], dl
jle maxpetlja

mov dl, str[si]


jmp maxpetlja
maxispis:
mov ah, 02h
int 21h
;KRAJ NAJVEEG LANA
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;********************************SORTIRANJE NIZA
;*****POZDRAVNA PORUKA SORTIRANO
mov dx, OFFSET zvjezdice2
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET sort
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx, OFFSET zvjezdice2
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ POZDRAVA SORTIRANO
;********************************SORTIRANJE
;bubble sort - Sortiranje se vri na nain da se koriste dva brojaa u nizu.
;Prvi broja slui nam za pregledavanje lanova niza...dok nam drugi slui
;za usporeivanje preglednog lana niza sa svim preostalim lanovima niza.
;Kako bi se lake napisao kod poeljno je u komentarima zapisati pseudo kod
;bubble sorta

;si = i , di = j
mov si, 0
mov di, 0
fora:
;for (i=0;i<10;i++)
cmp si, 10
jge krajsort
;
for (j=i;j<10;j++)
mov di, si
forb:
;
if pod(i)>pod(j)
mov dl, str[di]
mov al, str[si]
cmp al, dl
jle endforb
;
temp=pod(i)
mov dl, str[si]
pod(i)=pod(j)
mov al, str[di]
mov str[si], al
pod(j)=temp
mov str[di], dl
jmp endforb
endforb:
inc di
cmp di, 10
jge endfora
jmp forb
endfora:
inc si
jmp fora
krajsort:
mov dx, OFFSET str
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ SORTIRANJA NIZA
;********************************KRAJ PROGRAMA
;Oekujemo unos bilo kojeg znaka kako bi se vidio rezultat
;prikazan na ekranu, inae e se .exe program izvriti i
;zatvoriti ekran pa rezultat nee biti vidljiv
mov ah, 01h
int 21h
mov ax, 4C00h
int 21h
END Start

Vjeba 9: Vjebu 8 izmijeniti na nain da se traenje minimalnog, maksimalnog elementa i


sortiranje rade u proceduri, a za unos 1 znaka s tastature, ispis stringa i ispis niza
potrebno je napisati makroe. Makro za unos 1 znaka nema nikakve argumente dok
makro za ispis stringa kao argument uzima adresu stringa koji se ispisuje, a makro
za ispis niza kao argument uzima adresu niza i broj elemenata (ovaj makro ispisuje
niz na nain da se izmeu pojedinih znakova ispisuje razmak).
;------------------------------------------------------------------------------;********************* PROGRAM ZA OBRADU NIZA INTEGERA ***********************
;*******************************************************************************
;**************************
by IVICA CRNJAC ***************************
;*******************************************************************************
;*********************
asembler za 80x86 procesor
******************
;------------------------------------------------------------------------------.MODEL small
.DATA
zvjezdice DB "***************************************************$"
zvjezdice1 DB "********************************$"
zvjezdice2 DB "**********************$"
pozdrav1 DB "* UPISIVANJE PRETRAZIVANJE I SORTIRANJE NIZA!!! *$"
pozdrav2 DB "* TRAZENJE MIN CLANA NIZA!!! *$"
pozdrav3 DB "* TRAZENJE MAX CLANA NIZA!!! *$"
sort DB "* SORTIRANI NIZ!!! *$"
minstr DB "Najmanji clan niza je: $"
maxstr DB "Najveci clan niza je: $"
sortstr DB "Sortiran niz <od najmanjeg ka najveem elementu!>: $"
n DW 0
adrstr DW 0
adrniz DW 0
str DB 10 DUP ()
.STACK
.CODE
;------------------------------------------------------------------------------;*******************************************************************************
;*************
DEKLARACIJA PROCEDURA
*********************
;*******************************************************************************
;------------------------------------------------------------------------------;*******************************************************************************
;
TRAENJE NAJMANJEG LANA NIZA
;*******************************************************************************
minclan PROC NEAR
mov si, 0
mov dl, str[si]
minpetlja:
inc si
cmp si, 10
jge minispis
cmp str[si], dl
jge minpetlja
mov dl, str[si]
jmp minpetlja
minispis:
mov ah, 02h
int 21h

ret
minclan ENDP
;ENDP TRAENJE NAJMANJEG LANA NIZA
;*******************************************************************************
;
TRAENJE NAJVEEG LANA NIZA
;*******************************************************************************
maxclan PROC NEAR
mov si, 0
mov dl, str[si]
maxpetlja:
inc si
cmp si, 10
jge maxispis
cmp str[si], dl
jle maxpetlja
mov dl, str[si]
jmp maxpetlja
maxispis:
mov ah, 02h
int 21h
ret
maxclan ENDP
;ENDP TRAENJE NAJVEEG LANA NIZA
;*******************************************************************************
;
SORTIRANJE NIZA
;*******************************************************************************
sortiranje PROC NEAR
;si = i , di = j
mov si, 0
mov di, 0

;
;

endfora:

fora:
;for (i=0;i<10;i++)
cmp si, 10
jge krajsort
; for (j=i;j<10;j++)
mov di, si
forb:
if pod(i)>pod(j)
mov dl, str[di]
mov al, str[si]
cmp al, dl
jle endforb
;temp=pod(i)
mov dl, str[si]
pod(i)=pod(j)
mov al, str[di]
mov str[si], al
pod(j)=temp
mov str[di], dl
jmp endforb
endforb:
inc di
cmp di, 10
jge endfora
jmp forb

inc si
jmp fora
krajsort:
mov dx, OFFSET str
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
ret
sortiranje ENDP
;ENDP SORTIRANJE NIZA
;KRAJ DEKLARACIJE PROCEDURA
;*******************************************************************************
;------------------------------------------------------------------------------;*******************************************************************************
;*****************
DEKLARACIJA MAKROA
*********************
;*******************************************************************************
;------------------------------------------------------------------------------;*******************************************************************************
;
UNOS ZNAKA S TASTATURE
;*******************************************************************************
;Skuplja znak po znak s tastature i sprema u niz koji se zove str[si]
;koji deklarirano ima 10 elemenata
unosznaka MACRO
mov ah, 01h
int 21h
mov str[si], al
ENDM
;ENDM UNOS ZNAKA S TASTATURE
;*******************************************************************************
;
ISPIS STRINGA
;*******************************************************************************
ispisstringa MACRO
mov dx, adrstr
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
ENDM
;ENDM ISPIS STRINGA

;*******************************************************************************
;
ISPIS NIZA
;*******************************************************************************
;Ispisuje niz koji je definiran poetnom adresom i brojem elemenata
ispisniza MACRO
LOCAL ispetlja:
mov bx, adrniz
mov cx, 0
ispetlja:
mov dl, [bx]
mov ah, 02h
int 21h
mov dl, 32
mov ah, 02h
int 21h
inc bx
inc cx
cmp cx, n
jl ispetlja
ENDM
;ENDM ISPIS NIZA
;KRAJ DEKLARACIJE MAKROA
;*******************************************************************************
;------------------------------------------------------------------------------;*******************************************************************************
;*******************************************************************************
;**************************
START PROGRAMA
***************************
;*******************************************************************************
;*******************************************************************************
;------------------------------------------------------------------------------Start:
mov ax, @DATA
mov ds, ax
;*******************************************************************************
;
POZDRAVNA PORUKA
;*******************************************************************************
mov adrstr, OFFSET zvjezdice
ispisstringa [adrstr]
mov adrstr, OFFSET pozdrav1
ispisstringa [adrstr]
mov adrstr, OFFSET zvjezdice
ispisstringa [adrstr]
;NOVI RED i POETAK REDA
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ POZDRAVA
;*******************************************************************************

;*******************************************************************************
;
UNOS LANOVA NIZA
;*******************************************************************************
;Niz unosimo lano po lan
mov si, 0
mov cx, 0
petlja:
cmp cx, 10
je krajunosa
unosznaka
inc si
inc cx
jmp petlja
;KRAJU UNOSA
krajunosa:
;*******************************************************************************
mov str[si], '$'
mov n, si
mov dl, 13
mov ah, 02h
int 21h
;*******************************************************************************
;
ISPIS LANOVA NIZA U NOVI RED
;*******************************************************************************
mov adrniz, OFFSET str[0]
ispisniza[adrniz, n]
;KRAJ ISPISA LANOVA NIZA U NOVI RED
;*******************************************************************************
;NOVI RED
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;*******************************************************************************
;*******************************************************************************
;
NAJMANJI LAN
;*******************************************************************************
;Najmanji lan niza traimo na nain da postavimo prvi lan kao najmanji i zatim
;prelazimo po svim lanovima niza i taj najmanji prvi lan usporeujemo sa s
;ostalim lanovima niza, ako naiemo na manjega njega zapiemo kao najmanjega i
;idemo dalja sa pretraivanjem niza, dok ne doemo do kraja niza
;POZDRAVNA PORUKA
mov adrstr, OFFSET zvjezdice1
ispisstringa [adrstr]

mov adrstr, OFFSET pozdrav2


ispisstringa [adrstr]
mov adrstr, OFFSET zvjezdice1
ispisstringa [adrstr]
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ POZDRAVA MIN
mov adrstr, OFFSET minstr
ispisstringa [adrstr]
CALL minclan
;KRAJ NAJMANJEG LANA
;*******************************************************************************
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;*******************************************************************************
;
NAJVEI LAN
;*******************************************************************************
;Najvei lan traimo slino kao i najmanji.
;POZDRAVNA PORUKA MAX
mov adrstr, OFFSET zvjezdice1
ispisstringa [adrstr]
mov adrstr, OFFSET pozdrav3
ispisstringa [adrstr]
mov adrstr, OFFSET zvjezdice1
ispisstringa [adrstr]
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;KRAJ POZDRAVA MIN
mov adrstr, OFFSET maxstr
ispisstringa [adrstr]
CALL maxclan
;KRAJ NAJVEEG LANA
;*******************************************************************************

mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;*******************************************************************************
;
SORTIRANJE NIZA
;*******************************************************************************
;POZDRAVNA PORUKA SORTIRANO
mov adrstr, OFFSET zvjezdice2
ispisstringa [adrstr]
mov adrstr, OFFSET sort
ispisstringa [adrstr]
mov adrstr, OFFSET zvjezdice2
ispisstringa [adrstr]
;KRAJ POZDRAVA SORTIRANO
;SORTIRANJE
;*******************************************************************************
;bubble sort - Sortiranje se vri na nain da se koriste dva brojaa u nizu.
;Prvi broja slui nam za pregledavanje lanova niza...dok nam drugi slui
;za usporeivanje preglednog lana niza sa svim preostalim lanovima niza.
;Kako bi se lake napisao kod poeljno je u komentarima zapisati pseudo kod
;bubble sorta
mov adrstr, OFFSET sortstr
ispisstringa [adrstr]
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
CALL sortiranje
;KRAJ SORTIRANJA NIZA
;*******************************************************************************
;Oekujemo unos bilo kojeg znaka kako bi se vidio rezultat
;prikazan na ekranu, inae e se .exe program izvriti i
;zatvoriti ekran pa rezultat nee biti vidljiv
mov ah, 01h
int 21h
mov ax, 4C00h
int 21h
END Start
;*******************************************************************************
;
KRAJ PROGRAMA
;*******************************************************************************
;-------------------------------------------------------------------------------

Vjeba 10: Napisati program koji unosi 5 znakova s tastature ili prestaje s radom ako se unese
3. Pri tome koristiti makro za unos znaka s tastature.
.MODEL small
.DATA
niz DB 6 DUP (0)
.STACK
.CODE
;*******************************************************************************
;
UNOS ZNAKA S TASTATURE
;*******************************************************************************
;Skuplja znak po znak s tastature i sprema u niz koji se zove str[si]
;koji deklarirano ima 10 elemenata
unosznaka MACRO
mov ah, 01h
int 21h
mov niz[si], al
ENDM
;ENDM UNOS ZNAKA S TASTATURE
;*******************************************************************************
;
POETAK PROGRAMA
;*******************************************************************************
Start:
mov ax, @DATA
mov ds, ax
mov cx, 0
petlja:
cmp cx, 5
jge kraj
mov si, cx
unosznaka
inc cx
cmp al, '3'
je kraj
jmp petlja
kraj:
;novi red
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;ispis niza
inc si
mov niz[si], '$'
mov dx, OFFSET niz
mov ah, 09h
int 21h
mov ah, 01h
int 21h
mov ah, 4Ch
int 21h
END Start

Vjeba 11: Napisati program koji prebacuje unaprijed definirani string (npr. "Zdravo svima!!!")
s jedne mem. lokacije na drugu, i onda ga ispisuje. String se prebacuje u niz
definiran s ostalim varijablama. Prebacivanje stringa napraviti unutar procedure.
a) Program uzima da je string poznate duljine.
b) Duina stringa nije poznata.
c) String ispisati u obrnutom redoslijedu znak po znak i pri tome koristiti stog
(duljina stringa nije poznata).
11.a.

rjeenje

.MODEL small
.DATA
string DB "Pozdrav!$"
niz DB 9 DUP ()
pokstr DW string
pokniz DW niz
.STACK
.CODE
;------------------------------------------------------------------------------;
DEKLARACIJA PROCEDURA
;------------------------------------------------------------------------------premjesti PROC NEAR
mov si, pokstr
mov di, pokniz
mov cx, 9
rep movsb
ret
premjesti ENDP
;*******************************************************************************
;
START PROGRAMA
;*******************************************************************************
Start:
mov ax, @DATA
mov ds, ax
mov es, ax
call premjesti
;s orginalne adrese
mov dx, pokstr
mov ah, 09h
int 21h
;novi red
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;s kopirane adrese
mov dx, pokniz
mov ah, 09h
int 21h
;novi red

mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;kraj
mov ah, 01h
int 21h
mov ah, 4Ch
int 21h
END Start

11.b.

rjeenje

.MODEL small
.DATA
string DB "Pozdrav!Svima koliko vas ima!$"
niz DB 50 DUP ()
pokstr DW string
pokniz DW niz
.STACK
.CODE
;------------------------------------------------------------------------------;
DEKLARACIJA PROCEDURA
;------------------------------------------------------------------------------zamjeni PROC NEAR
mov si, pokstr
mov di, pokniz
petlja:
movsb
inc cx
mov al, [si]
cmp al,'$'
je kraj
jmp petlja
kraj:
ret
zamjeni ENDP
;kraj
;*******************************************************************************
;
START PROGRAMA
;*******************************************************************************
Start:
mov ax, @DATA
mov ds, ax
mov es, ax
mov cx, 0
call zamjeni
inc cx
mov si, cx
mov niz[si], '$'
;s orginalne adrese

mov dx, pokstr


mov ah, 09h
int 21h
;novi red
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;s kopirane adrese
mov dx, pokniz
mov ah, 09h
int 21h
;kraj
mov ah, 01h
int 21h
mov ah, 4Ch
int 21h
END Start

11.c.
.MODEL small
.DATA
string DB "Pozdrav!Svima koliko vas ima!$"
niz DB 50 DUP ()
pokstr DW string
pokniz DW niz
.STACK
.CODE
;------------------------------------------------------------------------------;
DEKLARACIJA PROCEDURA
;------------------------------------------------------------------------------zamjeni PROC NEAR
mov si, pokstr
mov di, pokniz
petlja:
movsb
inc cx
mov al, [si]
cmp al,'$'
je kraj
jmp petlja
kraj:
ret
zamjeni ENDP
;kraj
;*******************************************************************************
;
START PROGRAMA
;*******************************************************************************
Start:
mov ax, @DATA
mov ds, ax
mov es, ax

mov cx, 0
call zamjeni
inc cx
mov si, cx
mov niz[si], '$'
;s orginalne adrese
mov dx, pokstr
mov ah, 09h
int 21h
;novi red
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;s kopirane adrese
mov dx, pokniz
mov ah, 09h
int 21h
;novi red
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;s orginalne adrese obrnuti redoslijed
mov si, pokstr
petlja_red:
mov bx, [si]
cmp bl, '$'
je kraj_red
push bx
inc si
jmp petlja_red
kraj_red:
;printanje obrnuti redoslijed
petlja_obispis:
pop dx
mov ah, 02h
int 21h
dec si
cmp si, pokstr
jne petlja_obispis
;kraj
mov ah, 01h
int 21h
mov ah, 4Ch
int 21h
END Start

Vjeba 12: Napraviti program koji zbraja i oduzima dva 32-bitna broja i rezultat zbrajanja
sprema u AX i BX (u AX ide viih 16 bita sume), a rezultat oduzimanja u CX i DX (u CX
ide viih 16 bita razlike).
.MODEL small
.DATA
var1 DD 69DBD151h
var2 DD 2959ED51h
suma DD 0h
razlika DD 0h
ptr1 DW var1
ptr2 DW var2
ptrs DW suma
ptrr DW razlika
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
;START PROGRAMA
;------------------------------------------------------------------------------;PRVI BROJ - U AX VIIH 16 BITA, U BX NIIH 16 BITA
mov si, OFFSET var1
mov bx, [si]
inc si
inc si
mov ax, [si]
;DRUGI BROJ - U CX VIIH 16 BITA, U DX NIIH 16 BITA
mov si, OFFSET var2
mov dx,[si]
inc si
inc si
mov cx, [si]
;------------------------------------------------------------------------------;ZBROJ
add bx, dx
adc ax, cx
;
;------------------------------------------------------------------------------;PRVI BROJ - U AX VIIH 16 BITA, U BX NIIH 16 BITA
mov si, OFFSET var1
mov bx, [si]
inc si
inc si
mov ax, [si]
;DRUGI BROJ - U CX VIIH 16 BITA, U DX NIIH 16 BITA
mov si, OFFSET var2
mov dx,[si]
inc si
inc si
mov cx, [si]
;-------------------------------------------------------------------------------

;ODUZIMANJE
sub ax, cx
sbb bx, dx
;------------------------------------------------------------------------------;KRAJ PROGRAMA
mov ah, 01h
int 21h
mov ax, 4C00h
int 21h
END Start

Vjeba 13: Ispisati neki heksadecimalni broj na ekranu u decimalnom obliku.


.MODEL small
.DATA
niz DB 10 DUP ('$')
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
;Start programa
;------------------------------------------------------------------------------mov si, 0
mov ax, 9FAh
mov bx, 10
;broj
petlja:
div bl
add ah, 48
mov niz[si], ah
inc si
mov ah, 0
cmp al, 0
jne petlja
;ispis
dec si
ispis:
mov dl, niz[si]
mov ah, 02h
int 21h
dec si
cmp si,0
jge ispis
;+48---------------------------------------------------------------------------;KRAJ PROGRAMA
mov ah, 01h
int 21h
mov ax, 4C00h
int 21h
END Start

Vjeba 14: Ispisati neki heksadecimalni broj na ekranu u heksadecimalnom obliku.


.MODEL small
.DATA
niz DB 10 DUP ('$')
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
;Start programa
;------------------------------------------------------------------------------mov si, 0
mov ax, 9FAh
mov bx, 10h
;broj
petlja:
div bl
cmp ah, 10
jl manji
add ah, 55
jmp veci
manji:
add ah, 48
veci:
mov niz[si], ah
inc si
mov ah, 0
cmp al, 0
jne petlja
;ispis
dec si
ispis:
mov dl, niz[si]
mov ah, 02h
int 21h
dec si
cmp si,0
jge ispis
;+48---------------------------------------------------------------------------;KRAJ PROGRAMA
mov ah, 01h
int 21h
mov ax, 4C00h
int 21h
END Start

Vjeba 15: Napisati program koji za unesenih 10 znakova provjerava da li su 0, 2, 4 i 6 bit


postavljeni u 1. Uz to treba brojiti koliko ima takvih znakova.
.MODEL small
.DATA
naslov DB 'Upisite 10 znakova!$'
rezultat DB 'U ovom nizu ima :$'
rezultat1 DB 'BIT No.$'
rezultat2 DB 'No. CLANA!$'
nula DB 0
dvica DB 0
cetvorki DB 0
sestica DB 0
niz DB 10 DUP (0)
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
;
mov dx,OFFSET naslov
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;unos 10 znakova niza
mov si, 0
ponovo:
cmp si, 10
jge kraj_unosa
mov ah, 01h
int 21h
mov niz[si], al
inc si
jmp ponovo
kraj_unosa:
mov niz[si], '$'
;provjera da li je 0 bit u 1
mov si, -1
mov cl, 0
ponovi_test0:
inc si
mov dl, niz[si]
cmp dl, '$'
je kraj_test0
and dl,00000001b
cmp dl, 0
je ponovi_test0
inc cl

jmp ponovi_test0
kraj_test0:
mov bh, cl
mov nula, bh
;
;provjera da li je 2 bit u 1
mov si, -1
mov cl, 0
ponovi_test2:
inc si
mov dl, niz[si]
cmp dl, '$'
je kraj_test2
and dl,00000100b
cmp dl, 0
je ponovi_test2
inc cl
jmp ponovi_test2
kraj_test2:
mov bl, cl
mov dvica, bl
;
;provjera da li je 4 bit u 1
mov si, -1
mov cl, 0
ponovi_test4:
inc si
mov dl, niz[si]
cmp dl, '$'
je kraj_test4
and dl,00010000b
cmp dl, 0
je ponovi_test4
inc cl
jmp ponovi_test4
kraj_test4:
mov ch, cl
mov cetvorki, ch
;
;provjera da li je 6 bit u 1
mov si, -1
mov cl, 0
ponovi_test6:
inc si
mov dl, niz[si]
cmp dl, '$'
je kraj_test6
and dl,00000001b
cmp dl, 0
je ponovi_test6
inc cl
jmp ponovi_test6
kraj_test6:
mov sestica, cl
;

kraj_testa:
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dx,OFFSET rezultat
mov ah, 09h
int 21h
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;Naslov tabele
mov dl, 9
mov ah, 02h
int 21h
mov dx,OFFSET rezultat1
mov ah, 09h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dx,OFFSET rezultat2
mov ah, 09h
int 21h
;TAbela
;sestice
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, '6'
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h

add cl, 48
mov dl, cl
mov ah, 02h
int 21h
;cetvorke
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, '4'
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov cl, ch
add cl, 48
mov dl, cl
mov ah, 02h
int 21h
;
;dvice
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, '2'
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov cl, bl
add cl, 48
mov dl, cl

mov ah, 02h


int 21h
;
;nule
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, '0'
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov dl, 9
mov ah, 02h
int 21h
mov cl, bh
add cl, 48
mov dl, cl
mov ah, 02h
int 21h
;
kraj:
mov ah, 01h
int 21h
mov ax, 4c00h
int 21h
END Start

Vjeba 16: Napisati program koji koritenjem procedura i makroa uzima string s tastature,
ifrira ga, ispisuje ifriranog, deifrira i ispisuje deifriranog. U rjeavanju zadatka
koristiti prekid za unos stringa s tastature.
.MODEL small
.DATA
koder DB 01010101b
niz DB 11 DUP (13)
sifrirani DB 11 DUP ()
desifrirani DB 11 DUP ()
.STACK
.CODE
Start:
mov ax, @DATA
mov ds, ax
;-----------mov dx, OFFSET niz
mov niz[0], 10
mov ah, 0Ah
int 21h

;------------mov cx, 0
petlja:
cmp cx, 11
jge kraj_petlje
mov si, cx
mov bl, koder
xor bl, niz[si]
mov sifrirani[si], bl
inc cx
jmp petlja
kraj_petlje:
mov dl, '$'
mov sifrirani[12],dl
;
mov dx, OFFSET sifrirani
mov ah, 09h
int 21h
;
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
;
mov cx, 0
petlja1:
cmp cx, 11
jge kraj_petlje1
mov si, cx
mov bl, koder
xor bl, sifrirani[si]
mov desifrirani[si], bl
inc cx
jmp petlja1
kraj_petlje1:
mov dl, '$'
mov desifrirani[12],dl
;
mov dx, OFFSET desifrirani
mov ah, 09h
int 21h
kraj:
mov ah, 01h
int 21h
mov ax, 4c00h
int 21h
END Start

Vjeba 17: Ispisati 16 bitni broj u binarnom obliku koritenjem naredbi za rotiranje
.MODEL small
.DATA
binarno DB 'Broj u binarnom zapisu: $'
.STACK
.CODE
;------------------------------------------------------------------------------novi_red PROC near
mov dl, 10
mov ah, 02h
int 21h
mov dl, 13
mov ah, 02h
int 21h
ret
novi_red ENDP
;------------------------------------------------------------------------------Start:
mov ax, @DATA
mov ds, ax
mov bx, 0A23h
;------------------------------------------------------------------------------call novi_red
mov dx, OFFSET binarno
mov ah, 09h
int 21h
call novi_red
;------------------------------------------------------------------------------;binarni zapis broja
;------------------------------------------------------------------------------mov cx, 16
petlja:
shl bx,1
lahf
and ah, 00000001b
cmp ah, 0
je cf_0
mov dl, '1'
mov ah, 02h
int 21h
jmp ptlj
cf_0:
mov dl, '0'
mov ah, 02h
int 21h
ptlj:
loop petlja
;------------------------------------------------------------------------------kraj:
mov ah, 01h
int 21h
mov ax, 4c00h
int 21h
END Start

You might also like