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

TASM汇编编译提示Operand types do not match错误求助

报错信息:FileName.ASM(12) Operand types do not match

错误原因
  • 变量var1使用db关键字声明,属于8位单字节类型,而dx是16位通用寄存器,x86汇编要求赋值操作的两个操作数位宽必须匹配,二者类型不匹配因此触发编译错误。
  • 你调用的int 21h ah=2是DOS单字符输出功能,要求待输出的ASCII码仅需存入8位的dl寄存器,无需操作dx的高8位dh,原本的写法也不符合功能调用的参数规范。
解决方案

将第12行的mov dx, var1修改为mov dl, var1即可修复编译错误。
如果你有其他需要将8位变量赋值给16位寄存器的场景,可以使用零扩展指令movzx dx, var1或者符号扩展指令movsx dx, var1完成位宽匹配后再赋值,本场景不需要该操作。
另外原代码中输出换行、回车的mov dx, 10、mov dx, 13也建议同步修改为mov dl, 10、mov dl, 13,符合中断调用的参数要求。

修正后完整可运行代码
.model small
.stack 100h
.data
var1 db 65
var2 db 1
.code
m       proc
        mov ax, @data
        mov ds, ax
        mov cx, 5          
     x:                     
        mov dl, var1         
        mov ah, 2             
        int 21h
        mov dl, var2          
        add dl, 48            
        mov ah, 2              
        int 21h
        inc var1
        inc var2        
        mov dl, 10            
        mov ah, 2
        int 21h        
        mov dl, 13
        mov ah, 2
        int 21h
        loop x             
  
        mov ah, 4ch          
        int 21h
m       endp
end     m

内容的提问来源于stack exchange,提问作者Hanson Deck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:18:01