Part 1: Assembly Language with Its system properties

Assembly Language

What is Assembly Language?

Assembly Language (AL) is one line of code translates to one machine instruction. Every computer has a microprocessor that achieves the computer’s arithmetical, logical, and control actions. ALs are NOT machine-independent that is each different machine or processor has a different machine languages. Any particular machine can have more than one assembly language. This is a low-level language that represents various instructions in symbolic code and a clearer form. A processor understands only machine language instructions, which are strings of 1’s and 0’s. Each set of processors has own instructions set for handling numerous operations such as getting input from keyboard, displaying information on screen and performing many works where each set of instructions are named ‘machine language instructions’.

Assembly language makes one aware of:

  • How OS, processor, and BIOS programs interface mutually;
  • How data is represented in memory with other devices;
  • How the processor accesses and executes instruction;
  • How each instruction access to process data;
  • How a program accesses external device

Assembly Language Advantages:

  • The language requires less memory and execution time;
  • It allows hardware-specific complex jobs in an easier way;
  • It is suitable for time-critical trades;
  • It is most suitable for writing interrupt service routines along other memory resident programs.

A computer Hardware Basic Features

The main internal hardware of a PC consists of processor, memory, and registers. Registers are processor components where data and address are hold. To execute a program, the system copies it from the external device into the internal memory. The processor executes the program instructions.

The fundamental unit of computer storage is a bit; it could be ON (1) or OFF (0) and a group of 8 bits and makes a byte on most of the modern computers.

The parity bit is used to make the number of bits in a byte odd. If the parity is even, the system assumes that there had been a parity error (though rare), which might have been caused due to hardware fault or electrical disturbance.

The processor supports data sizes:

  • Word: Contain a 2-byte data item
  • Doubleword: Consist of a 4-byte (32 bit) data item
  • Quadword: Contain an 8-byte (64 bit) data item
  • Paragraph: Have a 16-byte (128 bit) area
  • Kilobyte: Have 1024 bytes
  • Megabyte: Have 1,048,576 bytes

Binary Number System

Every number system uses positional notation. Each position is power of the base, which is 2 for binary number system, and these powers begin at 0 and increase by 1.
The positional values for an 8-bit binary number, with all bits are set ‘ON’

Bit value 1 1 1 1 1 1 1 1
Position value as a power of base 2 128 64 32 16 8 4 2 1
Bit number 7 6 5 4 3 2 1 0

The value of a binary number is based on the presence of 1 bits and their positional value. So, the value of a given binary number is:

1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255

which is same as 28 – 1.

Hexadecimal Number System

Hexadecimal number system uses base 16 range from 0 to 15 each digit. The letters A through F is represented corresponding to decimal values 10 through 15.

Decimal number Binary representation Hexadecimal representation
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

To convert a binary number to its hexadecimal equivalent, break it into groups of 4 consecutive groups each, starting from the right, and write those groups over the corresponding digits of the hexadecimal number.

Example − Binary number 1000 1100 1101 0001 is equivalent to hexadecimal – 8CD1

To convert a hexadecimal number to binary, just write each hexadecimal digit into its 4-digit binary equivalent.

Example − Hexadecimal number FCD7 is equivalent to binary – 1111 1100 1101 0111

Binary Arithmetic

The following table illustrates four simple rules for binary addition −

(i) (ii) (iii) (iv)
1
0 1 1 1
+0 +0 +1 +1
=0 =1 =10 =11

Rules (iii) and (iv) show a carry of a 1-bit into the next left position.

Example

Decimal Binary
60 00111100
+42 00101010
102 01100110

A negative binary value is expressed in two’s complement notation. According to this rule, to convert a binary number to its negative value is to reverse its bit values and add 1.

Example

Number 53 00110101
Reverse the bits 11001010
Add 1 00000001
Number -53 11001011

To subtract one value from another, convert the number being subtracted to two’s complement format and add the numbers.

Example

Subtract 22 from 33

Number 33 00100001
Number 22 00010110
Reverse the bits of 42 11101001
Add 1 00000001
Number -22 00010110
33 – 22 = 11 00001011

Overflow of the last 1 bit is lost.

Addressing Data in Memory

The processor which the controls process of execution of instructions is denoted as the fetch-decode-execute cycle or the execution cycle. It consists of three continuous steps:

  1. Fetching the instruction from memory
  2. Decoding or identifying the instruction
  3. Executing the instruction

The processor may access one or more bytes of memory at a time. Let us consider a hexadecimal number 0225H. This number will require two bytes of memory. The high-order byte or most significant byte is 02 and the low-order byte is 25. The processor stores data in reverse-byte sequence, i.e., a low-order byte is stored in a low memory address and a high-order byte in high memory address. So, if the processor brings the value 0225H from register to memory, it will transfer 25 first to the lower memory address and 02 to the next memory address.

There are two kinds of memory addresses:

  • Absolute address: It is a direct reference of specific location.
  • Segment address (or offset) : It is a starting address of a memory segment with the offset value.

0 Comments

You may find interest following article