![]() | ![]() |
|
|
; Programma con chiamata a procedura NEAR
;il programma ricerca il massimo ed il minimo
;tra i valori ad 8 bit contenuti in DATI
;memorizza i valori trovati nelle variabili MAX e MIN
mstack SEGMENT STACK
DB 64 DUP (?)
mstack ENDS
data SEGMENT
dati db 1,2,3,4,4,4,7,8,9,0,27,232,255,132,128,100
max db 0
min db 0
data ENDS
codice SEGMENT
ASSUME CS : codice, DS: data, SS:stack
Inizio: mov AX, data
mov DS, data
mov si, offset dati ;memorizza in AL e AH il primo valore dell'elenco
mov al, [si] ;prepara l'indirizzo dei dati ed il numero di giri
mov ah, al
mov cx, 15
ini: inc si ;punta al secondo dato per iniziare i confronti
call confro
loop ini
;memorizza i risultati
mov max,al
mov min,ah
mov AH, 4CH
int 21H
confro PROC NEAR
;confronta ogni dato con AL e AH e sostituisce, se trova un nuovo MAX o MIN
cmp al,[si]
jae mass
mov al,[si]
mass: cmp ah,[si]
jbe mini
mov ah, [si]
mini: RET
confro ENDP
codice ENDS
END INIZIO
II versione
mstack SEGMENT STACK
DB 64 DUP (?)
mstack ENDS
data SEGMENT
dati db 1,2,3,4,4,4,7,8,9,0,27,232,255,132,128,100
max db 0
min db 0
data ENDS
codice SEGMENT
main PROC FAR
ASSUME CS : codice, DS: data, SS:stack
push DS
sub AX,AX
push AX
mov AX, data
mov DS, data
mov si, offset dati
mov al, [si]
mov ah, al
mov cx, 15
ini: inc si
call confro
loop ini
mov max,al
mov min,ah
RET
main ENDP
confro PROC NEAR
cmp al,[si]
jae mass
mov al,[si]
mass: cmp ah,[si]
jbe mini
mov ah, [si]
mini: RET
confro ENDP
codice ENDS
END
III versione
.model small
.stack
.data
dati db 1,2,3,4,4,4,7,8,9,0,27,232,255,132,128,100
max db 0
min db 0
.code
main PROC FAR
.startup
mov SI, offset dati
mov AL, [SI]
mov AH, AL
mov cx, 15
ini: inc SI
call confro
loop ini
mov max,AL
mov min,AH
RET
main ENDP
confro PROC NEAR
cmp al,[si]
jae mass
mov al,[si]
mass: cmp ah,[si]
jbe mini
mov ah, [si]
mini: RET
confro ENDP
END
; lettura da tastiera di un numero di due cifre. Il numero viene convertito da ASCII e
; posto in AL
letnume proc
push bx
mov AH,1
int 21h
sub AL, 30h ; la sottrazione è necessaria per convertire il codice ASCII
mov BL,10
mul BL ; il primo numero rappresenta le decine
mov BL, AL
mov AH, 1
int 21h
sub AL, 30h
add AL,BL
pop BX
ret
letnum endp
;programma che esegue la media di tre dati appartenenti a tre gruppi di dati a 16 bit
; viene memorizzata la parte intera in un quarto buffer
.model small
.stack
.data
num1 dw 15,24,3000, 4444,222,6666,2000,45,600,1000
num2 dw 2200,4500,4000,3000,5000,2000,30,440,3300,2000
num3 dw 400,3000,2000,4000,5000,3330,46,420,1000,1000
medie dw 10 dup (0)
.code
.startup
mov si, 0
mov bx, 3
mov cx, 10
m: mov dx, 0
mov ax, num1[si]
add ax, num2[si]
jnc rip1
inc dx
rip1: add ax,num3[si]
jnc rip2
inc dx
rip2: div bx
mov medie[si],ax
inc si
inc si
loop m
.exit
end
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025