鱼C论坛

 找回密码
 立即注册
查看: 178|回复: 3

为什么甲鱼的masm5编译的程序在dos直接使用exe运行可以显示字符

[复制链接]
发表于 2024-2-20 01:26:31 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wanwane422 于 2024-2-20 01:28 编辑

为什么我的不行,必须进入debug使用t指令,执行到给显存写入数据才显示,在dos输入exe路径,执行完了,什么都没有显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-20 01:27:06 | 显示全部楼层
甲鱼的masm5编译程序可以在DOS中显示字符,而你的程序却需要进入Debug模式并使用t指令才能显示字符的原因可能有以下几个方面:

1. 编码问题:确保你的程序使用的是正确的字符编码。在DOS中,通常使用的是ASCII编码,其中每个字符都有一个对应的ASCII码值。你需要确保你的程序中使用的字符的ASCII码与你想要显示的字符的ASCII码一致。

2. 显存写入问题:如果你的程序需要向显存中写入数据来显示字符,那么你需要确保你的写入操作是正确的。你可以使用DOS中的int 10h中断来进行显存写入操作。具体来说,你可以将字符的ASCII码值存储在AL寄存器中,然后使用AH寄存器指定对显存的写入操作,最后使用int 10h中断调用来实现写入。

下面是一个简单的示例程序,展示了如何使用int 10h中断来实现在DOS中显示字符的操作:

  1. .model small
  2. .stack

  3. .data
  4.     msg db 'Hello, World!', 0

  5. .code
  6. main proc
  7.     mov ah, 09h     ; 设置显示字符串的功能
  8.     mov dx, offset msg  ; 将字符串的偏移地址放入dx寄存器
  9.     int 21h         ; 调用int 21h中断来显示字符串

  10.     mov ah, 4Ch     ; 设置程序返回的功能
  11.     int 21h         ; 调用int 21h中断来退出程序
  12. main endp

  13. end main
复制代码


这个程序使用mov ah, 09h来设置显示字符串的功能,然后将字符串的偏移地址存储在dx寄存器中。最后调用int 21h中断来显示字符串。程序运行后,你应该能在DOS中看到"Hello, World!"这个字符串的输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-20 01:29:06 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-2-20 01:27
甲鱼的masm5编译程序可以在DOS中显示字符,而你的程序却需要进入Debug模式并使用t指令才能显示字符的原因可 ...

鱼c论坛有没有关于汇编的qq群
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-20 01:29:23 | 显示全部楼层
wanwane422 发表于 2024-02-20 01:29
鱼c论坛有没有关于汇编的qq群


很抱歉,我无法提供关于鱼C论坛的QQ群信息。您可以在鱼C论坛官方网站或者论坛上寻找相关的讨论群组,或者在其他社交媒体平台上搜索与汇编编程相关的群组,以获取更多帮助和交流。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 06:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表