有人可以帮我纠正语法错误和无效有效地址错误吗?

问题描述 投票:0回答:1

这是 nasm x86 汇编代码,用于识别数组序列中缺失的数字:

[org 0x100]

jmp start

start:
mov si, 0
jmp outer

outer:
mov bx, test
mov ax, [bx+si]
mov cx, 0
jmp inner

inner:
mov dx, [array + cx]
cmp ax, dx
je increase
add cx, 2
cmp cx, 8
je found
jmp inner

increase:
add si, 2
cmp si, 10
je ends
jmp outer

found:
mov dx, ax

end:
mov ax, 0x4c00
int 0x21

array: dw 2,1,5,4
test: dw 1,2,3,4,5

错误输出显示第10行(无效语法)、第15行(无效有效地址)和第38行(无效语法)有错误:

我尝试解决该错误,但它一直给我相同的错误消息!

有人可以帮我解决吗?

assembly x86 nasm dosbox
1个回答
0
投票

所以 muzammil,我在您的代码中发现了三个错误:

  1. 首先,meri jaan,“测试”aik 关键字 hota hai,所以你不能用它来创建变量或数组。
  2. 其次,第 15 行是“无效地址”,即您正在使用寄存器进行计算而不是迭代器(bx、si、di)。对于数组迭代,只有这些有效。至少据我所知。
  3. 第三个实际上不是一个错误,bs ye batana tha,我将在“CX”寄存器中标识的缺失值。

致jeeeeeeeeeeeeeeeeeeeeeeeeeee,ye raha更新了代码:

[org 0x100]

start:
    mov si, 0
    mov cx, 0

outer:
    mov bx, arr
    mov ax, [bx + si]
    add si, 2
    mov di, 0

inner:
    mov dx, [array + di]
    cmp ax, dx
    je increase
    add di, 2
    cmp di, 8
    je found
    jmp inner

increase:
    add si, 2
    cmp si, 10
    je end
    jmp outer

found: mov cx, ax

end:
    mov ax, 0x4c00
    int 0x21

arr dw 1, 2, 3, 5
array dw 1, 2, 3, 4
© www.soinside.com 2019 - 2024. All rights reserved.