Computer Organization & Assembly Language

Report
Computer Organization &
Assembly Language
University of Sargodha, Lahore
Campus
Prepared by Ali Saeed
What is MASM
• MASM stands for Microsoft Macro Assembler
• The Microsoft Macro Assembler is an x86
assembler that uses the Intel syntax for MSDOS and Microsoft Windows
How to use MASM
• First Set the Environment Variable
How to use MASM
How to use MASM
• Edit Command is use to enter in Assembly
Editor
• MASM prog1.asm to Compile
• Link prog1
• Prog1; to run
8086 and 8088 Microprocessor
•
•
•
•
•
8086 was introduced in 1978
It had 16 bit processor
8088 was introduced in 1979
8088 has 8 bit data bus
8086 has faster clock rate, thus batter
performance
• 8088 is less expensive
80186 and 80188 Microprocessor
• 80186 and 80188 are enhanced versions of
8086 and 8088 respectively
• These has new instruction set called extended
instruction set
• But, these did not had significant advantages
over 8086 and 8088
• Soon it was replaced by 80286
80286 Microprocessor
•
•
•
•
It was introduced in 1982
It was also 16 bit processor
It was faster then 8086 (12.5 MHz Vs 10MHz)
It has two number of operation modes
– Real Addressing Mode
– Protected virtual Addressing Mode
80286 Microprocessor
• In Real Addressing mode this will behaves like
8086
• Program for 8086 can be executed in this mode
without modifications
• In protected mode 80286 support multitasking,
ability to execute several tasks at a time
• Memory protection in protected mode memory
use by one program can’t be use by others
80386 and 80386SX Microprocessor
• It was 32 bit microprocessor
• 80386 or 386 was introduced in 1985
• It was much faster than 80286 having 33 MHz
Processor
• It has three modes
– Real Addressing Mode
– Protected virtual Addressing Mode
– Virtual 8086 mode (run multiple 8086 application
under memory protection mode)
• 386XS has same internal structure as 386, but has
16 bit bus
What is Register
• Registers are small memory area inside the
CPU.
• Registers have fastest speed then other
memory devices i.e. RAM, Hard Disk etc…
• Registers are available of different size
– 8 bit
– 16 bit
– 32 bit
8086 Register
Organization of Registers in x86
Registers
• Intel 8086 had 14 registers
• 4 registers are general purpose registers (AX,
BX, CX, DX)
• 4 Registers are known as Segment Registers
• 4 registers are Index/ Pointer Register (SP, BP,
SI, DI)
• 2 are special purpose registers IP and Flag,
user cant move directly data in it
Registers
• AX - the accumulator register (divided into AH / AL).
• BX - the base address register (divided into BH / BL).
• CX - the count register (divided into CH / CL).
• DX - the data register (divided into DH / DL).
• SI - source index register.
• DI - destination index register.
• BP - base pointer.
• SP - stack pointer.
Segment Registers
• Segment Register is a way to access more then
216 (65536) (64 K) memory.
• Each segment is identified by a number called
segment number. (Segment 1, Segmen2,
Segment 3…)
• Address bit was 20 bit, it use 2 registers
Segment Registers
• CS - points at the segment containing the
current program.
• DS - generally points at segment where
variables are defined.
• ES - extra segment register, it's up to a coder
to define its usage.
• SS - points at the segment containing the
stack.
Segment Registers
• Although it is possible to store any data in the
segment registers
• This is never a good idea.
• The segment registers have a very special
purpose - pointing at accessible blocks of
memory.
• Segment registers work together with general
purpose register to access any memory value.
Segment Registers
• For example if we would like to access
memory at the physical address 12345h
(hexadecimal), we should set the DS = 1230h
and SI = 0045h.
• This is good, since this way we can access
much more memory than with a single
register that is limited to 16 bit values.
Segment Registers
• CPU makes a calculation of physical address by
multiplying the segment register by 10h and
adding general purpose register to it
• Physical Address= Segment * 10H + Offset
• (1230h * 10h + 45h = 12345h):
Segment Registers
• The address formed with 2 registers is called
an effective address.
• By default BX, SI and DI registers work with DS
segment register;
• BP and SP work with SS segment register.
• Other general purpose registers cannot form
an effective address!
• Also, although BX can form an effective
address, BH and BL cannot!
Pointer and Index Register
• SP – Stack Pointer, it is use to conjunction with SS
to access the stack segment
• BP – Base Pointer, it is used primarily to access
data on stack, but unlike SP we can use BP to
access data in other segment
• SI – Source Index, it is used to point memory
location in data segment address by DS. By
adding SI we can easily access consecutive
memory locations
• DI – Destination Index, it work like SI, It work with
string operations, and access memory with ES
Instruction Pointer (IP)
• All register come above is for data register.
• To access instructions 8086 use registers CS and
IP.
• CS contain the segment number of next
instruction
• IP contain offset of next instruction
• IP is updated every time as each instruction is
executed
• IP can not be manipulated by an instruction
• An instruction may not contain IP as operand
• Thanks

similar documents