1. kamerák
  2. Car Audio & Electronics
  3. Home Audio
  4. Personal Audio
  5. TV-k
  6. Okos otthon
  >> Elektronikai Technológia Online >  >> Telefonok >> konferencia állomások

Assembly nyelvű program egy adott szám faktoriálisához?

Íme egy példa egy programra assembly nyelven (NASM szintaxis), amely egy adott szám faktoriálisát számítja ki:

```

BITS 16

; Határozza meg az adatszegmenst

ADATSZEGMENT

szám:DW ?; Az a szám, amelyhez a faktoriálist kell keresni

; Határozza meg a kódrészletet

KÓDSZEGMENT

indul:

mov ax, ADATOK; Töltse be a DS regisztert az adatszegmens címével

mov dx, num; Töltse be a számot a DX-be

cmp dx, 0; Ellenőrizze, hogy a szám 0-e

je nulla; Ha igen, ugorjon a „nulla” címkére

mov cx, 1; Inicializálja a faktoriálist (CX) 1-re

; Indítsa el a faktoriális számítási ciklust

hurok:

imul cx; Szorozzuk meg a CX-et az aktuális számmal DX-ben

inc dx; Növelje az aktuális számot

cmp dx, szám; Hasonlítsa össze a DX-et az eredeti számmal

jb hurok; Ha a DX kisebb, mint a szám, ugorjon vissza a hurokhoz

; A faktoriális megjelenítése

nulla:

mov ah, 4Ch; AH =4Ch a DOS "Print string" megszakításhoz

lea dx, str_result; Töltse be az "eredmény" karakterlánc címét a DX-be

int 21h; Hívja a 21h DOS megszakítást a karakterlánc megjelenítéséhez

ret; Térjen vissza az operációs rendszerhez

; Határozza meg az "eredmény" karakterláncot

str_result:DB "A faktoriális:$"

; A program vége

VÉGE kezdés

; Határozza meg a verem szegmenst

FOGALOM SZEGMENT

; Határozza meg a verem adatait

DW 0

FOGALOM VÉGE

```

A program magyarázata:

1. Adatszegmens:

- A "szám:" egy "szám" nevű szóváltozót (16 bites) határoz meg az adatszegmensben. Ez a változó tárolja azt a számot, amelyhez a faktoriálist meg akarjuk találni.

2. Kódszegmens:

- `start:` a program belépési pontja.

3. Inicializálás:

- `mov ax, DATA`:Az adatszegmens címét betölti az AX regiszterbe.

- `mov dx, num`:A `num` értékét betölti a DX regiszterbe.

4. Ellenőrizze a nullát:

- `cmp dx, 0`:Összehasonlítja a DX értéket 0-val.

- "je zero":Ha a DX egyenlő 0-val, ugorjon a "nulla" címkére.

5. Faktoriális számítási hurok:

- "hurok":

- `imul cx`:A CX-ben lévő aktuális értéket megszorozza a DX-ben lévő aktuális számmal.

- `inc dx`:Növeli az értéket DX-ben.

- `cmp dx, num`:Összehasonlítja a DX-et az eredeti számmal.

- "jb loop":Ha a DX kisebb, mint a szám, akkor a számítás folytatásához visszaugrik a "loop" címkére.

6. Jelenítse meg a faktorállapot:

- "nulla:" (címke)

- `mov ah, 4Ch`:Az AH-t 4Ch-ra állítja, ami a DOS megszakítása egy karakterlánc nyomtatásához.

- `lea dx, str_result`:Betölti az "eredmény" karakterlánc címét a DX-be.

- `int 21h`:Meghívja a 21h DOS megszakítást a karakterlánc megjelenítéséhez.

7. Visszaküldés:

- `ret`:Visszatér az operációs rendszerhez.

8. Verem szegmens:

- A veremszegmens egy duplaszó (2 bájt) mérettel van meghatározva, és 0-ra inicializálva.

Megjegyzés:Ez a program a DOS operációs rendszert használja az eredmény kinyomtatására, így csak DOS környezetben vagy DOS-t támogató emulátorban működik.

  1. Hogyan jutok Ooma hangposta telefonon
  2. Hogyan blokkolja Egyéni számok
  3. Mi a glen Helen fogdában lévő, őrizeten kívüli bokafigyelő iroda telefonszáma?
  4. Hogyan javíthatja a Vodavi Starplus STSE
  5. Hogyan kell Southwestern Bell 936 Remote Message visszakeresés