CR en LF kunnen niet worden weergegeven

Ik probeer de carriage return en line feed in mijn code weer te geven, maar het werkt niet. Als ik de codes als een tekenreeks afdruk, werkt het. Hulp gevraagd. Bij voorbaat dank.

; Een 16-bits DOS-programma dat een enkele char van STDIN ontvangt en dit vervolgens afdrukt naar; STDOUT

    .MODEL small
    .stack 100h

    .data

    char_prompt     db  'Please input a character: ','$'
    out_msg1        db  'Character entered is: ','$'
    out_msg2         db 0dh,0ah, '$'    

    .code
    start:

    mov ax, @data
    mov ds, ax ; Set DS segment

    mov dx, offset char_prompt; display msg1
    mov ah,9    
    int 21h    

    mov ah, 01h ;store char in BL
    int     21h
    mov bl, al

    mov dl, 0dh; ;output CR
    mov ah, 02h  
    int 21

    mov dl, 0ah ;output LF
    mov ah, 02h
    int 21

    mov dx, offset out_msg1 ;display msg2
    mov ah,9
    int 21h    

    mov     dl, bl ;display char  
    mov     ah, 02h  
    int 21h

    mov ax, 4C00h
    int 21h

    end start
1
Wauw! gewoon wow, in 2012, in deze tijd, iemand die masm en 16bit DOS gebruikt ... gewoon verdomde wow! Moet deze vraag opwaarderen als een knaller in het verleden, maar schutter sloeg me erin ...: D
toegevoegd de auteur t0mm13b, de bron
Als een redditor, de vaak genoemde uitdrukking die in een bepaalde sub-reddit verschijnt, " dat is genoeg internet voor mij vandaag ... " LOL!
toegevoegd de auteur t0mm13b, de bron

2 antwoord

Uw code is verkeerd: Kijk goed naar de int-delen:

mov dl, 0dh; ;output CR
mov ah, 02h  
int 21

mov dl, 0ah ;output LF
mov ah, 02h
int 21

Wat mis je? INT 21 is NIET correct !! Het moet INT 21H zijn

2
toegevoegd
ahh fcek .... je bent verdomd goed daar maat! int 21h ... ffffuuuu .../ik facepalms
toegevoegd de auteur t0mm13b, de bron
+1 van mij omdat ik me aan de 'h' heb herinnerd .... xD
toegevoegd de auteur t0mm13b, de bron
Ahhh maar int 33h was de muis: P lol (j/k)
toegevoegd de auteur t0mm13b, de bron
Je zou int 33 kunnen doen als je dat zou willen aangezien het hetzelfde is als 21H alleen in decimaal
toegevoegd de auteur Gunner, de bron
@Gunner bedankt voor het antwoord. Jullie zijn scherp !!! Ik heb net dat gemist en ja ik weet het verschil tussen decimale en hexadecimale voor de waarde van 21. Bedankt iedereen.
toegevoegd de auteur user1096770, de bron

probeer dit:

mov ah, 06h
mov dl, 0dh ; CR
int 21h

mov ah, 06h
mov dl, 0ah ; LF
int 21h

Moet dit zeggen, dit is een ontploffing uit het verleden ... :)

Moest naar mijn favoriete site gaan Ralf Brown Onderbrekingslijst ... om te onthouden wat de instructie was voor de uitvoer van de directe console ..

Edit: as per Gunner pointed out.. yeah the 'h' is missing.. am too bloody old... :P He deserved the upvotes etc :)

1
toegevoegd