1

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

; 一个 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
4

2 回答 2

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

于 2012-06-24T00:46:46.027 回答
1

试试这个:

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

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

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

不得不去我最喜欢的网站Ralf Brown中断列表……记住直接控制台输出的指令是什么……

编辑:正如枪手指出的那样……是的,'h'不见了……我太老了……:P他应该得到赞成票等:)

于 2012-06-24T00:42:08.450 回答