Learn Assembly Language: Speak the Language of Your Computer

learn assembly languageFor those who love telling computers what to do, assembly is a lower level language for programming for programmable devices like computers in which there is a one-to-one correspondence between the architecture’s machine instructions code and the language. Each language  is specified to a specific architecture of computer whereas most other high level languages for programming required compiling or interpreting and are portable generally across varied architecture.

The language of assembly goes through conversion into a machine’s executable code by an assembler, which is a program of utility. The process of conversion is called ‘assembling the code’ or as an ‘assembly.’ A mnemonic is used by the assembly language to represent every lower level operation or instruction of a machine.

Usually, 1 or greater than 1 operands are used by operations in order to form complete instructions and most can then take expressions, symbols and labels as operands representing constants such as the addresses. This frees programmers from having to do tedious calculations manually.

A facility of macroinstruction is included by macro assemblers so that the assembled parameterized text of the language can be represented by names, which can then be utilized for inserting the text expanded into other codes.

Additional mechanisms are offered by many assemblers to facilitate the development of the program, to aid debugging and to control the process of assembly. Here is a course entitled CS 107: Programming Paradigms which introduces many different languages of programming including Assembly, C++ and C.

The Language of Assembly

Programs written in the language of assembly consists of processor instructors that are mnemonic in a series and pseudo-ops/directive/ meta-statements, data and comments. Instructions for the language of assembly consist usually of a data list, parameters or arguments following an opcode mnemonic.

An assembler translates these into the language of the machine which can be uploaded into its memory and then used. Here is a great article entitled Top 10 Programming Languages to Learn in 2014 which you might find interesting.

For example, a process x86/lA-32 is told by instructions of 10110000 01100001 to move immediate values of eight bits into registers. For these instructions, the code is 10110 and an identifier of three bits for which of the registers to use. For the register AL, 000 is the identifier so the machine’s coding loads the register AL with the 01100001 data. A hexadecimal expression of B0 61 makes the binary code of the computer more readable by humans.

In this case, 61 is the hexadecimal value of 01100001 represented which is 91 in decimal and B0 means ‘copies of’ this value should be moved into AL.’ The Assembly language of Intel provides abbreviations of ‘move’ with the MOV mnemonic for these types of instructions. This way, the machine codes can be: MOV AL, 61h       ;Loads AL with 97decimal (61hex) in the language of Assembly, complete with a semi colon and a comment that is explanatory. This is a lot easier to remember and to read, isn’t it?

You might want to check out this course entitled Introduction to Web APIs which shows you the wealth of data offered by the net to those who know how to use API’s. In the course, you will be shown how programming language is used for manipulating FB and Twitter.

The Mnemonic MOV

In some of the languages of assembly, the same MOV mnemonic can be utilized for a group of instructions related for moving data, copying and loading, even when these are memory locations, register values and immediate values which register values point to. Separate opcodes can be used by other assemblers such as MVI for ‘moves immediate operant to memory,’ LR for ‘moves to register,’ ST for ‘moves to memory’ and L for ‘moves to register.’

Every Machine Speaks Its Own Lingo

There is a machine language for each type of computer architecture. In the type and number supported operations, computers vary and this is also true in the varying numbers and register sizes and in the data representations stored. While most computers for general purposes are able to perform somewhat the same functions, the methods they do this vary. These differences are reflected in the corresponding languages of assembly.

Multiple mnemonic sets or assembly language syntax might be existent set of single instructions, instantiated typically in different programs of assembler. In cases like this, the one most popular is usually the one that the manufacturer utilized in its documents or supplied.

Here is a course entitled A Practical Introduction to Responsive Design that will get you ready to through fixed width layouts and pixels to the wind, since these days, web browsing capabilities is growing at increasing speed.

The Assembler’s Job

Transforming the language of assembly into code is an assembler’s job. The reversal can also be accomplished by disassemblers. Unlike languages of high levels, there tends to be a correspondence that is 1 to 1 between the machine instructions of language and simple statements of assembly.

However, assemblers might at times produce macros or pseudo instructions which begin expanding into many machine languages to provide functionality that is commonly needed. Like, for machines that lack branches of equal or greater instructions, assemblers might provide pseudo instructions expanding the machine to ‘branch if zero’ and ‘set if fewer than,’ and a macro rich language is also provided by most assemblers that are full-featured used by programmers and vendors for generating more complexity of data sequences and code.

Assembly Language in Past Times

In the sixties, a common baseline among computer programmers was the language of Assembly. No mouse buttons to deal with and no graphics, just cold statement programs, cryptic commands and a bunch of numbers typed into a monitor with green fonts and a black face. In certain communities, Assembler continues to be popular, and probably will be for years to come.

Want to learn more about computer language?  Here is a course entitled Rapid Prototyping: From Wireframes to HTML which teaches you the process of quickly mocking up applications or websites, enabling you to get it done easily and quickly.