Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Assembly] Divisione di due numeri

    Premetto che stò utilizzando emu8086

    Ho questo codice

    codice:
    #ORG 100h
    
    JMP start
    NUM DB 32    ;dichiaro una var Num di tipo Byte valorizzata con un num dec a 2 cifre(es32)
    B DB ?,?,?   ;dichiaro un vettore di 3 elementi non valorizzati di tipo byte  
              
    start:
    
    MOV AH,0     ;azzero AH per ospitare l'eventuale resto della divisione
    MOV AL,NUM   ;sposto nel registro AL il valore specificato in NUM (in questo caso 32)
    MOV BL,10   ;imposto in un registro il valore del divisore
    DIV BL      ;eseguo la divisione tra AL (dividendo) e BL (divisore)
    MOV NUM,AL  ;aggiorno la var NUM con il quoziente della divisione
    ADD AH,'0'      ;aggiungo il valore '0' al resto della divisione
    MOV B[1],AH     ;metto nell'elemento dell'array B di indice 1 il risultato della somma precedente
    MOV AH,0        ;riazzero AH per ospitare l'eventuale resto della divisione
    DIV BL          ;eseguo la divisione tra AL (dividendo) e BL (divisore)
    ADD AH,'0'   ;aggiungo il carattere '0' al resto della divisione
    MOV B[0],AH  ;metto nell'elemento dell'array B di indice 0, il resto+il carattere '0'
    MOV B[2],'$' ;metto in B[2] il carattere $
    LEA DX,B    
    MOV AH,9
    INT 21H
    HLT	     ; Termino il programma
    Non mi è chiaro ADD AH,'0' ;aggiungo il valore '0' al resto della divisione ... a che serve fare questo 0,2+0?
    Il resto della prima divisione è 0,2 ... io facendo quell'istruzione (aggiungo 0) è come se diventasse 2?? e la stessa cosa vale per il secondo resto della divisione (3/10 = 0,3 -> 0,3 + 0=3) e una volta stampato a schermo esce 32?

    E a cosa servono le istruzioni
    MOV AH,9
    INT 21H
    ??

    Si riferisce al comando per stampare il risultato? cioè l'interrupt 21 , funz 21 ovvero stampa una stringa?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: [Assembly] Divisione di due numeri

    Originariamente inviato da frankikko
    Non mi è chiaro [B]ADD AH,'0'
    Serve a trasformare il valore binario in un carattere ASCII.

    E a cosa servono le istruzioni
    MOV AH,9
    INT 21H
    ??

    Si riferisce al comando per stampare il risultato? cioè l'interrupt 21 , funz 21 ovvero stampa una stringa?
    Ovviamente ... a cosa pensavi servisse?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ovviamente ... a cosa pensavi servisse?
    Non ero sicuro :P

    Serve a trasformare il valore binario in un carattere ASCII.
    Ah.. nel commento c'era scritto

    ;aggiungo il valore '0' al resto della divisione

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da frankikko
    nel commento c'era scritto
    Ed è giusto ... e l'effetto è quello di trasformare i valori binari da 0 a 9 nei corrispondenti valori ASCII da '0' a '9'
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.