Защита от переполнения буфера - это не пара магических инструкций, а проверка при работе с массивами или выделенными участками памяти (впрочем, для C/C++/ASM это примерно одно и то же), что указатель не выходит за границу выделенной памяти. Реализовано может быть самыми разными способами. Например, в C есть функция strncpy, которая делает всё то же самое, что strcpy, только проверяя, что копируется не более заданного количества байтов. Если вы правильно передали в неё размер буфера, то переполнения при операции не произойдёт.
Так что на языках низкого уровня только проверки, проверки и ещё раз проверки.