После команды
movl 8(%ebp), %ecx
в %ecx - 10. Пользуйся gdb: ассемблить надо так: as findmax.s -g -o findmax.o. Полезные команды в gdb - l, b, i reg, i reg ebp, ну и еще куча.
Если так:
movl %ebp, %ecx
addl $8, %ecx
то не коредампит, но и не работает
Дальше сам, а то у меня на ассемблер сегодня с утра что-то не... эээ... не хочется. )))
Пользователь решил продолжить мысль [time]Tue Jun 7 13:36:28 2011[/time]:
Что-то я понял, что давненько не брал в руки ассемблера... 
Попробовал, но что-то не могу сообразить (от ассемблера мешанина в голове только осталась, надо бы поправить). Могу только порекомендовать свободную книжку Programming from Ground Up - там на странице 31 как-раз аналогичная программа, но без вызова функции - это дальше.
Спасибо!
Я как раз по этой книжке и учусь

Там есть программа поиска максимума, а потом в качестве упражнения советуют сделать её же, только с использованием функции, которой в качестве параметра надо передать указатель на несколько значений.
Покопался с gdb. Похоже проблема в том, что после:
pushl items1
в стек пишется первое значение из items1 (10), а не адрес первого элемента. Как записать в стек именно указатель (адрес items1) ?
P.S. Это заметил, копируя параметр из стека в регистр, и проверяя значения регистров с помощью команд
i reg и т.д.
Как посмотреть напрямую значения локальных переменных с стеке, или просто несколько "верхних" значений со стека я так и не понял

Пробовал
info f до и после
pushl'a , пишет, что локальные переменные по неизвестном адресу

root@serg-desktop:/atest# gdb ./findmax
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /atest/findmax...done.
(gdb) break 17
Breakpoint 1 at 0x8048074: file findmax.s, line 17.
(gdb) run
Starting program: /atest/findmax
Breakpoint 1, _start () at findmax.s:20
20 pushl items1
(gdb) i reg eax ebx ecx edx esp ebp
eax 0x0 0
ebx 0x0 0
ecx 0x0 0
edx 0x0 0
esp 0xbffff370 0xbffff370
ebp 0x0 0x0
(gdb) info f
Stack level 0, frame at 0x0:
eip = 0x8048074 in _start (findmax.s:20); saved eip 0x8048074
source language asm.
Arglist at unknown address.
Locals at unknown address, Previous frame's sp in esp
(gdb) n
21 call findmax # result is in %eax
(gdb) i reg eax ebx ecx edx esp ebp
eax 0x0 0
ebx 0x0 0
ecx 0x0 0
edx 0x0 0
esp 0xbffff36c 0xbffff36c
ebp 0x0 0x0
(gdb) info f
Stack level 0, frame at 0x0:
eip = 0x804807a in _start (findmax.s:21); saved eip 0x804807a
source language asm.
Arglist at unknown address.
Locals at unknown address, Previous frame's sp in esp
(gdb) n
45 pushl %ebp
(gdb) i reg eax ebx ecx edx esp ebp
eax 0x0 0
ebx 0x0 0
ecx 0x0 0
edx 0x0 0
esp 0xbffff368 0xbffff368
ebp 0x0 0x0
(gdb) info f
Stack level 0, frame at 0x0:
eip = 0x8048088 in findmax (findmax.s:45); saved eip 0x8048088
Outermost frame: unwinder did not report frame ID
source language asm.
Arglist at unknown address.
Locals at unknown address, Previous frame's sp in esp
(gdb)