我写了以下代码:
.386
.model small
.stack 100h
.data
text db "Paper",0
.code
start :
lea dx , text
mov ah , 9h
int 21h
mov ah , 4ch
int 21h
end start
end
问题是它显示奇怪的字符,中间有正确的句子,到底是什么问题?
; your code
start:
mov ax, @data
mov ds, ax
;your code
我想这会解决你的问题。 Dos 在加载 .com 文件时设置cs
= ds
= es
。加载 .exe 格式时并非如此cs
当然,它指向你的代码,但是ds
(and es
?)指向您的 PSP(程序段前缀),这通常不是您的数据所在的位置...您必须设置ds
(and es
如果您要自己使用它)。
“为什么要学习16位汇编?”这是一个好问题。 “为什么要学习汇编?”这是另一个好问题。你很可能永远不会用它写出任何“严肃”的东西。但它允许您以 HLL 无法做到的方式了解“幕后”发生的情况,并且 16 位允许您了解分段内存模型。 32 位代码也是分段的,但是虽然这些段“不同”,但它们通常指向相同的内存,您通常可以忽略它们 - 操作系统会为您处理所有这些事情。
此外,我们中的一些人疯狂到认为这很有趣!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)