无法显示CR和LF

时间:2012-06-24 00:36:48

标签: masm32

我正在尝试在我的代码中显示回车符和换行符,但它不起作用。如果我将代码打印成字符串就可以了。需要帮助。提前谢谢。

一个16位DOS程序,从STDIN接收一个char,然后将其打印到; 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

2 个答案:

答案 0 :(得分:2)

你的代码错了: 仔细查看int部分:

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

mov dl, 0ah ;output LF
mov ah, 02h
int 21
你错过了什么? INT 21不正确!!它应该是INT 21H

答案 1 :(得分:1)

试试这个:

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

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

不得不这样说,这是过去的爆炸...... :)

不得不去我最喜欢的网站Ralf BrownInterrupt list ...记住直接控制台输出的说明是什么..

编辑: 按照枪手的说法指出..是的,'h'缺失了......我太血腥了......:P他应该获得赞成票等等: )