Знаю c#, немного с++.
Забудьте это.
В том, что вы называете "системное программирование" ни с тем, ни с другим - делать нечего.
P.S. по началу буду использовать Windows, но в будущем(далеком) думаю пересесть на Archlinux.
И это забудьте.
Только Linux (ну, если очень хочется - FreeBSD, OpenSolaris, QNX, ...)
Возня с Windows вам ничего не даст ни в смысле опыта, ни в смысле знаний.
P.P.S. Думаю, что перед освоением ассемблера нужно больше узнать обо всем.
А вот ассемблер вам понадобится в последнюю очередь, если вообще понадобится...
P.S. Кстати, позвольте полюбопытствовать, какой именно ассемблер вы собрались осваивать: ARM? MIPS? AMD64? ...