jne.hex1 ; то переходим к.hex1
mov al, 'o' ; иначе 'o' сохраняем
mov BYTE ptr [ebx+esi+1], al; в последний байт массива
add BYTE ptr [ebx], 1; и увеличиваем длину массива на 1
jmp.exitperepolnenie ; переход на выход
hex1:
cmp ecx, 16 ; если выходная система не равна 16
jne.exitperepolnenie ; то переходим к.exitperepolnenie
mov al, 'h' ; иначе 'h' сохраняем
mov BYTE ptr [ebx+esi+1], al ; в последний байт массива
add BYTE ptr [ebx], 1; и увеличиваем длину массива на 1
jmp.exitperepolnenie ; переход на выход
errmax:
mov flag, 5; присваеваем flag код ошибки 5
exitperepolnenie:
pop edi; возвращаем из стека edi
ret
perepolnenie endp
;##########################################################################
; in eax указатель на строку, edx разрядность выходной строки
; out флагошибки
public perevod
push eax
push ebx
push ecx
push edx
pushedi
push esi
mov ebx, eax; записываем в ebx указатель на строку
mov oss, ecx; записываем в oss разрядность выходной строки
xor eax, eax; обнуляем eax
mov al, BYTE PTR [ebx]; записываем в edi длину строки
mov edi, eax; копируем в edi длину строки
cmp edi, 0; если длина строки равна нулю,
je.pustayastroka; то переходим к.pustayastroka
call inputss; определяем входную разрядность, результат в iss
cmp flag, 0; если флаг ошибки не равен нулю,
jne.exitperevod; то переход к.exitperevod
call verinput; переводим символы в массиве в цифры и проверяем правильность ввода
cmp flag, 0; если флаг ошибки не равен нулю,
jne.exitperevod; то переход к.exitperevod
call perepolnenie; проверяем на превышение максимальных значений и производим перевод числа
jmp.exitperevod; переход к.exitperevod
pustayastroka:
mov flag, 1; присваеваем флагу код 1
exitperevod:
cmp flag, 0; если флаг равен нулю
je.end; то переход в конец
mov eax, flag; копируем флаг в eax
mov BYTE PTR [ebx], 1; устанавливаем длину строки в 1
mov BYTE PTR [ebx+1], al; записываем в первый элемент массива код ошибки
end:
pop esi
pop edi
pop edx
pop ecx
pop eax
ret
perevod endp
end