MLHA - PC - Software - Programmering - Assembler - Data operations
v Numeric, Byte/Char, String

Numeric

Random Number
;IND: AX=range (2..65535)
; UD: AX=random number 0..range-1
Seed DW (?)
---
     XOR DX,DX
     MOV BX,AX     ;range
     MOV AX,0FFFFH
     DIV BX
     INC AX        ;divider
     MOV BX,AX
     MOV AX,SEED   ;old seed
     MOV CX,31421  ;numbers are from a FORTH routine by Leo Brodie
     MUL CX
     ADD AX,6927
     MOV SEED,AX   ;new seed
     XOR DX,DX
     DIV BX        ;AX = seed/divider: random number
 
Lotto
Tręk Lottonumre
;before: BLOK contains 'oldrange' Lotto numbers
;after : BLOK contains 'newrange' Lotto numbers, 'newrange'='oldrange'-1
;        DL=random LOTTO number from BLOK

BLOK       DB ...           ;list of numbers
RANGE      DW .             ;count of numbers in list
---
           MOV AX,RANGE     ;R
           CMP AX,1
           JNZ GETRANDOM
           DEC AX
           JMP SHORT GETNUM
GETRANDOM: CALL RANDOM      ;0..R-1
GETNUM:    MOV DI,AX
           MOV DL,BLOK[DI]
           MOV SI,RANGE
           DEC SI 
MOVENEXT:  CMP DI,SI
           JZ NEWRANGE
           MOV AL,BLOK[DI+1]
           MOV BLOK[DI],AL
           INC DI
           JMP SHORT MOVENEXT 
NEWRANGE:  DEC RANGE

Byte, Char

 

String