How Can We Provide Assembly Language Assignment Help?
LC3 is an assembly language that is only used in the educational departments of some universities and is artificially restricted. So it implements the minimum set of instructions (less than any other processor I am familiar with). It only offers AND, NOT, ADD, there is no SUB, OR, XOR, shift instructions or MUL (multiply is not present on a lot of older processors, but it is present on all modern ones). You can implement SUB by negating the value (unfortunately the NEG instruction is also missing), which can be done by using NOT and then adding 1 (which works with any value, assuming 2’s complement instruction set, which this is). OR is actually harder than SUB, but using the logical identities we can say x OR y is NOT(NOT x AND NOT y), and multiply can be done by using ADD to perform a shift and using the Egyptian multiplication algorithm.
It is also missing stack operations, PUSH and POP, so if you want to simulate those you have to use a register as the stack pointer (I’d recommend R6) and using a load or store indirect and then incrementing or decrementing the stack register. You also need to use a stack if you want to call multiple nested subroutines, as the return address is stored in a register (R7).
Most other processors are simpler to program in many ways than the LC3, and we can handle those as well. I worked in games and wrote commercially published games in 6502, Z80, 68000 and have also programmed in ARM, SPARC, MIPS and x86. I even wrote an assembly language to C converter that was used to port Sonic 3D Blast from the Sega Genesis to the Sega Saturn. If you have an assignment involving assembly language, it is important to understand the memory layout as you don’t allocate memory as you would in C, but instead statically allocate all the memory required in the source code.
When writing an assembly language program, you should try and minimize the access to variables that are stored in memory, and use registers as much as possible. This is one of the reasons that assembly is significantly faster than any other programming language. Many instructions set condition code flags, the zero and negative flags in particular, although carry is also commonly set when performing arithmetic operations. The use of the carry flag, makes it possible to perform 16 bit math, on an 8 processor, or 32 bit math on a 16 bit processor.
If you need help, or tutoring with any assembly language, we have experts who are able to provide an excellent level of expertise. It requires a different skill set than programming in a high level language, and is useful even if you never use it, as it can help you write code in C that is more efficient.