Output errato(albero di natale dato dimensioni e carattere che lo compone)

di il
1 risposte

Output errato(albero di natale dato dimensioni e carattere che lo compone)

Ho praticamento seguito un mio esercizio fatto in linguaggio c++,ma non funziona.

.model small

.data
stringa db "Buon natale e felice anno nuovo",0Ah,0Dh,'$'
stringa1 db "Inserisci l'altezza della chioma dell'albero di natale : ",'$'
stringa2 db "Inserisci l'altezza della fusto dell'albero di natale : ",'$'
stringCarat db "inserisci il carattere da stampare : ",'$'

car db ?
ii db ?
bianchi db 0h
asterischi db 0h
corteccia db 0h
altezza db ?
fusto db ?
ast_u_linea db ?
.stack

.code
mov ax,@data
mov ds,ax


mov ah,09h
mov dx, OFFSET stringa ;messaggio verso utente
int 21h

mov ax,0h
call INPUTSTRING
call INPUTSTRING1
call stcar
call ACAPO
call ACAPO
mov ii,0h
inizio_for:

inizio_ciclo1:

push bx
mov bl,altezza
sub bl,30h
sub bl,ii
mov bh,bianchi
cmp bh,bl ; op1 = op2 ?
jge fine_ciclo1 ; SI : allora vai a fine_ciclo ed esci dal ciclo
mov dl,' '
mov ah,02h
int 21h ; ALTRIMENTI : fai le istruzioni
inc bianchi ; del ciclo
pop bx
jmp inizio_ciclo1
fine_ciclo1:
mov ax,0000h
inizio_ciclo2:
mov cx,0000h
mov ah,asterischi
mov al,ii
add al,al
add al,01h
cmp ah,al ; op1 = op2 ?
jge fine_ciclo2 ; SI : allora vai a fine_ciclo ed esci dal ciclo
mov dl,car
mov ah,02h
int 21h ; ALTRIMENTI : fai le istruzioni
inc asterischi ; del ciclo
mov cl,asterischi
mov byte ptr ast_u_linea,cl

jmp inizio_ciclo2
fine_ciclo2:
call ACAPO
mov bianchi,0h
mov asterischi,0h
inc ii
mov cl,altezza
cmp ii,cl
jl inizio_for
fine_for


mov dl,02h
cort:
push bx
push dx
mov bl, corteccia
mov bh, fusto
sub bh,30h
cmp bl,bh
jge fine_cort ; SI : allora vai a fine_ciclo ed esci dal ciclo
mov byte ptr ii,01h ; in Assembly
for2:
mov ax,0000h ; in Assembly
mov al,ast_u_linea
add al,01h

div dl
mov dh,al
cmp ii,dh
jge fine_for2
mov dl,' '
mov ah,02h
int 21h
inc ii
jmp for2
fine_for2:
; del ciclo
mov dl,car
mov ah,02h
int 21h
mov dl,car
mov ah,02h
int 21h
mov dl,car
mov ah,02h
int 21h
call acapo

inc corteccia
pop dx
pop bx
jmp cort
fine_cort:



jmp fine

ACAPO proc
mov dl,13d ;a capo
mov ah,02h
int 21h
mov dl,10d
mov ah,02h
int 21h
ret
ACAPO endp

INPUTSTRING proc
iniz:
push AX
mov ah,09h
mov dx, OFFSET stringa1 ;messaggio verso utente
int 21h
mov ax,0h

mov ah,01h ;input di un carattere
int 21h
mov altezza,al

cmp altezza,48d
jl iniz
cmp altezza,57d
jg iniz
call ACAPO

pop ax
ret
INPUTSTRING ENDP

INPUTSTRING1 proc
push ax
iniz1:
mov ah,09h
mov dx, OFFSET stringa2 ;messaggio verso utente
int 21h
mov ax,0h
mov ah,01h ;input di un carattere
int 21h
mov fusto,al

cmp fusto,48d
jl iniz1
cmp fusto,57d
jg iniz1

call ACAPO
pop ax
ret
INPUTSTRING1 ENDP

stcar proc
push ax
mov ah,09h
mov dx, OFFSET stringCarat ;messaggio verso utente
int 21h
mov ax,0h
mov ah,01h
int 21h
mov car,al
pop ax
ret

stcar endp


fine:
mov ax, 4c00h
int 21h
end

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte