Re: .. never used .. ?
Back in the (very) late 70's at a university, my PDP-11 assembly language class was taught by a professor that LOVED ALGOL. Brilliantly, he required all assembly language assignments to be accompanied with a "high level language" pseudo-program. Of course, it had to at least LOOK like ALGOL or you'd get a LOT of uncomplimentary comments when he returned it to you. I resisted but it was futile. So I started handing in the ALGOL-like pseudo code along with the homework assignment [which always worked].
But the focus of that class wasn't assembly language per se; rather, it was on structures and lists and other things that languages _like_ ALGOL (and also C) are PERFECT for. I do not recall what kind of structure and/or pointer support you had in ALGOL, but I think there was at least _something_. 'C' of course took this concept, ran with it, and basically INVENTED how it's done from that point forward.
NOTE: I've also had to work with FORTRAN 'EQUIVALENCE' and 'COMMON' blocks which indirectly accomplish the same thing, in a 'hobbled' kind of way. Pure assembly is NEARLY as 'hobbled' though. On the PDP-11, and with good x86 assemblers, you can specify an array index as a register offset and 'sort of' look like an index, and maybe 'struct.member' as an offset as well. But old assemblers had name size limits, and you had to get very creative with names....