Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 35
  1. #11
    Originariamente inviato da rizzotti91
    Ecco:
    codice:
    mov cl,2 ;contatore inizializzato a 2
    mov al,0 ;primo numero 0    
    mov bl,1 ;secondo numero 1
    mov dl,al ;sposto in dl il primo numero
    mov ah,2h ;preparo per la stampa
    int 21h      ;stampo il primo numero contenuto in dl
    mov dl,bl   ;sposto in dl il secondo numero
    mov ah,2h ;preparo per la stampa
    int 21h      ;stampo il secondo numero contenuto in dl
    ciclo: add al,bl ;sommo il primo numero con il secondo
    add bl,al  ;sommo il secondo con il primo
    mov dl,al ;sposto in dl il primo numero
    mov ah,2h ;preparo per la stampa
    int 21h      ;stampo
    mov dl,bl  ;sposto in dl il secondo numero
    mov ah,2h ;preparo per la stampa
    int 21h     ;stampa
    add cl,2    ;incremento il contatore di 2 (visto che ho già calcolato 2 numeri di fibonacci)
    cmp cl,var ; confronto il contatore con var (non si vede ma l'ho inizializzata a 10)
    jl ciclo      ;se il contatore è minore di 10, vai a ciclo se no fine
    fine: mov ax,
    4c00h int 21h
    Quindi quale modifica va fatta?

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa, ma se all'esame ti fanno l'osservazione che ti ho fatto, tu rispondi così ?

    In questo caso, devo essere sincero, non andrai lontano ...

    Se hai un valore 1 binario ma devi visualizzare il corrispondente carattere, dovrai prima convertirlo in ASCII ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Originariamente inviato da oregon
    Scusa, ma se all'esame ti fanno l'osservazione che ti ho fatto, tu rispondi così ?

    In questo caso, devo essere sincero, non andrai lontano ...

    Se hai un valore 1 binario ma devi visualizzare il corrispondente carattere, dovrai prima convertirlo in ASCII ...
    Le lezioni sull'assembler al corso sono durate 3 giornate e sono completamente a zero... l'unica operazione che conosco per la conversione da binario ad ascii è and al,0fh..

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Purtroppo, ti capisco, ma se hai questo tipo di compiti allora hai un problema ...

    Il valore ASCII si ottiene a partire dal binario facendo

    or al, 30h
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #15
    Originariamente inviato da rizzotti91
    Le lezioni sull'assembler al corso sono durate 3 giornate e sono completamente a zero... l'unica operazione che conosco per la conversione da binario ad ascii è and al,0fh..
    Non l'avevo mai visto questo comando... non ci era stato spiegato...

    piccolo O.T l'università di Messina è davvero patetica...

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da rizzotti91
    Non l'avevo mai visto questo comando... non ci era stato spiegato...
    Se conoscete la and avrete visto anche la or ... mi sembra impossibile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #17
    Originariamente inviato da oregon
    Se conoscete la and avrete visto anche la or ... mi sembra impossibile ...
    No l'abbiamo trovato in altri esercizi io ed i miei colleghi del mio gruppo di studio... a lezione ci sono state spiegate pochissime cose e ci ritroviamo a dover imparare praticamente tutto da soli...

  8. #18
    Sotto tuo consiglio l'ho riscritto:
    codice:
    org 100h
    .model small
    .stack 100h
    .data
    var dw 10
    .code
    mov al,0
    mov bl,1
    mov dl,al 
    or  dl, 30h
    mov ah,2h
    int 21h
    mov dl,bl
    or  dl, 30h
    mov ah,2h
    int 21h
    ciclo: add al,bl
           add bl,al
           mov dl,al
           or  dl, 30h
           mov ah,2h
           int 21h
           mov dl,bl
           or  dl, 30h
           mov ah,2h
           int 21h
           add cx,2
           cmp cx,var
           jl ciclo 
    fine: mov ax,4c00h
          int 21h
    Il risultato è una stampa di "0,1,2,3" a parte che manca il secondo 1, ma io dovrei stampare dieci numeri della serie..

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se devi visualizzare i primi 10 valori, comincia a ragionare su tali numeri. Questi sono

    0, 1, 1, 2, 3, 5, 8, 13, 21, 34

    e non tutti sono fatti da una cifra. Quindi, per farla semplice, prima di tutto, devi prevedere queste aree di dati

    un byte per il contatore (inizializzato a 10)
    un byte per il valore attuale della sequenza (inizializzato a 0)
    un byte per il valore futuro della sequenza (inizializzato a 1)

    e una funzione che, ottenuto un byte in ingresso, ottenga le decine e le unità, le trasformi in ASCII e le visualizzi (le decine solo se maggiori di 0)

    Per il "main" ti basta un ciclo che sfrutti il contatore in cui

    - chiami la funzione di visualizzazione che opera sul byte del valore attuale
    - sommi il valore attuale e il prossimo in un registro temporaneo
    - sposti il valore futuro in quello attuale
    - memorizza il valore del registro temporaneo nel valore futuro
    - decrementi il contatore
    - se il contatore non è zero torni al primo punto

    EDIT: per tagliare la testa al toro, dai un'occhiata a questo

    per i dati:
    codice:
    count db 10
    att   db 0
    fut   db 1
    per il codice:
    codice:
    ciclo: 
    	mov al,att
    	mov ah,0h
    	mov cl,0Ah
    	div cl
    	push ax
    	mov dl,al
    	test al,al
    	jz nodec
    	or dl,30h
    	mov ah,2h
    	int 21h
    nodec:	pop ax
    	mov dl,ah
    	or dl,30h
    	mov ah,2
    	int 21h
    	mov dl,20h
    	mov ah,2h
    	int 21h
    	mov bl,fut
    	mov al,bl
    	add bl,att
    	mov att,al
    	mov fut,bl
    	dec count
    	jnz ciclo
    	mov ax,4C00h
    	int 21h
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #20
    Originariamente inviato da rizzotti91
    Sotto tuo consiglio l'ho riscritto:
    codice:
    org 100h
    .model small
    .stack 100h
    .data
    var dw 10
    .code
    mov al,0
    mov bl,1
    mov dl,al 
    or  dl, 30h
    mov ah,2h
    int 21h
    mov dl,bl
    or  dl, 30h
    mov ah,2h
    int 21h
    ciclo: add al,bl
           add bl,al
           mov dl,al
           or  dl, 30h
           mov ah,2h
           int 21h
           mov dl,bl
           or  dl, 30h
           mov ah,2h
           int 21h
           add cx,2
           cmp cx,var
           jl ciclo 
    fine: mov ax,4c00h
          int 21h
    Il risultato è una stampa di "0,1,2,3" a parte che manca il secondo 1, ma io dovrei stampare dieci numeri della serie..
    Grazie mille, scusa se non avevo più risposto ma ho avuto un altro esame e questo è stato rinviato a lunedi 27 (tra qualche giorno), quindi domani mi leggo tutto per bene, grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.