汇编语言:VSCode ASM扩展不能识别自定义标识符‘c‘的解决方法

答案是从以下博文中搜到的,原文链接如下。【感谢原作者】。

【汇编BUG】ML Nonfatal Error A2008_*木易先生*的博客-CSDN博客_汇编a2008

但我遇到此报错时的代码,与原作者不同,故将我的情况也贴上来,算是一个补充,方便大家后续查询。

我遇到此报错时的代码,来自《汇编语言(第4版)》实验5第(5)题。完整代码为:

assume cs:code

a segment
    db 1, 2, 3, 4, 5, 6, 7, 8
a ends

b segment
    db 1, 2, 3, 4, 5, 6, 7, 8
b ends

c segment
    db 0, 0, 0, 0, 0, 0, 0, 0
c ends

code segment
start:
    mov ax, c
    mov es, ax

    mov bx, 0
    mov cx, 8
s:
    ; Set ds to fetch a:[bx]
    mov ax, a
    mov ds, ax
    mov dl, [bx]

    ; Set ds to fetch b:[bx]
    mov ax, b
    mov ds, ax

    ; Add b:[bx] to a:[bx]
    add dl, [bx]

    ; Write the sum to c:[bx]
    mov es:[bx], dl
    inc bx
    loop s

    mov ax, 4c00h
    int 21h
code ends

end start

如果使用Dosbox中的ASM编译,则如上程序不会出现编译错误。但如果使用VSCode安装的MASM扩展来编译,则会出现如下报错:

错误出现在源程序的这一段:

关于错误原因,转载的原文中已经说明——VSCode的MASM扩展,会将C(不区分大小写)当作保留字,故如上代码将c作为段名使用,是不合法的。

解决方法很简单:将c改为其他标识符即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值