Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

13.06.2005, 13:52

[Assembler] VGA-Problem

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.

Anonymous

unregistriert

2

13.06.2005, 13:54

Ooooops. In VGA.INC fehlt noch was (einfach obendran denken):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;              
;  [VGA HEADER BY F09X]  
;                  
;            
;              

;
;   WARTET AUF [ESC] UND BEENDET DAS PROGRAMM DANN
;

KEY PROC
    IN AL,60H
    CMP AL,01H
    JNE KEY
    CALL BACK
    CALL DOS
KEY ENDP



;


F09X