微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决DOSBOX-X 错误:换行符向右偏移

我有一个很短的汇编 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,','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) 以巨大的偏移量打印。看图

problem

任何人都可以帮忙吗? 谢谢 附注 该程序在 vanilla dosBox 中运行良好

解决方法

DOSBox 遵循 DOS 规则,要求回车 (13) 和换行符 (10) 输出换行符。

您的代码仅使用换行符,因此文本仅删除一行。

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。