首页 > 解决方案 > 这个汇编代码有问题吗?

问题描述

这段代码是使用 Turbo Assembler 组装的,但是当我尝试在 DOSBox 中运行它时,它会冻结并且 DOSBox 死掉。有什么问题吗?

TITLE SAMPLE PROGRAM
.MODEL SMALL
.STACK 64
.DATA
.CODE
MYCODE PROC
    MOV AX,04
    MOV BX,0212
    CMP AX, BX
    JG action1
    JLE action2
action1:
    ADD AL, 30
    JMP exit
action2:
    ADD BL, 20
    JMP exit
exit:
    MOV AX, 4CH
    INT 21H
MYCODE ENDP
END MYCODE

标签: assemblyruntime-errortasmdosbox

解决方案


退出到 DOS是通过设置和调用AH来完成的。通过编写,您将设置此值而不是. 在 AL 中,您可以设置退出代码。4CHint 21hMOV AX,4CHALAH

要么做(选项1):

mov ah,4CH
int 21h

或(选项 2)

mov AX,4C00H ; or change 00 to any exit code you want.
int 21h

推荐阅读