Ассемблер - для новичка нужен не он, а базовое понимание что такое машинные коды, чтобы иметь представление чем отличаются платформы на аппаратном уровне. Будет полезно понимание регистров и разрядности. Понимать размерность и архитектуру памяти.
Учить Си - сейчас не нужно. Во-первых на чистом С вам, как новичку, писать не придется, а как опытному программисту - выучите потом.
Учить С++ - полезно, чтобы вы могли написать что-то. Популярный язык для embedded.
Но еще важнее для системного программиста - технологии.
Возьмите ардуино и сделайте свое устройство, например простейшую управляемую розетку. Чтобы работала по usb, затем добавьте по wifi, придумайте веб-морду с API, вот уже и системно-запрограммированный готовый продукт, а вы будет знакомы с технологиями.