+; initialize grid
+mov cx, COLS * ROWS ; for each cell
+xor ax, ax
+mov es, ax
+mov di, GRID ; es:di -> GRID
+
+.initgrid: ; do {
+ call xs ; [XSS] = rand
+ mov al, DEAD ; al = DEAD (likely)
+
+ test [XSS], 0b11
+
+ jnz .initgrid_nz ; if ([XSS] % 4 == 0)
+ mov al, ALIVE ; al = ALIVE
+
+.initgrid_nz:
+ stosb ; [es:(di++)] = al
+
+ loop .initgrid ; } while (--cx)
+
+jmp halt
+