Extras din proiect
Pentru a putea afișa minimul si maximul unui șir in limbaj de asamblare, segmentul de cod va fi divizat în două mari părţi:
-o parte în care se descriu procedurile folosite (procs.asm)
- o parte în care aceste proceduri sunt apelate (main.asm).
PROGRAMUL PRINCIPAL (main.asm)
.model small
.stack 1024h
extrn read_number:far
extrn write_number:far
extrn min:far
extrn max:far
.data
N dw ?
Numbers dw 20 dup(0)
Str1 db 'Cate numere are sirul? ', '$'
Str2 db 0Ah, 0Dh, 'Ni: ', '$'
Str3 db 0Ah, 0Dh, 'Sirul introdus este: ', '$'
Str4 db 0Ah, 0Dh,'Minimul din sir este: ', '$'
Str5 db 0Ah, 0Dh,'Maximul din sir este: ', '$'
.code
;initializare segment de date
mov ax, dgroup
mov ds, ax
;afisare mesaj
mov dx, offset Str1
mov ah, 09h
int 21h
;citire dimensiune
mov ax, ds
push ax
mov ax, offset N
push ax
call read_number
;citire sir
mov si, 0 ;folosim si pentru indexare
mov cx, 0 ;cx va numara citirile
start:
cmp cx, N ;testam daca am citit N numere
je stop ;daca am citit N numere sarim la stop
;afisam un mesaj
mov dx, offset Str2
mov ah, 09h
;smitem parametrii pe stiva
mov ax, ds
push ax ;punem segmentul in stiva
mov ax, offset Numbers
add ax, si ;calculam deplasamentul numarului curent
push ax ;copiem deplasamentul in stiva
;citim numarul
call read_number
;incrementam indexul cu 2 (dimensiunea unui numar este 2)
add si, 2
inc cx
jmp start ;sarim la start
stop:
;afisare sir
mov dx, offset Str3
mov ah, 09h
int 21h
mov si, 0 ;si este indexul
mov cx, 0
start1:
cmp cx, N ;testam daca am afisat N numere
je stop1 ;daca am afisat N numere sarim la stop
push Numbers[si] ;transmitem numarul pe stiva
;afisam numarul
call write_number
;afisam un spatiu
Preview document
Conținut arhivă zip
- Minimul si Maximul unui Sir de Numere.doc