2012-06-24 2 views
1

Я пытаюсь отобразить возврат каретки и строку в моем коде, но это не сработает. Если я распечатываю коды в виде строки, она работает. Нужна помощь. Заранее спасибо.Невозможно получить CR и LF для отображения

; 16-разрядная DOS программа, которая принимает один символ из STDIN, а затем выводит его на, 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 
+0

Wow! просто вау, в 2012 году, в этот день и в возрасте, кто-то использует masm и 16bit DOS ... просто чертовски вау! Имейте, чтобы поддержать этот вопрос как его взрыв в прошлом, но наводчик избил меня до этого ...: D – t0mm13b

+0

Как redditor, часто выраженное выражение, которое появляется в определенном sub-reddit, «Это достаточно для меня сегодня для Интернета ...*" ЛОЛ! – t0mm13b

ответ

2

Ваш код не так: Посмотрите внимательно на внутренних частях:

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

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

Что вам не хватает? INT 21 НЕ правильный! Это должно быть INT 21H

+0

ahh fcek .... вы чертовски правы там! int 21h ... ffffuuuu .../me facepalms – t0mm13b

+0

+1 от меня для напоминания мне о «h» .... xD – t0mm13b

+0

Вы могли бы сделать int 33, если хотите, так как это то же самое, что и 21H только в десятичной форме – Gunner

1

попробовать это:

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

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

Должен сказать, что это, это взрыв из прошлого ... :)

Пришлось пойти на мой любимый сайт Ralf Brown «ы Interrupt list ... вспомнить то, что было инструкция для прямого вывода на консоль ..

Edit: согласно Gunner указал .. ага «ч» отсутствует .. я слишком кровавый старый ...: P Он заслужил upvotes и т.д. :)