我写了以下代码:
.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
问题是它显示了奇怪的字符,中间有正确的句子,到底是什么问题?
我写了以下代码:
.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
(和es
?)指向您的 PSP(程序段前缀),这通常不是您的数据所在的位置......您必须设置ds
(es
如果你要使用它)你自己。
“为什么要学习 16 位汇编?” 是个好问题。“为什么要学习组装?” 是另一个好问题。你可能永远不会用它写任何“严肃”的东西。但它允许您以 HLL 不会的方式了解“幕后”发生的事情,并且 16 位允许您了解分段内存模型。32 位代码也是分段的,但是虽然这些段是“不同的”,但它们通常指向相同的内存,您通常可以忽略它们 - 操作系统会为您处理所有这些。
此外,我们中的一些人疯狂到认为这很有趣!