PDA

Visualizza la versione completa : [assembly] procedure


anima123
20-11-2008, 15:54
ho bisogno di qualche aiuto...

devo fare delle procedure che:
1. una procedura che legge un numero word (che poi sarebbe la dimensione di un vettore)
2.una che legge un vettore di caratteri (max 100)
3.una che cerca un carattere nel vettore del punto 2
4. una che ordina il vettore del punto 2 in ordine alfabetico crescente
5.una che conta nel vettore del punto 2 le occorrenze del primo elemento

cioè, devo fare un programma che faccia tutto questo, però con le procedure ^^

garzie mille a chi mi aiuterà

pallinopinco
20-11-2008, 16:12
Come possiamo aiutarti?

anima123
20-11-2008, 18:40
allora...
sono riuscito a tirar giu qualcosa......

.model small
.stack
.data
NUM dw 0
M1 dw 10
M3 dw 1
VET dw 0


.code
INIZIO:
;riempie DS
mov ax,@data
mov ds,ax
;lettura del numero
PUSH M3
PUSH M1
PUSH NUM
CALL LETNUM
POP NUM
POP M1
POP M3
;lettura del vettore di caratteri

PUSH VET
PUSH NUM
CALL LETVETCAR
POP NUM
POP VET


;fine programma
mov ah,4ch
int 21h
;procedura per la lettura di un numero word
;parametri pnum per riferimento
; pm1 per valore
; pm2 per valore

LETNUM PROC
;acquisisce parametri
PUSH BP
MOV BP,SP
PM1 EQU [BP+4]
PM3 EQU [BP+6]
PNUM EQU [BP+8]
;lettura del numero
MOV CL,0
CICLO:
MOV AH,01H
INT 21H
CMP AL,0DH
JE FINECICLO
SUB AL,030H
MOV AH,0H
PUSH AX
INC CL
JMP CICLO
FINECICLO:
POP AX
MOV DX,PM3
MUL DX
ADD PNUM,AX
MOV DX,0
MOV DX,PM1
DEC CL
CMP CL,0
JNE FINECICLO
POP BP
RET
LETNUM ENDP
;procedura per la lettura di un vettore di caratteri
;parametri pvet per riferimento
LETVETCAR PROC
PUSH BP
MOV BP,SP
PVET EQU [BP+4]
;lettura del vettore
MOV SI,0
MOV CX,0
CICLO2:
MOV AH,01H
INT 21H
MOV PVET[SI],AL
INC SI
INC CX
CMP CX,NUM
JNE CICLO2
POP BP
RET
LETVETCAR ENDP

end inizio


questo programma "dovrebbe" farmi leggere il vettore VET di dimensione NUM....
ovvero, all'avvio dell'exe, dovrebbe farmi fare questo :
5 (dove 5 è il NUM, quindi la dimensione del vettore) INVIO
12345 (vettore di 5 caratteri) acapo
c:\tasm>_

solo che, dopo aver inserito NUM, non solo non mi manda a capo, ma mi fa digitare un vettore all'infinito...

qualcuno sa risolvermi il problema?

Loading