GeeksForGeeks Computer Organization and Architecture Lecture Notes
From: https://www.geeksforgeeks.org/computer-organization-and-architecture-tutorials/
Basic Computer Instructions
The basic computer has 16 bit instruction register (IR) which can denote either memory reference or register reference or input-output instruction.
- Memory Reference These instructions refer to memory address as an operand. The other operand is always accumulator. Specifies 12 bit address, 3 bit opcode (other than 111) and 1 bit addressing mode for direct and indirect addressing.
Example
IR register contains = 0001XXXXXXXXXXXX, i.e. ADD after fetching and decoding of instruction we find out that it is a memory reference instruction for ADD operation.
Hence, DR <- M[AR]AC <- AC+ DR, SC <- 0 - Register Reference These instructions perform operations on registers rather than memory addresses. The IR(14-12) is 111 (differentiates it from memory reference) and IR(15) is 0 (differentiates it from input/output instructions). The rest 12 bits specify register operation.
Example
IR register contains = 0111001000000000, i.e. CMA after fetch and decode cycle we find out that it is a register reference instruction for complement accumulator.
Hence, AC <- ~AC - Input/Output These instructions are for communication between computer and outside environment. The IR(14-12) is 111 (differentiates it from memory reference) and IR(15) is 1 (differentiates it from register reference instructions). The rest 12 bits specify I/O operation.
Example
IR register contains = 1111100000000000, i.e. INP after fetch and decode cycle we find out that it is an input/output instruction for inputing character. Hence, INPUT character from peripheral device.
The set of instructions incorporated in16 bit IR register are:
- Arithmetic, logical and shift instructions (and, add, complement, circulate left, right, etc)
- To move information to and from memory (store the accumulator, load the accumulator)
- Program control instructions with status conditions (branch, skip)
- Input output instructions (input character, output character)
Symbol | Hexadecimal Code | Description |
---|
AND | 0xxx | 8xxx | And memory word to AC |
ADD | 1xxx | 9xxx | Add memory word to AC |
LDA | 2xxx | Axxx | Load memory word to AC |
STA | 3xxx | Bxxx | Store AC content in memory |
BUN | 4xxx | Cxxx | Branch Unconditionally |
BSA | 5xxx | Dxxx | Add memory word to AC |
ISZ | 6xxx | Exxx | Increment and skip if 0 |
CLA | 7800 | Clear AC |
CLE | 7400 | Clear E(overflow bit) |
CMA | 7200 | Complement AC |
CME | 7100 | Complement E |
CIR | 7080 | Circulate right AC and E |
CIL | 7040 | Circulate left AC and E |
INC | 7020 | Increment AC |
SPA | 7010 | Skip next instruction if AC>0 |
SNA | 7008 | Skip next instruction if AC<0 |
SZA | 7004 | Skip next instruction if AC>0 |
SE | 7002 | Skip next instruction if E=0 |
HLT | 7001 | Halt computer |
INP | F800 | Input character to AC |
OUT | F400 | Output character from AC |
SKI | F200 | Skip on input flag |
SKO | F100 | Skip on output flag |
IEN | F080 | Interrupt On |
aastha98
Check out this Author's contributed articles.
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Computer Organization & Architecture
Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
Addressing Modes
Addressing Modes The term addressing modes refers to the way in which the operand of an instruction is specified. The addressing mode specifies a rule for interpreting or modifying the address field of the instruction before the operand is actually executed.
Addressing modes for 8086 instructions are divided into two categories:
1) Addressing modes for data
2) Addressing modes for branch
The 8086 memory addressing modes provide flexible access to memory, allowing you to easily access variables, arrays, records, pointers, and other complex data types. The key to good assembly language programming is the proper use of memory addressing modes.
An assembly language program instruction consists of two parts
The memory address of an operand consists of two components:
IMPORTANT TERMS
- Starting address of memory segment.
- Effective address or Offset: An offset is determined by adding any combination of three address elements: displacement, base and index.
- Displacement: It is an 8 bit or 16 bit immediate value given in the instruction.
- Base: Contents of base register, BX or BP.
- Index: Content of index register SI or DI.
According to different ways of specifying an operand by 8086 microprocessor, different addressing modes are used by 8086.
Addressing modes used by 8086 microprocessor are discussed below:
- Immediate mode: In immediate addressing the operand is specified in the instruction itself. In this mode the data is 8 bits or 16 bits long and data is the part of instruction.
Example: MOV AL, 35H (move the data 35H into AL register) - Register mode: In register addressing the operand is placed in one of 8 bit or 16 bit general purpose registers. The data is in the register that is specified by the instruction.