Я думал, чтобы оно выглядело как-то:
FuncNames:
db 'CreateFileA', 0
db 'CloseHandle', 0
db 'ExitProcess', 0
dd 1
Functions:
dd 0
dd 0
dd 0
Тем самым не нужно резервировать кучу переменных с именами, и мусорить в .data, а брать с оффсетами Functions+0 = CreateFileA
Functions+1 = CloseHandle
Только вот сложности с проведением инициализации. Приходится писать функцию, которая будет читать строчки до 0 в FuncNames с проверкой итерации (чтение - ноль? - вернуть адрес в стэк - чтение - ещё ноль? - это вторая строка, вернуть адрес в стэк - чтение - 1 - это конец таблицы, все адреса в таблицы в стэке)
А потом брать из стэка
push ESP+OffsetFunctionName
push edi
call [GetProcAddress]
mov [Functions+ecx], eax
(После этого очистить стэк от аргументов GetProcAddress )