【发布时间】:2014-10-15 13:23:23
【问题描述】:
我正在尝试制作一个简单的汇编程序,即添加两个数字并显示它们,然后减去两个数字并显示它们。但是我遇到了错误:
oppgave3.asm:28: error: parser: instruction expected
oppgave3.asm:29: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:30: error: symbol `move' redefined
oppgave3.asm:30: error: parser: instruction expected
oppgave3.asm:31: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:32: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:33: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:37: error: symbol `move' redefined
oppgave3.asm:37: error: parser: instruction expected
oppgave3.asm:38: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:39: error: symbol `move' redefined
oppgave3.asm:39: error: parser: instruction expected
oppgave3.asm:40: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:41: error: comma, colon, decorator or end of line expected after operand
oppgave3.asm:42: error: comma, colon, decorator or end of line expected after operand
这就是我想要做的:我有两个子例程,一个用于加法,一个用于减法。
section .data
a dw 4
b dw 2
section .bss
c resb 1
section .text
global_start:
_start:
call addition
mov eax,4
mov ebx,1
mov ecx,c
mov edx,1
int 0x80
call subtraction
mov eax,4
mov ebx,1
mov ecx,c
mov edx,1
int 0x80
addition:
move eax,[a]
sub eax '0'
move ebx,[b]
sub ebx '0'
add eax and ebx
add eax '0'
mov [c],eax
ret
subtraction:
move eax,[a]
sub eax '0'
move ebx,[b]
sub ebx '0'
sub eax and ebx
add eax '0'
mov [c],eax
ret
【问题讨论】:
-
你希望
add eax and ebx做什么 - 你可能是指add eax, ebx?还有许多其他说明也缺少逗号,例如sub eax '0'应该是sub eax, '0'。另请注意,错误消息非常有用 - 它们似乎确实告诉您问题所在 - 尝试更仔细地研究它们。 -
sub ebx '0' 应该是
sub ebx, '0'否?