Sorry, I don’t remember what I used then as a tutorial, possibly nothing, and I don’t write assembly often, it was just an opinion based on the experience from the beginning of my comment. That said:
You have call and return, so you can use procedures with return. You have compare and conditional jump instructions. And you have timers and interrupts for scheduling. That allows for basic structure.
You split your program functionally into many files (say, one per procedure) and include those. That allows for basic complexity management.
To use OS syscalls you need to look for the relevant OS ABI reference, but it’s not hard.
So all the usual. Similar to the dumber way of using C.
In general writing (EDIT: whole programs, it’s used all the time in codecs and other DSP, at the very least) in assembly languages is unpopular not because it’s hard, but because it’s very slow.
Sorry, I don’t remember what I used then as a tutorial, possibly nothing, and I don’t write assembly often, it was just an opinion based on the experience from the beginning of my comment. That said:
You have call and return, so you can use procedures with return. You have compare and conditional jump instructions. And you have timers and interrupts for scheduling. That allows for basic structure.
You split your program functionally into many files (say, one per procedure) and include those. That allows for basic complexity management.
To use OS syscalls you need to look for the relevant OS ABI reference, but it’s not hard.
So all the usual. Similar to the dumber way of using C.
In general writing (EDIT: whole programs, it’s used all the time in codecs and other DSP, at the very least) in assembly languages is unpopular not because it’s hard, but because it’s very slow.