1
Ich benutze emu8086 Assembler und ich bin neu in der Assemblersprache. Ich möchte alle A-Z Alphabete in gelber Farbe mit schwarzem Hintergrund drucken. Meine Schleife funktioniert nicht. Es läuft weiter und nur B-Alphabet wird angezeigt.
Kann mir bitte jemand helfen? Hier ist mein Code:Loop funktioniert nicht zum Drucken von Alphabeten
include emu8086.inc
ORG 100h
MOV AX,0B800h
MOV DS,AX
MOV CX,26
ALPHABETS:
MOV CL,41h
ADD CX,1
MOV CH,00001110b
MOV BX,0x0000
MOV [BX],CX
loop ALPHABETS
RET
Versuche durch es in Ihrem Kopf zu Fuß: Sie setzen cl bis 41h, du fügst 1 hinzu, du schreibst es, dann fährst du zurück zu ALPHABETS wo du .... –
@DavidWohlferd 'include emu8086.inc ORG 100h' 'MOV AX, 0B800H' ' MOV DS, AX' 'MOV CX, 25' ' MOV AH, 2' 'MOV DL, 65' ' alpha: '' INT 21h' 'INC DL' 'MOV DH, 00001110b' ' ADD DH, 1 ' 'MOV BX, 0x0000' ' MOV [BX], DX' 'Schleife alpha' ' RET' jetzt sein Druck aber ** A ** verwandelt sich am Ende in ** Z ** und gelbe Farbe gilt nur für ** Z **, was beim Start ** A ** war. Wo ich falsch liege, lass es mich wissen – haider
Unter DOS gab es 2 Möglichkeiten, Dinge anzuzeigen: 1) Schreibe direkt in den Videospeicher bei 0B800h oder 2) Benutze DOS (oder BIOS) Interrupts wie 'int 21h'. Ihr neuer Code versucht beides zu tun, was das Lesen erschwert. Ich glaube nicht, dass "int 21h" eine Möglichkeit hat, Attribute (Farben) auszugeben. Wenn das wichtig ist, müssten Sie entweder das Zeichen und sein Attribut in den Speicher schreiben (Methode 1), oder Sie verwenden ['int 10h'] (https://en.wikipedia.org/wiki/INT_10H) mit AH = 09h . –