Ich versuche, die Farbe eines einzelnen Pixels (ich verwende 13h Grafikmodus in Emu8086), dafür benutze ich Funktion 0Dh von Interrupt 10h. Aber es ist überhaupt nicht konsistent. Es gibt nicht die richtige Farbe des Pixels und gibt mir 00 (schwarz).INT 10h Funktion 0Dh inkonsistent
Ich bin mir bewusst, dass CX im Modus 13h verdoppelt wird. Aber ich vermute sehr, dass das Problem die Form ist, die ich gezeichnet habe (zwei gefüllte Rechtecke), die zufällig 45 Grad gegen den Uhrzeigersinn heißt.
Was scheint das Problem zu sein? Und wie bekommt man die Farbe eines einzelnen Pixels konsistent?
.MODEL SMALL
.DATA
X DW ?
Y DW ?
T DW ?
linecounter dw ?
LastX DW ?
LastY DW ?
PixelClr DB ?
.CODE
.STARTUP
MOV AH, 00
MOV AL, 13h
INT 10h
MOV X, 85
MOV Y, 93
MOV linecounter, 75
Square4Top:
MOV BH, 0
MOV CX, X
MOV DX, Y
MOV T, 7
MOV AH, 0Ch
MOV AL, 01h
DrawSquare4Top:
INT 10h
INC CX
INC DX
DEC T
CMP T, 0
JNZ DrawSquare4Top
INC X
DEC Y
DEC linecounter
CMP linecounter, 0
JNZ Square4Top
MOV X, 61
MOV Y, 93
MOV linecounter, 50
Square5Top1:
MOV BH, 0
MOV CX, X
MOV DX, Y
MOV T, 7
MOV AH, 0Ch
MOV AL, 0Bh
DrawSquare5Top1:
INT 10h
INC CX
INC DX
DEC T
CMP T, 0
JNZ DrawSquare5Top1
INC X
DEC Y
DEC linecounter
CMP linecounter, 0
JNZ Square5Top1
;;;
;;; INITIALIZE MOUSE
;;;
MOV AX, 0
INT 33h
MOV AX, 1
INT 33h
MOV AX, 2
INT 33h
MouseAgain:
MOV AX, 3
INT 33h
CMP BX, 1
JNZ MouseAgain
MOV AH, 0Dh
MOV BH, 00
SHR CX, 1
INT 10h
MOV PixelClr, AL
JMP MouseAgain
END
Ich habe Ihre Quelle geändert, um zu beenden, wenn die Farbe ungleich Null ist ('test al, al'' jz MouseAgain' 'mov ah, 4Ch'' int 21h') und nach einigen hektischen Klicken endete die App schließlich (tasm + dosbox, Ich besitze keine emu8086) (Ich habe auch den 'hide cursor call' entfernt, die Dosbox VGA hat überraschend schönen" hw "Pfeil für den 320x200 Modus, mit vernünftiger Zeichnung, obwohl ich nicht sicher bin, welche Koordinate als Cursorposition zurückgegeben wird) . Übrigens zeigt Ihr Screenshot die gefüllten Formen, aber in Dosbox sehe ich sie mit "karierten" Füllungen, d. H. Jedes nächste Pixel ist schwarz, so dass es noch schwieriger ist, auf farbige Pixel zu klicken. – Ped7g
einfacher Weg zu überprüfen: nach dem Lesen des Pixels, stellen Sie es wieder auf die Farbe, die Sie gelesen haben. Das Bild sollte sich nicht ändern. Wenn dies der Fall ist, können Sie eine Ahnung bekommen, warum (Wert Skalierung, Mapping Maus Pixel <-> Bildschirm Pixel oder was auch immer) – Tommylee2k