2017-04-05 39 views
1

我想制作一张迷宫地图,并且我希望让迷宫成为219 - █的alt代码的角色。当我尝试将标志放在emu8086上时,它显示一个问号。如何在组件上打印数据段的替代代码?

我想过在数据段上构建地图,因为它不小,在数据段上,我可以用字符串设计地图,但它只显示问号而不是我想要的字符。
我如何从数据打印他们,如果我不能那么你可以建议另一种方式?

+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有趣...谢谢:) –