Okej, już rozumiem. Zmodyfikowałem kod (wzorując się na innych programach) na tyle, że powinien wszystko wyświetlić (na górze argument, przez który mnożymy, na dole liczbę, która nam wyszła, czyli na górze 3 oraz 6 na dole - które uzyskujemy przez przerabianie zmiennej ARG. Tak to przynajmniej widzę).
Niestety nie wykonują się ani operacje mnożenia, ani dekrementacji (linijka 16 i 17), tak pisze kompilator. Prosiłbym o pomoc. Aktualnie stan pracy jest taki:
section .text
global _start
_start:
mov eax,4
mov ebx,1
mov ecx,ARG
mov edx,[length]
int 80h
mov sil,1
middle:
cmp [ARG],sil
jle end ;; skok, jeśli mniejsze lub równe
imul sil,[ARG]
dec [ARG]
jmp middle
end:
mov [ARG],sil
add [ARG],49
mov eax,4
mov ebx,1
mov ecx,ARG
mov edx,[length]
int 80h
mov eax,1
int 80h
section .data
ARG db 3, 0ah
length dd $-ARG
Prosiłbym o wyrozumiałość - wiem, że mogę jakieś trywialne błędy w tym momencie popełniać.