This document provides an overview of assembly language for the x86 architecture. It discusses what assembly language is, why it is used, basic concepts like data sizes, and details of the x86 architecture like its modes of operation and basic program execution registers including general purpose registers, segment registers, the EFLAGS register, and status flags.
Assembly Language forx86 Architecture
Ahmed M. Abed
Teaching Assistant – Islamic University of Gaza
aabed91@gmail.com
2.
Agenda
•
•
•
•
•
•
Introduction
What is AssemblyLanguage?
Why Assembly?
Basic Concepts
x86 Architecture Details
Basic Program Execution Registers
•
•
•
•
General-Purpose Registers
Segment Registers
EFLAGS Register
Status Flag
3.
Introduction
• Each personalcomputer has a microprocessor that manages the computer's
arithmetical, logical and control activities.
• Each family of processors has its own set of instructions for handling various
operations.
•
getting input from keyboard - displaying information on screen-performing various
other jobs
• These set of instructions are called 'machine language instruction'
4.
Introduction
• Processor understandsonly machine language instructions which are strings
of 1s and 0s.
• The low level assembly language is designed for a specific family of
processors that represents various instructions in symbolic code and a more
understandable form.
5.
What is Assembly
•An assembly language is a low-level programming language for a computer,
or other programmable device.
• Assembly language is converted into executable machine code by a utility
program referred to as an assembler.
6.
Why Assembly?
• Anunderstanding of assembly language provides knowledge of:
•
•
•
•
Interface of programs with OS, processor and BIOS.
Representation of data in memory and other external devices.
How processor accesses and executes instruction.
How instructions accesses and process data
7.
Why Assembly?
• Itrequires less memory and execution time
• It allows hardware-specific complex jobs in an easier way
• It is most suitable for writing interrupt service routines and other memory
resident programs
8.
PC Hardware
• Themain internal hardware of a PC consists of the processor, memory and
the registers.
•
The registers are processor components that hold data and address.
• To execute a program the system copies it from the external device into the
internal memory.
• The processor executes the program instructions
Data Size
• Theprocessor supports the following data sizes:
•
•
•
•
Word: a 2-byte data item
Double word: a 4-byte (32 bit) data item
Quad word: an 8-byte (64 bit) data item
Paragraph: a 16-byte (128 bit) area
11.
x86 Architecture Details
•x86 processors have three primary modes of operation:
•
protected mode.
•
•
•
Virtual-8086 , is a special case of protected mode
real-address mode.
system management mode.
12.
Protected Mode
• Protectedmode is the native state of the processor, in which all instructions
and features are available.
• Programs are given separate memory areas named segments.
• The processor prevents programs from referencing memory outside their
assigned segments.
13.
Real-Address Mode
• Real-addressmode implements the programming environment of the Intel
8086 processor with a few extra features, such as the ability to switch into
other modes.
• Can be used to run an MS-DOS program that requires direct access to
system memory and hardware devices.
• Programs running in real-address mode can cause the operating system to
crash.
14.
System Management Mode
•System Management mode (SMM) provides an operating system with a
mechanism for implementing functions such as power management and
system security.
• These functions are usually implemented by computer manufacturers who
customize the processor for a particular system setup.
15.
Virtual-8086 Mode
• Whilein protected mode, the processor can directly execute real-address
mode software such as MS-DOS programs in a safe multitasking
environment.
• In other words, if an MS-DOS program crashes or attempts to write data
into the system memory area, it will not affect other programs running at
the same time.
16.
Basic Program ExecutionRegisters
• Registers are high-speed storage locations directly inside the CPU, designed
to be accessed at much higher speed than conventional memory.
•
•
•
•
There are eight general-purpose registers
Six segment registers
Processor status flags register (EFLAGS)
Instruction pointer (EIP).
General-purpose registers
• Somegeneral-purpose registers have specialized uses:
•
•
•
•
•
EAX is automatically used by multiplication and division instructions. It is often called
the extended accumulator register.
The CPU automatically uses ECX as a loop counter.
ESP addresses data on the stack. It is rarely used for ordinary arithmetic or data
transfer. It is often called the extended stack pointer register.
ESI and EDI are used by high-speed memory transfer instructions. They are sometimes
called the extended source index and extended destination index registers.
EBP is used by high-level languages to reference function parameters and local
variables on the stack. It should not be used for ordinary arithmetic or data transfer
except at an advanced level of programming. It is often called the extended frame
pointer register.
21.
Segment Registers
• Inreal-address mode, 16-bit segment registers indicate base addresses of
preassigned memory areas named segments.
• In protected mode, segment registers hold pointers to segment descriptor
tables.
22.
Instruction Pointer
• TheEIP, or instruction pointer, register contains the address of the next
instruction to be executed.
23.
EFLAGS Register
• TheEFLAGS (or just Flags) register consists of individual binary bits that
control the operation of the CPU or reflect the outcome of some CPU
operation
24.
Status Flags
• TheStatus flags reflect the outcomes of arithmetic and logical operations
performed by the CPU. They are the Overflow, Sign, Zero, Auxiliary Carry,
Parity, and Carry flags.
25.
Status Flags
•
•
•
•
•
•
The Carryflag (CF) is set when the result of an unsigned arithmetic operation is too large to
fit into the destination.
The Overflow flag (OF) is set when the result of a signed arithmetic operation is too large or
too small to fit into the destination.
The Sign flag (SF) is set when the result of an arithmetic or logical operation generates a
negative result.
The Zero flag (ZF) is set when the result of an arithmetic or logical operation generates a
result of zero.
The Auxiliary Carry flag (AC) is set when an arithmetic operation causes a carry from bit 3 to
bit 4 in an 8-bit operand.
The Parity flag (PF) is set if the least-significant byte in the result contains an even number
of 1 bits. Otherwise, PF is clear. In general, it is used for error checking when there is a
possibility that data might be altered or corrupted.
26.
x86 Memory Management
•x86 processors manage memory according to the basic modes of operation.
• Protected mode is the most robust and powerful, but it does restrict
application programs from directly accessing system hardware.
27.
Real-Address Mode
• Only1 MByte of memory can be addressed, from hexadecimal 00000 to
FFFFF.
• The processor can run only one program at a time.
• Application programs are permitted to access any memory location,
including addresses that are linked directly to system hardware.
• The MS-DOS operating system runs in real-address mode
28.
Protected Mode
• Theprocessor can run multiple programs at the same time.
• It assigns each process (running program) a total of 4 GByte of memory.
• Each program can be assigned its own reserved memory area
• Programs are prevented from accidentally accessing each other’s code and
data