Сначала я вижу несколько ошибок и вредных привычек:
GCD PROC,
dividend:DWORD,
divisor:DWORD
Объявление локальных переменных для ваших процедур - вредная привычка на мой взгляд .(результат из языков высокого уровня)
Вы должны поместить это в свой сегмент данных.Кроме того, есть синтаксическая ошибка, слова неинициализированы, поэтому вы должны объявить их следующим образом:
.DATA ?
dividend dword ?
divisor dword ?
У вас также есть проблема с регистрами для инструкции div:
xor edx,edx
mov eax,xxx ;dividend
mov ebx,yyy ;divisor
div ebx ;eax/ebx
cmp edx,0 ;remainder in edx
Сейчасчтобы использовать ваши наборы значений и разделить их, у вас есть различные варианты:
1 - переместить их вручную 1 на 1 в ваших регистрах
mov eax,dword ptr[val01] ;dividend
mov ebx,dword ptr[val02] ;divisor
2 - вы помещаете их прямо в стек (как параметры функции)
push val01
push val02
call GDC
;in GDC proc
mov eax,dword ptr[esp+8]
mov ebx,dword ptr[esp+4]
3 - поместите их в «массив» и переберите их
exercise for you