Fundamental Definitions in Computer Systems and Programming

Core Concepts in Computer Architecture and Data Handling

Input-Output Interface (I/O Interface)

The Input-Output Interface (I/O Interface) is a method used for transferring information between internal storage devices (i.e., memory) and external peripheral devices. A peripheral device provides input and output for the computer and is often called an I/O device.

Examples of Peripheral Devices:

  • Input Devices: Keyboard and mouse.
  • Output Devices: Monitor and printer.
  • Both Input and Output: External hard drives and certain other peripheral devices.

Asynchronous Data Transfer

Asynchronous data transfer enables computers to send and receive data without requiring a real-time response. With this technique, data is conveyed in discrete units known as packets that can be handled separately.

Classification of Asynchronous Data Transfer:

  1. Strobe Control Method
  2. Handshaking Method

Direct Memory Access (DMA)

DMA (Direct Memory Access) is a special feature within a computer system that transfers data between memory and peripheral devices (such as hard drives) without the intervention of the CPU.

For large data transfers, such as those involving disk drives, using expensive general-purpose processors where status bits must be watched and data fed into the controller register one byte at a time (termed Programmed I/O) is inefficient. Computers utilize a Direct Memory Access controller to shift this workload and avoid burdening the CPU.

Input-Output Processor (IOP)

The Input-Output Processor (IOP) functions similarly to a CPU, handling the detailed aspects of I/O operations. It is equipped with more facilities than a typical DMA controller.

The IOP can fetch and execute its own instructions, which are specifically designed to manage I/O transfers. Beyond I/O tasks, it can perform other processing functions, including arithmetic, logic, branching, and code translation. The main memory unit plays a pivotal role, communicating with the processor via DMA.

Serial Data Transmission

In Serial Transmission, data is sent bit by bit from one computer to another using a two-way path. Each bit has its own timing.

Data is often grouped (e.g., 8 bits representing a byte) and sent sequentially, often including extra bits at the start and end (such as Parity bits) for error checking. This method typically uses special cables (like a 9-pin D-shaped connector) to send data reliably over long distances.

INTEL 8085 Microprocessor Specifications

The Intel 8085 is an 8-bit microprocessor produced by Intel in 1976. It is a modified version of the 8080, and its successor is the 8086.

  • Data Bus: 8-bit
  • Address Bus: 16-bit
  • Package: 40-pin integrated circuit
  • Power Supply: Single +5V supply
  • Operating Frequencies: 3, 5, and 6 MHz (megahertz)

A common mnemonic states that the ’80’ refers to the era, ‘8’ refers to the data bus size, and ‘5’ refers to the +5V power supply.

Assembly Language Definition

Assembly Language is a low-level programming language that allows users to write programs using alphanumeric mnemonic codes, rather than raw numeric machine code, for a set of instructions.

An example of a large program written in Assembly Language is IBM PC DOS.

Common Assembly Architectures:

  • x86
  • ARM Assembly
  • MIPS Assembly

The Role of an Assembler

An Assembler is a system software program that converts instructions written in low-level assembly code into relocatable machine code, generating necessary information for the loader.

It is essential for converting user-written assembly programs into machine code. Specifically, an Assembler translates an assembly language program into a machine language program.

Macro (Programming)

A Macro is a defined set of instructions that a programmer can use anywhere in the program simply by referencing its name. Macros are primarily used to achieve modular programming, allowing the same set of instructions to be reused multiple times.

When a macro’s identifier is used, it is replaced by the actual defined instructions during compilation (a process known as expansion). Because the code is inserted directly, no function calling and returning overhead occurs at runtime.

Subroutine (Function/Procedure)

A Subroutine (also known as a function or procedure) is a sequence of program instructions packaged as a unit to perform a specific task. This unit can be utilized in programs whenever that particular task needs to be performed.

A subroutine is designed to be called multiple times from various places during program execution (including from other subroutines). Once the task is complete, the program branches back (returns) to the instruction immediately following the original call.