PDA

View Full Version : Problema Esercizio Assembler 8086


LukaF15
11-01-2015, 17:50
Dovrei stampare n asterischi in diagonale (n in input). Ho fatto un po' ma non funziona..Qualcuno mi puņ aiutare?


data segment
msg db "Inserire un numero: $"
data ends
code segment
assume: ds:data, cs:code
main:
mov ax,data
mov ds,ax

mov ah, 09h
lea dx, msg
int 21h
mov ah, 01h
int 21h
sub al, 48d
mov ah, 0
mov cx, 0
mov cx, ax

for: mov si,0
while: cmp si, cx
ja endwhile
mov ah, 02h
mov dl, ' '
int 21h
inc si
endwhile:
mov ah, 02h
mov dl, '*'
int 21h
mov ah, 02h
mov ah, 02h
mov dl, 10d
int 21h
mov ah, 02h
mov dl, 13d
int 21h
loop for

exit: mov ax, 4ch
int 21h


code ends
end main

LukaF15
11-01-2015, 20:37
; Stampare N asterischi in diagonale con il bell
data segment
msg db "Inserire un numero: $" ; dichiarazione frase
data ends
code segment
assume: ds:data, cs:code
main:
mov ax,data ; inizio del programma
mov ds,ax

mov ah, 09h ; output della frase
lea dx, msg
int 21h
mov ah, 01h ; input del carattere in al
int 21h
sub al, 48d ; al-48 decimale
mov ah, 0
mov cx, 0
mov cx, ax ; inizializzo il contatore con al
mov ah, 02h
mov dl, 10d ; stampo line feed
int 21h
mov ah, 02h
mov dl, 13d ; stampo carriage return
int 21h

for: mov si,0 ; azzero si
while: cmp si, cx ; confronto si con cx
jae endwhile ; se č maggiore o uguale vado a endwhile
mov ah, 02h
mov dl, 32d ; stampo spazio
int 21h
inc si ; incremento si
jmp while ; rinizio il while fino a quando si non sara' uguale a cx
endwhile:
mov ah, 02h
mov dl, '*' ; stampo n asterischi
int 21h
mov ah, 02h
mov dl, 07d ; stampo il bell
int 21h
mov ah, 02h
mov dl, 10d ; stampo line feed
int 21h
mov ah, 02h
mov dl, 13d ; stampo carriage return
int 21h
loop for ; rinizio il for fino a quando cx non sara' 0

exit: mov ax, 4ch ; fine del programma
int 21h


code ends
end main