1

コードでキャリッジ リターンとライン フィードを表示しようとしていますが、機能しません。コードを文字列として出力すると、機能します。助けが必要です。前もって感謝します。

; STDIN から 1 文字を受け取り、それを ;STDOUT に出力する 16 ビット DOS プログラム

    .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割り込みリストに行かなければなりませんでした...直接コンソール出力の指示が何であったかを覚えておくために..

編集: Gunnerが指摘したように..ええ、「h」がありません..血まみれの年を取りすぎています... :P彼は賛成票などに値しました:)

于 2012-06-24T00:42:08.450 に答える