Table Of Contents
  • Assembly Language Assignment Help
  • Assembly language homework Help
  • Assembly Language Project Help
  • Online Assembly Language Tutors
  • Simple calculations in Assembly language
  • Calling functions
  • Input and Output
  • Graphics
  • Hexadecimal and Binary arithmetic
  • Writing a machine code simulator
  • Writing an assembler

Assembly Language Assignment Help

Assembly language is the oldest programming language, as it is the language the computer uses natively. However, there is no generic version of assembly language as it differs between the different processors.

We have been helping with programming work in assembly language for 40 years, from the 8-bit processors through the current 64-bit processors. 

When dealing with an 8-bit processor, you have to write multiple instructions to add two small values. The earliest one is the x86 running under Dos Box, which is a 16-bit processor. The x86 assignments tend to involve direct memory access to the screen, or writing a partial operating system kernel.
It is the most complicated assembly language programming, as debugging is much more complicated, so if you need help with assembly language assignments involving low-level programming, we have delivered excellent results. A lot of assignments involving x86 code running under Windows using the Irvine library, which was compiled in Visual Studio.
Another processor is MIPS, which uses MARS or SPIM, there are a few differences between the assembly language used in the two different programs. I prefer using MARS as it has a better IDE with an editor and debugger built-in, along with help listing instructions and syscalls.
ARM assembly is different than any of the other assembly languages as it has the idea of conditional instructions, so you can write an abs function by doing negate register if a negative flag is set rather than branching over the negate instruction.
The final processor I’ve to encounter a lot during assignments is LC3, a deliberately limited instruction set with only 15 instructions, so even doing simple arithmetic is complicated. So if you are looking for someone to do my assembly language assignment for you, we have experts with extensive experience.

Assembly language homework Help

If you are looking for an assembly language homework solution, please contact us and mention the processor and environment if not mentioned in the assignment details. The assembly language assignments are to write a single routine, for example, to calculate some mathematical expression.
Calling other functions is complicated as you have to create a stack frame to pass arguments, and to access them from the function.
So if you need help with your assembly language homework, contact us for a quote.

Assembly Language Project Help

The only term assembly language projects have been ones where you are implementing a part of the BIOS with graphics support in mode 13, which is 256 color 320 pixels by 200 pixels as that fits into 64K, and you don’t need to worry about segments.
It could read input from the keyboard, write a string, in either character mode or mode 13, and do lines and circles. I used to write games in assembly language for a living so I can handle extremely complicated assignments.

Online Assembly Language Tutors

I have held tutoring sessions for students to help them by explaining solutions and going through the code line by line. It is one of the few places where you can hire assembly language experts who have worked as an assembly language programmer for decades.

Simple calculations in Assembly language

Many assembly language assignments are designed to teach you the fundamentals of programming in assembly language and just involve simple arithmetic operations and bit-wise logical ones. The assignments don’t involve you calling functions but instead concentrate on simple loops or conditionals. In assembly, you operate on values in registers and can store the results in memory, or keep it in a register if you still need the value. For example, imagine you have to convert from Fahrenheit to Celsius you might write c = (f – 32) / 9 * 5 in C code, but you have to divide it into single operations in assembly language. So you would load the value off into a register, then subtract the immediate value of 32, then divide the result by 9 and finally multiply the value by 5.

Calling functions

You won’t get far writing everything in a single function, so you will need to write code that uses multiple functions. When you deal with multiple functions you need to consider how to transfer variables to and from functions. The normal convention is to pass the first few arguments using registers and then use the stack for the rest of them, and the stack is also used to reserve space for local variables. You will normally use prolog and epilog code to deal with setting a stack frame for the function, although you can use slightly different code on a leaf function. Depending on the processor you may need to save the address from which the function was called, this is automatic on x86 processor but not on RISC processors.

Input and Output

Normally you need to create the data yourself using the assembler, but in the real world, you need to take input from the keyboard and output it to the screen. Depending on the emulator/system you use there may be an operating system call or trap to read in an integer value or string and to display a value or string but you may have to deal with interrupts and reading from a register to get the current key value and build up the value yourself and write to memory addresses to update the screen. Assembly language is very low level and may operate below the operating system (especially if you are writing the operating system). Even when there are functions to read from the keyboard and output to the screen, your own methods have extra facilities not provided by the built-in ones.

Graphics

Various simulators such as ARMsim, MARS, and DosBox provide access to a virtual memory-mapped screen display. The memory is laid out as a 2-dimensional array, and depending on the graphic mode can be 1 word per pixel (32 bit ARGB), or byte per pixel (256 color values), or even more packed. You will probably need to write methods to draw a line (horizontal, vertical, or at an angle). You need to consider cropping the position to a valid one on the screen and providing the ability to clip the line to the view window, and composite the result onto the screen with different logical operations. You may also need to add the ability to draw text to the screen bitmap and to scroll the screen.

Hexadecimal and Binary arithmetic

The first assembly language assignment may not involve actual programming, but instead converting between decimal, hexadecimal, and binary. If you are dealing with logical operations such as and, or, xor and not then dealing with values in binary makes much more sense. Converting between binary and hex is very easy as each hex digit corresponds to 4 binary digits, and only depends on the actual value so F is always 1111 no matter where it appears. The only complication when converting between decimal and hexadecimal is when you are dealing with negative numbers as the length of the value changes the negative position (assuming 2’s complement). Hex displays make output line up neatly as if you are outputting byte values you use 2 hex digits instead of 0-255 which varies in length.

Writing a machine code simulator

You don’t normally program a machine code simulator in assembly language, but instead use a higher-level programming language such as C. You need to provide a simulation of the memory map (which can be as simple as an array of byte values), and a limited number of registers. You then fetch the current instruction from the memory pointed to by the pc register, and then decode it and run the logic for the instruction and update the pc. Each individual instruction is very simple to execute, but decoding what instruction should be referenced may be the more complicated part. You also need to deal with different addressing modes, such as using offset to memory, and a base register. You might want to make functions to deal with the different addressing modes as they are repeated across multiple instructions.

Writing an assembler

One of the more complicated assignments related to assembly language is to write an assembler. The easiest way to do this is to write it as a 2 pass assembler. On the first pass, you assemble everything but don’t actually write anything to the file, but instead, you calculate the value of the labels, and on the second pass you write out the values and use the label addresses. During the second pass is when you report errors such as a missing label, or a branch out of bounds. It’s a much simpler operation to write an assembler for a RISC processor compared to a CISC one as the CISC tends to have more instructions and different addressing modes. There are processors such as the ARM which can have 2 different instruction forms, and you may need to be able to support code in either format.

Reverse Engineering Executable to Find Vulnerabilities

The code is in an elf binary running under Linux. It finds the password required for the program to run. The code runs as x86_64, and you can use any disassembly program. It finds any potential vulnerabilities including buffer overruns and puts the password in password.txt.

Sort using x64 assembly

The 64 bit x86 assembly code to sort an array using selection sort. It outputs the smallest, largest, median and values as well as the sum. The code runs under Linux.