1. kamere
  2. Car Audio & Electronics
  3. Domači glasbeni sistem
  4. Osebni avdio
  5. televizorji
  6. Pametni dom
  >> Elektronske tehnologije Online >  >> telefoni >> konference postaje

Program v zbirnem jeziku za faktoriel danega števila?

Tukaj je primer programa v zbirnem jeziku (sintaksa NASM) za izračun faktoriala danega števila:

```

BITSI 16

; Določite segment podatkov

PODATKOVNI SEGMENT

št.:DW ?; Število, za katerega najdemo faktorijel

; Določite segment kode

KODA SEGMENT

začetek:

mov sekira, PODATKI; Naložite register DS z naslovom segmenta podatkov

mov dx, num; Naloži številko v DX

cmp dx, 0; Preverite, ali je številka 0

je zero; Če je tako, skočite na oznako "nič".

mov cx, 1; Inicializirajte faktorial (CX) na 1

; Zaženite zanko izračuna faktorjev

zanka:

imul cx; Pomnožite CX s trenutno številko v DX

inc dx; Povečaj trenutno številko

cmp dx, št.; Primerjajte DX z izvirno številko

jb zanka; Če je DX manjši od števila, skočite nazaj v zanko

; Prikažite faktorijel

nič:

mov ah, 4Ch; AH =4Ch za prekinitev DOS "Print string".

lea dx, str_rezultat; Naložite naslov niza "result" v DX

int 21h; Za prikaz niza pokličite prekinitev DOS 21h

ret; Vrnite se v operacijski sistem

; Določite niz "rezultat".

str_result:DB "Faktorial je:$"

; Konec programa

KONEC začetek

; Določite segment sklada

SEGMENT SKLADA

; Določite podatke za sklad

DW 0

KONCI SKLOPOV

```

Razlaga programa:

1. Podatkovni segment:

- `num:` definira besedno (16-bitno) spremenljivko, imenovano `num` v segmentu podatkov. Ta spremenljivka bo shranila število, za katerega želimo najti faktorial.

2. Segment kode:

- `start:` je vstopna točka programa.

3. Inicializacija:

- `mov ax, DATA`:Naloži naslov segmenta podatkov v register AX.

- `mov dx, num`:naloži vrednost `num` v register DX.

4. Preverite nič:

- `cmp dx, 0`:primerja vrednost v DX z 0.

- `je zero`:Če je DX enak 0, skoči na oznako `zero`.

5. Faktorska računska zanka:

- `zanka`:

- `imul cx`:pomnoži trenutno vrednost v CX s trenutnim številom v DX.

- `inc dx`:Poveča vrednost v DX.

- `cmp dx, num`:Primerja DX z izvirno številko.

- `jb loop`:Če je DX manjši od števila, skoči nazaj na oznako `loop` za nadaljevanje izračuna.

6. Prikaži faktorial:

- `zero:` (oznaka)

- `mov ah, 4Ch`:Nastavi AH na 4Ch, kar je prekinitev DOS za tiskanje niza.

- `lea dx, str_result`:Naloži naslov niza "result" v DX.

- `int 21h`:kliče prekinitev DOS 21h za prikaz niza.

7. Vrnitev:

- `ret`:vrne se v operacijski sistem.

8. Segment sklada:

- Segment sklada je definiran z velikostjo ene dvojne besede (2 bajta) in inicializiran na 0.

Opomba:Ta program za tiskanje rezultatov uporablja operacijski sistem DOS, zato bo deloval samo v okolju DOS ali emulatorju, ki podpira DOS.

  1. Kako odklenitiBlackBerry Tour 9630
  2. 1. Kako internetni standardi omogočajo večjo trgovino Kakšne morebitne težave bi lahko imeli, če ne bi IEEE?
  3. Kako poklicati iz Malezije v Hong Kongu
  4. Kako lahko objavite sliko na Facebook profil iz iPhone
  5. Kako težko je namestiti Phone Jack v kleti ?