DOSBOX-X 错误:换行符向右偏移

DOSBOX-X Bug: newline is offset to the right

我有一个很短的汇编 TASM 程序:

IDEAL
MODEL small
STACK 100h
DATASEG

;creating all the messages
opening_message db 10, 'This is an encryption program.', 10, 'This program allows you to encrypt a message into giberish,', 10, 'send it to a friend, who can then decrypt it back into text$'


CODESEG
start:
    mov ax, @data
    mov ds, ax
; --------------------------
; Your code here
; --------------------------
    ;We clear the screen of dosbox
    mov ax, 13h
    int 10h
    mov ax, 2
    int 10h

    ;print opening message
    lea dx, [opening_message]
    mov ah, 9
    int 21h
exit:
    mov ax, 4c00h
    int 21h
END start

当我尝试 运行 DOSBOX-X 中的程序时,最新版本,64 位,字符串中的换行符 (10) 被打印在一个巨大的偏移处。见图

谁能帮忙? 谢谢 P.S。 该程序在 vanilla dosbox

中运行良好

DOSBox 遵守 DOS 规则,要求同时使用回车符 return (13) 和换行符 (10) 来输出换行符。

您的代码只使用换行符,因此文本只掉一行。

opening_message db 13, 10, 'This is an encryption program.'
  db 13, 10, 'This program allows you to encrypt a message into giberish,'
  db 13, 10, 'send it to a friend, who can then decrypt it back into text', 13, 10, '$'

;We clear the screen of dosbox
mov ax, 13h
int 10h
mov ax, 2
int 10h

为什么先设置图文屏13h(320x200)再设置文字屏02h(80x25)? 请注意,通常 80x25 文本屏幕是使用模式编号 03h 设置的。