@pepl213

Почему выдаёт ошибку в fasm?

format ELF executable 3
entry start

segment readable executable

start:
	mov	eax,4
	mov	ebx,1
	mov	ecx,menu
	mov	edx,menu_size
	int     80h
select_loop:
	mov eax,4
	mov ebx,1
	mov ecx, select
	mov edx, select_size
	int 80h

	; read data
	mov eax,3
	mov ebx,1
	mov ecx,buffer
	mov edx,1
	int 80h

	cmp buffer,'0'
	je exit
	cmp buffer, '1'
	je c1
	cmp buffer,'2'
	je c2
	jmp select_loop

c1:
	mov eax,4
	mov ebx,1
	mov ecx, hello
	mov edx, hello_size
	int 80h
c2:
	mov eax,4
	mov ebx,1
	mov ecx, go_away
	mov edx, go_away_size
	int 80h


exit:
	mov eax,1
	xor ebx,ebx
	int 80h
segment readable writeable

menu    db '1 - Print hello',13,10
        db '2 - Print go away',13,10
        db '0 - Exit',13,10
menu_size = $-menu
select  db 13,10,'Select>'
select_size = $-select
hello   db 13,10,'Hello!',13,10,13,10
hello_size = $-hello
go_away db 13,10,'Go away!',13,10,13,10
go_away_size = $-go_away
buffer db ?

Код, который считывает значение, кладет в buffer, сравнивает значения:
если buffer=='0' , тогда exit
если buffer=='1' , тогда print "Hello"
если buffer=='2' , тогда print "Go away"

Но fasm выдаёт ошибку:
flat assembler  version 1.73.02  (16384 kilobytes memory)
program.asm [26]:
	 cmp buffer,0
processed: cmp buffer,0
error: invalid operand.

Почему? И как упростить код?
  • Вопрос задан
  • 571 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А случаем не cmp [buffer], '0'?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы