Assembly 如何从部件上的数据段打印alt代码?

Assembly 如何从部件上的数据段打印alt代码?,assembly,Assembly,我想制作一个迷宫地图,我想让迷宫的字符是219-█ . 当我试着把标志放在emu8086上时,它显示了一个问号 我考虑在数据段上构建地图,因为它不小,在数据段上我可以用字符串设计地图,但它只显示问号,而不是我想要的字符。 如何从这样的数据中打印它们?如果我不能,那么您可以建议另一种方法吗?您可以使用ASCII数字代码而不是字符本身: .model small .stack 100h .data chars db 1,2,219,220,223,'$' ;◄■■ CHARS NON VI

我想制作一个迷宫地图,我想让迷宫的字符是219-█ . 当我试着把标志放在emu8086上时,它显示了一个问号

我考虑在数据段上构建地图,因为它不小,在数据段上我可以用字符串设计地图,但它只显示问号,而不是我想要的字符。

如何从这样的数据中打印它们?如果我不能,那么您可以建议另一种方法吗?

您可以使用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

这可能是关于编辑器的字符集和输出系统的编码/字符集的问题。我不熟悉emu8086,但它应该被记录下来。如果定义一个值为219的字节,输出中将打印哪些符号?