【发布时间】:2011-02-21 21:55:52
【问题描述】:
我受够了这个。一段时间以来,我一直在尝试掌握汇编,但我觉得我正在为我的编译器而不是一种语言编写代码。
我一直在使用this tutorial,但到目前为止它让我感到很痛苦。我正在使用 NASM,这可能是问题所在,但我认为它是最受欢迎的。我只是想学习最通用的汇编形式,所以我决定学习 x86。我不断遇到愚蠢的错误,比如无法增加变量。这是最新的一个:无法使用 div。
mov bx, 0;
mov cx, 0;
jmp start;
start:
inc cx;
mov ax, cx;
div 3; <-- invalid combination of opcode and operand
cmp ah,0;
jz totalvalue;
mov ax, cx;
div 5; <-- invalid combination of opcode and operand
cmp ah, 0;
jz totalvalue;
cmp cx, 1000;
jz end;
totalvalue:
add bx,cx;
jmp start;
jmp end;
end:
mov ah,4ch;
mov al,00;
int 21h;
我应该更换编译器吗?似乎划分应该是标准的。我是否需要阅读两篇教程(一篇关于 NASM,一篇关于 x86?)。对这个问题有什么具体的帮助吗?
【问题讨论】:
-
NASM 是 x86 机器码的一种汇编语言。所有 x86 asm 语言的共同点是一行 asm 源代码将汇编成一条 x86 机器指令。区别在于指令(非指令行)和用于寻址模式的语法等。其他 ISA(如 ARM)有不同的指令和寄存器名称,甚至某些东西的语法也不同。