>> Elettronica Tecnologia >  >> telefoni >> Stazioni conferencing

Programma in linguaggio assembly per il fattoriale di un dato numero?

Ecco un esempio di programma in linguaggio assembly (sintassi NASM) per calcolare il fattoriale di un dato numero:

```

BRITANNI 16

; Definire il segmento di dati

SEGMENTO DATI

numero:DW ?; Il numero di cui trovare il fattoriale

; Definire il segmento di codice

SEGMENTO DI CODICE

inizio:

ascia mov, DATI; Caricare il registro DS con l'indirizzo del segmento dati

mov dx, numero; Carica il numero in DX

cmp dx, 0; Controlla se il numero è 0

sì zero; Se è così, passa all'etichetta "zero".

movimento cx, 1; Inizializza il fattoriale (CX) su 1

; Avvia il ciclo di calcolo fattoriale

ciclo continuo:

imul cx; Moltiplica CX per il numero corrente in DX

inc dx; Incrementa il numero corrente

cmp dx, numero; Confronta DX con il numero originale

ciclo jb; Se DX è inferiore al numero, torna al loop

; Visualizza il fattoriale

zero:

mov ah, 4Ch; AH =4Ch per l'interruzione DOS "Stampa stringa".

lea dx, str_risultato; Carica l'indirizzo della stringa "risultato" in DX

ore 21 intere; Chiamare l'interruzione DOS 21h per visualizzare la stringa

ritirarsi; Ritorna al sistema operativo

; Definire la stringa "risultato".

str_result:DB "Il fattoriale è:$"

; Fine del programma

FINE inizio

; Definire il segmento dello stack

SEGMENTO DI PILA

; Definire i dati per lo stack

DW 0

LA PILA FINE

```

Spiegazione del programma:

1. Segmento dati:

- `num:` definisce una variabile word (16 bit) chiamata `num` nel segmento dati. Questa variabile memorizzerà il numero di cui vogliamo trovare il fattoriale.

2. Segmento di codice:

- `start:` è il punto di ingresso del programma.

3. Inizializzazione:

- `mov ax, DATA`:carica l'indirizzo del segmento dati nel registro AX.

- `mov dx, num`:carica il valore di `num` nel registro DX.

4. Controlla lo zero:

- `cmp dx, 0`:confronta il valore in DX con 0.

- `je zero`:se DX è uguale a 0, salta all'etichetta `zero`.

5. Ciclo di calcolo fattoriale:

- "ciclo":

- `imul cx`:moltiplica il valore corrente in CX per il numero corrente in DX.

- `inc dx`:incrementa il valore in DX.

- `cmp dx, num`:confronta DX con il numero originale.

- `jb loop`:se DX è inferiore al numero, torna all'etichetta `loop` per continuare il calcolo.

6. Visualizza il fattoriale:

- "zero:" (Etichetta)

- `mov ah, 4Ch`:Imposta AH su 4Ch, che è l'interruzione DOS per stampare una stringa.

- `lea dx, str_result`:carica l'indirizzo della stringa "result" in DX.

- `int 21h`:richiama l'interrupt 21h del DOS per visualizzare la stringa.

7. Reso:

- "ret":Ritorna al sistema operativo.

8. Segmento di pila:

- Il segmento dello stack è definito con una dimensione di una doppia parola (2 byte) e inizializzato a 0.

Nota:questo programma utilizza il sistema operativo DOS per stampare il risultato, quindi funzionerà solo in un ambiente DOS o in un emulatore che supporti DOS.

  1. Il modo migliore per salvare le email da Outlook
  2. Come Fool Rivelatori di movimento
  3. Come convertire una data giuliana in Excel
  4. Fa Blubster lavorare per l' iPod
  5. Come modificare il vetro anteriore su un iPod Touch
  6. Come usare un iPod con un ingresso RCA