Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Libreria GIOBE.ASM

Home » Programma il Computer » Tutorial Assembly

Raccolta di Procedure

  Raccolta di Procedure ASM

Random [54 di 54] 

    

bulletGenera un numero casuale a 16 bit.

 

bulletLa Procedura si chiama in questo modo:

               

  

bulletIn ingresso bisogna predisporre:
bulletAX con il numero a 16 bit che esprime il valore successivo a quello desiderato come massimo:
bulleti numeri 0 e 1 sono accettati ma non hanno senso
bulletil numero massimo è dunque FFFFH, 655355

 

bulletIn uscita lascia:
bulletAX con il numero a 16 bit che esprime un qualunque valore compreso tra 0 e quello passato in ingresso, meno 1

               

bulletLa seguente Area di Testo mostra il Modulo varie12 utilizzato per inserire la Procedura nella Libreria Giobe.ASM/LIB:

               

Random / varie12

NB:           se il testo contenuto nell'Area   ti sembra strano (cioè se contiene
 caratteri inconsueti) non hai ancora installato il font
Giobe.TTF : clicca qui!!

               

bulletIl numero casuale è generato con l'aiuto di un algoritmo basato su somme, moltiplicazioni, divisioni e spostamenti dei valori di volta in volta coinvolti nel calcolo, a partire dal numero a 32 bit ottenuto mettendo in sequenza i 4 bytes corrispondenti al tempo corrente, nel momento della prima chiamata, letti dalla memoria CMOS di sistema.
bulletL'analisi del codice mette in evidenza il suo sofisticato modo di operare:
bulletpreleva il numero iniziale (seme) della procedura leggendo l'orologio di sistema, con l'aiuto della Funzione DOS 2CH dell'INT 21H; il valore del tempo corrente è lasciato dalla funzione nei registri CH (Ore, da 0 a 23), CL (Minuti, da 0 a 59), DH (Secondi, da 0 a 59) e DL (Centesimi di secondi, da 0 a 99); in pratica questo pezzo di programma implementa la procedura RANDOMIZE di Turbo Pascal.
bulletper la precisione il numero iniziale è la sequenza dei 4 bytes di Secondi, Centesimi di secondo, Ore e Minuti, dal più significativo al meno significativo.
bulletcon un artificio evita di assumere di nuovo il seme per tutta la sessione di esecuzione del programma
bulletva ricordato che non è detto che il secondo bytes esprima con certezza i Centesimi di Secondo; in taluni ambienti operativi probabilmente esprime semplicemente un numero da 0 a 17, frutto del conteggio dei Ticks prodotti in un secondo (ogni 54,925493 ms) piuttosto che dei centesimi (10ms).
bulletper certi versi questo rende ancora più imprevedibile il numero casuale generato da questa procedura.

               

bulletIl numero a 16 bit lasciato in uscita è compreso tra 0 e il valore (meno 1) passato in ingresso in AX: può essere pertanto relativamente molto grande, fino a 655354, se AX è stato passato a FFFFH).

               

bulletLa procedura è elaborata da un'idea di Nathan Hull (nathan@cs.nyu.edu) del Courant Institute of Mathematical Sciences della New York University.

    

Pagina Precedente Libreria GiobeASM Pagina Successiva Random   Torna alla Home  del Capitolo3 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
54 di 54
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

    

Giobe.ASM » SET_cur | VIA_cur | RIP_cur | BIOScls| BIOSchr |BIObeep |Acapo| BIOchr1| STAsp| BIOSmsg
Byt2Asc | Wor2Asc | Asc2Byt | Asc2Wor | Byt2Dec | Wor2Dec | Dec2Byt | Dec2Wor
Delay | DelMicro | Del_2000 | Del1500 | Del_1000 | Del_100 | Del_1 | Del500Mi | Del200Mi
Del100Mi | Del010Mi | RIEMPI | KEYwait | Random | INstrin | CambiaCol | MODEtest
RAMchr | RAMcur | RAMmes | RAMcls | RAMcorn | RAMpiu | RAMrecup | RAMbyte | RAMword
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati