gpt4 book ai didi

assembly - 如何正确结束 assembly ?

转载 作者:行者123 更新时间:2023-12-05 08:28:30 30 4
gpt4 key购买 nike

我在正确终止用 Assembly 编写的 16 位 DOS 程序时遇到问题。这是部分代码:

.386P
.model flat

stack_s segment stack 'stack'
db 256 dup(0)
stack_s ends

data segment use16
data ends

code segment 'code' use16
assume cs:code, ds:data

main proc
mov ax, data
mov ds, ax

iretd
main endp

code ends
end main

问题是程序没有以正确的方式终止。 DOSBox 只是卡住。我试图了解使用调试器会发生什么,似乎程序在执行 iretd 后进入无限循环。为什么会这样?如何正确终止 16 位 DOS 应用程序?

最佳答案

Brendan 的回答显示了如何退出,但它没有定义错误级别(它将是 AL 寄存器中的任何内容......)

如果您想以错误级别 0 退出:

mov ax,0x4c00
int 0x21

如果您想以错误级别 1 退出:

mov ax,0x4c01
int 0x21

关于assembly - 如何正确结束 assembly ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821656/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com