2017-04-05 4 views
1

私は迷路地図を作りたいと思います。迷路を219-altのaltコードにしたいと思っています。私がemu8086にサインを入れようとすると、疑問符が表示されます。アセンブリのデータセグメントからaltコードを印刷するにはどうすればよいですか?

データセグメント上にマップを構築することを考えましたが、データセグメント上では文字列でマップを設計できますが、文字の代わりに疑問符が表示されます。
どのようにデータを印刷することができますか?そうではない場合、別の方法を提案できますか?

+0

これは、エディタの文字セットと出力システムのエンコーディング/文字セットに関する問題である可能性があります。私はemu8086に慣れていませんが、文書化する必要があります。値219のバイトを定義すると、どのシンボルが出力に出力されますか? –

答えて

1

あなたは代わりに文字自身のASCII数値コードを使用することができます。

.model small 
.stack 100h 
.data 

chars db 1,2,219,220,223,'$' ;◄■■ CHARS NON VISIBLE IN EMU. 

.code 
    mov ax, @data 
    mov ds, ax 

    mov ah, 9 
    lea dx, chars 
    int 21h   ;◄■■ DISPLAY SPECIAL CHARS. 

    mov ax, 4c00h 
    int 21h 

より複雑な解決策は単純文字を使用し、特殊な文字で、実行時にそれを置き換えることです:

.model small 
.stack 100h 
.data 

maze db '----------',13,10 ;◄■■ SIMPLE CHARS. 
     db '-  -',13,10 
     db '----------$' 

.code 
    mov ax, @data 
    mov ds, ax 

    lea si, maze 
display: 
    mov dl, [si] 
    cmp dl, '$' ;◄■■ CHECK END OF STRING. 
    je finale   
    cmp dl, '-' ;◄■■ IF THIS IS THE CHAR TO REPLACE 
    jne continue 
    mov dl, 219 ;◄■■ REPLACE SIMPLE CHAR WITH SPECIAL CHAR. 
continue: 
    mov ah, 2 
    int 21h  ;◄■■ DISPLAY CHAR IN DL. 
    inc si  ;◄■■ NEXT CHAR IN STRING. 
    jmp display 

finale: 

    mov ax, 4c00h 
    int 21h 
+1

manuel interesting ...ありがとう:) –

関連する問題