You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MASM致命错误:unmatched blocked nesting : DELETE 问题求助

MASM编译错误:unmatched blocked nesting : DELETE 排查与修复

错误原因

  • 你同时混用了传统段定义语法(DELETE SEGMENT/DELETE ENDS)和简化段伪指令(.model、.DATA、.CODE),这两种语法不能在同一段代码中混用。MASM会把简化段指令识别为传统段内部的嵌套块,从而触发段嵌套不匹配的错误,哪怕修改段名也无法解决。
  • 额外冲突:org 0100h是COM程序专用的定位指令,而你搭配了.model small(对应EXE程序),两者逻辑不兼容。

修复方案

方案1:用简化段伪指令编写EXE程序

这是MASM中更常用的写法,适合初学者:

.model small
.stack 100h
.DATA
    filename db 'FILE1.txt', 0
    success_msg db 'File deleted successfully', 0DH, 0Ah, '$'
    error_msg db 'File deletion unsuccessful', 0DH, 0Ah, '$'

.CODE
Start:
    mov ax, @DATA
    mov ds, ax
    ; 调用DOS删除文件功能
    mov ah, 41h
    lea dx, filename
    int 21h

    ; 检查错误标志
    jc error

    ; 显示成功提示
    mov ah, 09h
    lea dx, success_msg
    int 21h
    jmp exit

error:
    ; 显示错误提示
    mov ah, 09h
    lea dx, error_msg
    int 21h

exit: 
    mov ah, 4Ch
    int 21h
END Start

方案2:用传统段定义编写COM程序

COM程序要求所有段合并为一个,且必须加org 0100h:

DELETE SEGMENT
assume cs:DELETE, ds:DELETE, ss:DELETE
org 0100h

Start:
    ; COM程序中DS、CS、SS默认指向同一段,无需手动初始化DS
    ; 调用DOS删除文件功能
    mov ah, 41h
    lea dx, filename
    int 21h

    ; 检查错误标志
    jc error

    ; 显示成功提示
    mov ah, 09h
    lea dx, success_msg
    int 21h
    jmp exit

; 数据必须放在代码之后(COM程序要求)
filename db 'FILE1.txt', 0
success_msg db 'File deleted successfully', 0DH, 0Ah, '$'
error_msg db 'File deletion unsuccessful', 0DH, 0Ah, '$'

error:
    ; 显示错误提示
    mov ah, 09h
    lea dx, error_msg
    int 21h

exit: 
    mov ah, 4Ch
    int 21h

DELETE ENDS
END Start

编译说明

  • EXE程序编译命令:masm yourfile.asm; link yourfile.obj;
  • COM程序编译命令:masm /t yourfile.asm;(/t参数直接生成COM格式文件)

内容的提问来源于stack exchange,提问作者Michael Bryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:13:24