Мне понадобился Asm, когда мне надо было написать программу для игры, чтобы из линукс можно было смотреть количество игроков на сервере (игра под винду).
История
Сначала я анализировал сетевые пакеты (через Wireshark), чтобы понять, как виндовый клиент игры взаимодействует с сервером, когда получает от него нужную информацию. Идея была в том, чтобы написать программу, которая делает то же самое, как будто это реальный клиент игры, но это была бы моя программа, которая работает под любой системой.
Всё было понятно, кроме одного: непонятно было, как клиент игры получает список доступных серверов. Сервер их как-то сжимал или шифровал зачем-то и передавал единственным большим ответом (больше никуда бы они не поместились кроме этого ответа). Такая мелочь всё портила, всё было понятно и до и после кроме того, как получить список серверов, чтобы дальше опрашивать их.
Вся эта логика по расжатию или расшифровке находилась в одной из dll игры (отвечающей за сеть). То есть её надо было продизассемблировать, найти этот участок кода и понять, что там происходит. А ассемблер я тогда не знал, поэтому даже если бы я смог её продизассемблировать, я бы просто не смог понять результат.
Вот такая маленькая хрень всё испортила. Кучу времени потратил на сетевой анализ, а запоролося на такой мелочи - не знал ассемблер.
Так что учи ассемблер, он нужен будет тогда, когда будешь делать что-то реальное (не учебное). Не будешь знать - не будет программы.