我有 NASM 代码:
请注意,在更正我的第一个错误之前,这是原始代码(请参阅下面的编辑):
[org 0x0100]
jmp start
Numbers: dw 10, 40, 20, 14, 19, 13, 50, 6, 60, 14
swap: db 0
start: mov bx, 0
mov byte [swap], 0
loop1: mov ax, [Numbers+bx]
cmp ax, [Numbers+bx+2]
jle noswap
mov dx, [Numbers+bx+2]
mov [Numbers+bx+2], ax
mov [Numbers+bx], dx
mov byte [swap], 1
noswap: add bx, 2
cmp bx, 18
jne loop1
mov ax, 0x4c00
int 0x21
我正在使用此命令汇编:
nasm -f elf Max.asm
我收到此错误:
错误:无法识别的指令组织
为什么我会收到此错误,我该如何解决?
编辑:根据评论中的建议移除org
语句周围的括号后,我现在收到此错误:
Max.asm:1:错误:解析器:预期指令
答案 0 :(得分:0)
originate指令告诉汇编器从给定值初始化程序中数据和代码的所有偏移量。
在编写小型(通常是.COM文件)DOS程序时使用 org 0x0100
来补偿PSP(Program Statement Prefix)
。
如果您正在使用linux,那么添加orginate指令是没有意义的。
nasm -f bin max.asm
可以工作,但之后只能在DOSBOX中执行。