пытаюсь написать такую программу-считалочку:
Есть числа от 0 до m, которые располагаются по кругу. Счёт начинается с элемента 0. Каждый n-й элемент удаляют. Счёт продолжается с элемента, следующего за удалённым. Напишите программу, выводящую список вычеркнутых элементов. Подсказка: используйте malloc(3) для получения m + 1 байт памяти и занесите в каждый байт число 1 при помощи memset(3). Значение 1 означает, что элемент существует, значением 0 отмечайте удалённые элементы. При счете пропускайте удалённые элементы.
Для начала хочу просто разобраться с тем как использовать malloc и memset.
написала маленькую программку - хочу просто зарезервировать m байт, забить их единицами и научиться обращаться к любому из этих байт, чтоб их нулями отмечать, если это число выбыло, а gcc мне говорит: ошибка сегментации... что я делаю не так?
Код: Выделить всё
.data
input_m:
.string "vvedi kolichestvo alementov m (0-255) \n"
schitat_stroku_format:
.string "%d"
m:
.int 0
byte_poz:
.long 0
.text
.globl main
main:
pushl $input_m
call printf
pushl $m
pushl $schitat_stroku_format
call scanf
addl $12, %esp
movl $m, %edx /* */
pushl %edx
call malloc
popl byte_poz
addl $4, %esp
pushl %edx
pushl $1
pushl byte_poz
call memset
addl $12, %esp
movl $0, %eax
ret