Assembly 检查字符串中的行中是否有3个相同的字符
我的代码不起作用。 问题在于lea(第6行)。NetBeansIDE说“操作码和操作数的组合无效”。 有什么办法可以让它工作吗? 任何帮助都将不胜感激Assembly 检查字符串中的行中是否有3个相同的字符,assembly,nasm,Assembly,Nasm,我的代码不起作用。 问题在于lea(第6行)。NetBeansIDE说“操作码和操作数的组合无效”。 有什么办法可以让它工作吗? 任何帮助都将不胜感激 global _main section .data text: db "fdkvemDFderft", 0 section .text _main: lea si, text no: lodsb or al,al jz exit cmp al,[si] jnz no cmp al,[si
global _main
section .data
text: db "fdkvemDFderft", 0
section .text
_main:
lea si, text
no:
lodsb
or al,al
jz exit
cmp al,[si]
jnz no
cmp al,[si+1]
jnz no
;code
exit:
;code
mov eax, 4C00h
ret
尝试:
lea加载寻址模式地址计算产生的地址。因此,我们将标签表示为地址
很多人可能只是
mov si, text
谢谢然而,它仍然不起作用。尽管现在它编译起来没有问题。当我写‘mov-si,text’时,它会告诉我“coff格式不支持非32位重定位”,这是另一个问题。不要生成COFF格式——这没有什么意义,因为您使用MS/DOS函数调用终止程序(顺便说一句,应该将4c00H加载到AX中)。您可能想要生成一个COM文件,它是一个组织为0100H的普通二进制图像。COFF主要用于Unix,在ELF或多或少地取代它之前。实际上,您不需要终止—您只需要开始设置终止,但没有完成它。虽然AX中的4c00可能也是终止windows程序的一种方式,但我对windows一无所知。
lea si, [text]
mov si, text