Guten Morgen, Assemblerfreaks - gibts hier überhaupt welche? Egal.
Ich hätte da ein Problem. Ich benutze TASM und wollt mal ein bisselmit VGA rumspielen.
(Nebenbei: gute Tuts habe ich keine - gebt mir VGA-TUTS!)
Ich hab folgendes Programm als COM kompiliert und gelinkt. Wenn ich das Prog aber starte, veränderts sich nicht wirklich viel am Screen und außerdem wird er auch nur zur Hälfte (die obere Hälfte) genutzt... Und überhaupt, so ganz randomly sieht das Ganze ja auch nicht aus - man kann diagonale Streifen erkennen, wenn man genau hinguckt.
Hier der Kot(e):
|
Quellcode
|
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
|
.MODEL TINY
.386
.CODE
ORG 100H
MAIN PROC
CALL VGA
L00P:
CALL RANDOM
MOV BX,DX
CALL RANDOM
MOV DI,DX
TRYAGAIN:
XOR DX,DX
CALL RANDOM
CMP DL,200
JA TRYAGAIN
MOV AL,DL
STOSB
IN AL,60H
CMP AL,01H
JE PRESSED
JMP L00P
PRESSED:
CALL BACK
CALL DOS
MAIN ENDP
INCLUDE VGA.INC
END MAIN
|
Und jetzt der Code von VGA.INC:
|
Quellcode
|
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
55
56
|
; BEENDET DAS PROGRAMM
;
DOS PROC
MOV AH,4CH
INT 21H
DOS ENDP
;
; INITIALISIERT VGAMODUS 13H: 320 x 240
;
VGA PROC
MOV AX,0A000H
MOV ES,AX
MOV AH,00H
MOV AL,13H
INT 10H
RET
VGA ENDP
;
; REINITIALISIERT DEN TEXTMODUS
;
BACK PROC
MOV AH,00H
MOV AL,03H
INT 10H
RET
BACK ENDP
;
; SORGT FÜR ZUFALLSZAHLEN IM DX-REGISTER
;
SEED DW 3749H
HELP EQU 8405H
RANDOM PROC
MOV AX,SEED
MOV DX,HELP
MUL DX
INC AX
MOV SEED,AX
RET
RANDOM ENDP
; [EOF]
|
HELP ME!!!
F09X
PS: Mit dem CMP DL,200 JA TRYAGAIN wollt ich bewirken, dass die dunklen Farben (meines erachtens mit Werten über 200) ausbleiben.