Description

Description

i8080 microarchitecture.

The Intel 8080 was the successor to the Intel 8008. It used the same instruction set as the 8008 (developed by Computer Terminal Corporation) and was source code compatible. The 8080's large 40 pin DIP packaging permitted it to provide a 16-bit address bus and an 8-bit data bus, allowing easy access to 64 kilobytes of memory.

Registers

The processor had seven 8-bit registers, (A, B, C, D, E, H, and L) where A was the 8-bit accumulator and the other six could be used as either byte-registers or as three 16-bit register pairs (BC, DE, HL) depending on the particular instruction. Some instructions also enabled HL to be used as (a limited) 16-bit accumulator. It also had a 16-bit stack pointer to memory (replacing the 8008's internal stack), and a 16-bit program counter.

Commands

Most of the 8-bit operations were possible between the accumulator and either one of the registers or the memory cell, indexed by the 16-bit value of the register pair HL. Moving operations were supported between any two registers, or between any register and the HL-indexed memory cell. Due to the highly regular machine code format for MOV commands, the opcodes included those for moving a byte from a given register into the same register (MOV A,A , for instance). These commands were seldom used, however, unless programmed delays were needed. What would have been instruction to move from the HL-indexed memory cell into the same memory cell (i.e., MOV M,M) instead was HLT (for halt). HLT halted the processor until external reset or interrupt signals were received.

All processor commands were coded by one byte, but some of them were followed by one or two bytes of data, a memory address, or a port number. The register-to-register data-move commands were all coded by one byte, making up about a quarter of the commands in the processor-command system. The processor had eight one-byte commands to call the subroutines located at the fixed addresses 0000h, 0008h, 0010h, ... 0038h (RST). These commands were frequently used in the interrupt-handling or system-library calls.

The most sophisticated command (and the longest to execute) was XTHL, which was used for exchanging the register pair HL with the value stored at the address indicated by the stack pointer.

16-bit operations

Although the 8080 was generally an 8-bit processor, it also had limited abilities to perform 16-bit operations: Any one of the three 16-bit register pairs (BC, DE, HL) could be loaded with an immediate 16-bit value (using LXI), incremented or decremented (using INX and DCX), or added to HL (using DAD). The XCHNG operation exchanged the values of HL and DE. By adding HL to itself, it was possible to achieve the same result as a 16-bit arithmetical left shift with one instruction.

The only 16 bit instructions that affect any flag is DAD, which sets the CY (carry) flag.

No comments:

Post a Comment