Sei sulla pagina 1di 1

mesaj.

asm
.model small
.stack 200h
.data
mesaj db 'Sarbatori Fericite !', '$'
.code
main label
mov ax,@data
mov ds,ax
afisare:
;TEMA: afisare sir terminat cu caract $

iesire:
;TEMA: iesire program
end main

suma.asm
.model small
.stack 200h
.data
a db 3
b db 5
suma db ?
.code
main label
mov ax,@data
mov ds,ax
mov bx, offset a
mov al, [bx]
mov bx, offset b
add al,[bx]
mov bx, offset suma
mov [bx],al
afisare:
;TEMA: completati pt afisare
iesire:
;TEMA: completati pt iesire din
program
end main

sumasir.asm
.model small
.stack 200h
.data
sir db 1,1,1,1,1,1,1,1,1
suma db ?
.code
main label
mov ax,@data
mov ds,ax
mov cx,1
mov bx, offset sir
mov al, [bx]
etich: inc bx
inc cx

add al,[bx]
cmp cx,8 ; suma va fi cu 1 mai mult, adica 9
jle etich
mov bx, offset suma
mov [bx],al
afisare:
;TEMA: completati pt afisare
iesire:
;TEMA: completati pt iesire din program
end main

maximsir.asm
Stiva

SEGMENT PARA STACK 'STACK'


DW 512 DUP(?)
Stiva
ENDS
Data
SEGMENT
PARA
PUBLIC 'DATA'
sir db 1,7,9,2,3,5,4,6,0,8 ; 10 elem in sir
maxim db ?
Data
ENDS
Cod
SEGMENT PARA PUBLIC 'CODE'
MAIN PROC FAR
ASSUME cs:Cod, ds:Data, ss:Stiva,ES: nothing

Push
Xor
Push
Mov
Mov
mov cx, 9

ds
ax,ax
ax
ax,data
ds,ax
; trebuie o valoare cu 1 mai mica decat

nr de elem al sirului

mov si, offset sir


mov ah,[si]
et1: cmp ah,[si+1]
jge et
mov ah,[si+1]
et: inc si
loop et1
afisare:
;TEMA: completati pt afisare
iesire:
;TEMA: completati pt iesire din program
end main
Ret
MAIN
ENDP
Cod
ENDS
END
MAIN

Sumatast.asm
.model small
.stack 200h
.data
a db 3
b db 5
suma db ?
.code
main label
mov ax,@data
mov ds,ax

; TEMA: preluati primul caracter de la tastat


; obtineti in BL valoarea lui
; TEMA: preluati al doilea caracter de la tastat
; obtineti in BH valoarea lui
; obtineti suma valorilor in BL
; mutati-o in AL
; formati codul ASCII
; si afisati valoarea sumei pe ecran
iesire:
mov ax,4C00h;
int 21h
end main

problema.asm
.model small
.stack 200h
.data
SIR_INIT db 2,'M','I',3,'C','R','O',8,7,'p',1,'r','o',5,'c'
;
CIFRE db 15 dup (?)
LITERE db 15 dup (?)
.code
main label
mov ax,@data
mov ds,ax
;contor elemente sir
mov cx, 15
mov si, offset SIR_INIT
mov di, offset CIFRE
mov bx, offset LITERE

ordonare.asm
.model small
.stack 200h
.data
sir db 4,3,6,7,9,1,2,5,0,8
.code
main label
mov ax,@data
mov ds,ax
;ordonare crescatoare a elem sirului

et2:

mov si, offset sir


mov cx,9 ; 10 elemente
mov dl,0 ;dl tine nr de inversiuni
et0:
mov ah, [si]
cmp ah, [si+1]
jbe et1
xchg ah,[si+1]
mov [si], ah
inc dl ; marchez daca am inversat elemente
et1:
inc si
dec cx
jnz et0
or dl,dl ; daca dl=0 inseamna ca am terminat
jnz et2 ; daca e dif 0 reiau parcurgerea sirului
; afisare: stiu ca am cifre simple, deci... cum voi afisa
fiecare element (cifra) ?

; TEMA: pregatiti pentru afisare


afisare:
; TEMA: completati pentru a realiza afisarea
sirului ordonat
;incheiere program
; TEMA: completati pentru a incheia
programul
end main

;adresa initiala siruri

et1:
mov al, [si] ;pentru cifrele din SIR_INIT se returneaza
valoarea efectiva (0.9)
;iar
pentru litere MARI codul ascii corespunzator (41h.5Ah), litere MICI
(61h...7Ah).
cmp al, 40h ;fiecare element din sir va fi comparat cu
valoarea 40h.
jb et2
;daca valoarea sa este mai mica
decat 40h elementul repr. o cifra
mov [bx] , al
;daca valoarea sa este mai mare decat 40h
elementul repr. o litera
;se depune litera in sirul LITERE
inc bx
jmp et3
et2:

mov [di] , al
inc di

et3:

inc si
dec cx

;se depune cifra in sirul CIFRE

;se trece la urmatorul element din sir

;procedeul se repeta pentru toate elementele sirului

jnz et1

; afisare cifre
;pt afisare se util functia 0eh a intreruperii int 10h
; TEMA : pregatiti pentru afisare sir
afis1:
; TEMA : afisati sirul CIFRE
;afisare litere
; TEMA : pregatiti pentru afisare sir
afis1:
; TEMA : afisati sirul LITERE

iesire:
mov ax, 4c00h
int 21h
end main

Potrebbero piacerti anche