wanwane422 发表于 2024-2-20 01:26:31

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

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

为什么我的不行,必须进入debug使用t指令,执行到给显存写入数据才显示,在dos输入exe路径,执行完了,什么都没有显示

FishC 发表于 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中显示字符的操作:

.model small
.stack

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

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

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

end main

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wanwane422 发表于 2024-2-20 01:29:06

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

鱼c论坛有没有关于汇编的qq群

FishC 发表于 2024-2-20 01:29:23

wanwane422 发表于 2024-02-20 01:29
鱼c论坛有没有关于汇编的qq群

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么甲鱼的masm5编译的程序在dos直接使用exe运行可以显示字符