Начинать изучение программирования однозначно имеет смысл с изучения алгоритмов. Тут три причины:
Сейчас уровень "железа" (а именно это вотчина ассемблера) нужен в относительно небольшом проценте задач, и даже там стараются использовать высокоуровневый С.
Времена, когда "студент со знанием ассемблера" мог написать реальный код (не тестовый на пару строчек, а что-то серьёзное) оптимальнее компилятора, закончились в прошлом веке. Сейчас, чтобы произошло что-то подобное, должно случиться чудо как минимум. Нет, отдельные гуру с опытом работы 30+ лет могут (пусть и затратив бездну времени), обыграть компилятор на доли процента, но новичок будет проигрывать всегда, дополнительно сажая прорву ошибок.
В крупных задачах большинство тормозов идут не от оптимизации под железо, а от алгоритмов. Что толку от того, что вы знаете, как заставить железо работать на 5% быстрее, если у вас 100000 записей и алгоритм сложностью 2^N?
Поэтому, повторюсь, начинать имеет смысл с алгоритмов. Если же есть желание потом связаться с железом на низком уровне, ассемблер станет хорошим дополнением. Но потом, и не факт, что станет.
Паскаль я бы тоже выкинул. Его создавали для изучения основ, но реального использования он не имеет уже давно. Язык, фактически, мёртв. Если уж вам так близок уровень железа, что подумываете об ассемблере, начните сразу с C. И от железок далеко не уйдёте, и переход на что-то более актуальное не таким болезнеенным, как если начинать с паскаля, будет.
Паскаль, асемблер... Вы в каком временном промежутке живете? Никому не нужны данные языки уже лет 15 как, если не больше.
Вы просто будете знать как работает память, перемещения байтов из ячеек в ячейки, для кругозора поможет + для понимания языков высокого уровня
Для написание эффективного кода нужно изучать алгоритмы, дискретную математику и т.д.
Язык программирования при этом вторичен.
Порекомендую языки общего назначения со строгой типизацией. Тот же паскаль, python.