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 设置的。
我有一个很短的汇编 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) 被打印在一个巨大的偏移处。见图
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 设置的。