装配中出现奇怪的字符?

2024-04-30

我写了以下代码:

 .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(使用前将#替换为@)

装配中出现奇怪的字符? 的相关文章

随机推荐