dept. of ece, gmu ece 511 - 20011 registers and memory access dr. qiang lin

27
Dept. of ECE, GMU ECE 511 - 2001 1 Registers and Memory Access Dr. Qiang Lin

Upload: aden-spear

Post on 15-Dec-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20011

Registers and Memory Access

Dr. Qiang Lin

Page 2: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20012

8086 General Purpose Registers

• 8 bit registers do not form an independent register set

– Modifying al will change the value of ax; so will modifying ah. The value of al exactly corresponds to bits 0 through 7 of ax. The value of ah corresponds to bits 8 through 15 of ax.

– Modifying ax will change both al and ah.

– Changing al will not affect the value of ah, and vice versa

– The above applies to bx/bl/bh, cx/cl/ch, and dx/dl/dh as well

Page 3: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20013

8086 Flags Register

• Unlike other registers it is simply a set of one bit values which help determine current CPU state and condition codes

Page 4: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20014

80286 Extra Registers

• Added protected mode operation above 8086

– Will not cover this because it was poorly designed and it is of interest only to programmers who are writing their own operating system or low-level systems programs for such operating systems

• 3 additional bits in flags register

– I/O Privilege Level is a two bit value (bits 12 and 13) to specify 4 privilege levels to perform I/O operations

– NT flag controls operation of an interrupt return

Page 5: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20015

80286 Extra Registers (contiuned)

• 5 more registers used by OS to support memory management and multiple processes

– machine status word (msw)

– global descriptor table register (gdtr)

– local descriptor table register (ldtr)

– interrupt descriptor table register (idtr) and

– task register (tr)

Page 6: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20016

• In addition to all registers on 80286, 80386 added several new registers and extended definition of existing registers

• Rename new 32 bit registers to differentiate them from their 16 bit versions as:

– eax, ebx, ecx, edx, esi, edi, ebp, esp, eflags, and eip

• Added two 16 bit segment registers - fs and gs

– Programmer can access up to 6 segments simultaneously

– All segment registers are still 16 bits and were not extended to 32 bits as the other registers

80386 Registers

Page 7: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20017

80386 Registers (continued)

• Extended flag register to 32 bit and defined 2 more bits

– Bit 16 as debug resume flag (RF) used with set of 80386 debug registers

– Bit 17 for Virtual 8086 mode flag (VM) to determine whether processor is running in virtual-86 mode (simulating 8086) or standard protected mode

• Added 4 control registers

– CR0-CR3, control functions such as paged memory management, protected mode operation, and more

Page 8: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20018

80386 Registers (continued)

• Added a set of test registers

– Allow system to test the proper operation of the processor when the system powers up

– Allow testing immediately after manufacture

• Added eight debugging registers

– Microsoft Codeview or Turbo Debugger can use these registers to set breakpoints when you are trying to locate errors within a program

– While not using these registers in an application program, they will reduce the time it takes to eradicate bugs from programs.

– Debuggers accessing these registers will only function properly on 80386 or later processor

Page 9: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 20019

80486 and Pentium Registers

• Did not add any new registers to 80386's basic register set

• Defined eflags register Bit 18 as alignment check flag

– Along with CR0, force a trap (program abort) whenever processor accesses non-aligned data (e.g., a word on an odd address or a double word at an address which is not an even multiple of four)

• Defined new functions using CR0-CR3 for cache enable/disable/operation, which are not on 80386

Page 10: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200110

80386, 80486 and Pentium Registers

Page 11: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200111

Sgemented Addressing

• Use two components to specify a memory location

– A segment value and an offset within that segment

– Can be viewed as 2-d array with segment provides one dimension into the array and offset provides the other

Page 12: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200112

Compute 8086 Physical Address

• Simple process - multiply segment value by 10h and then add offset

– For example, consider the segmented address: 1000:1F00

• Multiply segment value (1000h) by 10h, i.e., just append a zero to the end to 10000h

• Add 1F00h to this to obtain 11F00h, which is the physical address

Page 13: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200113

Compute 80286 or Better Physical Address

• 80286 and later processors introduced protected mode segments and use a look up table to compute physical address– Use segment value as index into an array. The contents of the

selected array element provide starting address for the segment– The CPU adds this value to the offset to obtain the physical address– Applications cannot directly modify segment descriptor table (lookup

table); protected mode OS (UNIX, Linux, Windows, OS/2) handles it

Page 14: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200114

Normalized Addresses • When operating in real mode, a problem develops

– A single object in memory may be mapped using several different addresses

– For example, 1000:1F00 may be mapped as 11F0:0, 1100:F00, and even 1080:1700, all point to physical address 11F00h

• Solution - normalized addresses – Unless two normalized segmented values are exactly the same,

they do not point at the same object in memory

• A normalized address defined as follows: – Segment portion of the address may be any 16 bit value, but offset

portion must be a value in range 0..0Fh– Convert segmented address to PA. Then slap a colon between last

two digits of five-digit result as 1000:1F00 -> 11F00 -> 11F0:0 for 80x86 processors in real mode only

Page 15: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200115

8086 Displacement Only Addressing Mode

• Most common and easiest to understand

• Consists of a 16 bit constant that specifies the address of the target location

– Instruction mov al,ds:[8088h] loads al register with a copy of the byte at memory location 8088h

Page 16: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200116

8086 Register Indirect Addressing Modes

• Access memory indirectly through a register – For example, mov al, ds:[bx] or mov al, ss:[si]

Page 17: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200117

8086 Indexed Addressing Modes

• Use the following syntax: mov al, disp[bx] or mov al, cs:disp[si]

• For examples– If bx contains 1000h, instruction mov cl,20h[bx] will load cl from

memory location ds:1020h

– Likewise, if bp contains 2020h, mov dh,1000h[bp] will load dh from location ss:3020

Page 18: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200118

8086 Based Indexed Addressing Modes

• Combinations of register indirect addressing modes

• Form offset by adding a base register (bx or bp) and an index register (si or di) in form of

mov al, [bx][si]Let bx contains 1000h and si contains 880h, the above instruction

willload al from location DS:1880h

Page 19: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200119

8086 Based Indexed Plus Displacement Addressing Mode

• Slight modification of base/indexed addressing modes with addition of an 8 bit or 16 bit constant

Page 20: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200120

80386 Addressing Modes

• Generalized memory addressing modes

– Whereas 8086 is only allowed to use bx or bp as base registers and si or di as index registers, 80386 is allowed use almost any general purpose 32 bit register as a base or index register

– Furthermore, 80386 introduced new scaled indexed addressing modes to simplify accessing array elements

Page 21: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200121

80386 Register Indirect Addressing Modes

• May specify any general purpose 32 bit register

– [eax], [ebx], [ecx], [edx], [esi], and [edi] all provide offsets, by default, into data segment

– The [ebp] and [esp] addressing modes use stack segment by default

• While running in 16 bit real mode, offsets in these 32 bit registers must still be in the range 0...0FFFFh

– Cannot use values larger to access more than 64K in a segment

• Must use 32 bit register names, not 16 bit names

Page 22: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200122

80386 Indexed, Base/Indexed, and Base/Indexed/Disp Addressing Modes

• When combining two 32 bit registers in an addressing mode, the 1st register is base register and the 2nd register is index register

– True regardless of the register names

mov al, disp[edx+ebp] ;Uses DS by default

mov al, [esi][edi][disp]

mov al, [edi][disp][esi]

mov al, disp[ebp+ebx] ;Uses SS by default

• Except for one restriction

– Cannot use esp register as an index register, but OK as base

Page 23: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200123

80386 Scaled Indexed Addressing Modes

• The indexed, base/indexed, and base/indexed/disp addressing modes are special cases of 80386 scaled indexed addressing modes, which

– Particularly useful for accessing elements of arrays

– Allow to multiply index register in addressing mode by 1, 2, 4, or 8 as disp[base][index*n]

• For example, ebx contains 1000h and esi contains 4, then

mov al,8[ebx][esi*4] ;Loads AL from location 1018h

mov al,1000h[ebx][ebx*2] ;Loads AL from location 4000h

mov al,1000h[esi*8] ;Loads AL from location 1020h

Page 24: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200124

80386 Addressing Modes Summary

• Addressing modes are more orthogonal so much easier to memorize than 8086's addressing modes

• Problem: For programmers working on 80386, there is always temptation to skip 8086 addressing modes and use 80386 set exclusively

– However, 8086 addressing modes really are more efficient than comparable 80386 addressing modes

– Therefore, important to know all addressing modes and choose appropriate one to the problem at hand

Page 25: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200125

Which is Index Register

• If use scaled index operator ("*n") on a register, that register is always index register regardless of where it appears in the addressing mode such as:

[ebp*1][ebx] ;Uses DS by default

[ebx][ebp*1] ;Uses DS by default

[ebp][ebx*1] ;Uses SS by default

[ebx*1][ebp] ;Uses SS by default

es:[ebx][ebp*1] ;Uses ES.

Page 26: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200126

MOV Instruction

• Syntax as: mov Dest, Source

• Take only 3 forms as:– mov reg, memory

– mov memory, reg

– mov reg, reg

• Missing - mov memory, memory– Not supported!

– Loading a register and then storing that register is almost always more efficient

Page 27: Dept. of ECE, GMU ECE 511 - 20011 Registers and Memory Access Dr. Qiang Lin

Dept. of ECE, GMU ECE 511 - 200127

MOV Instruction (continued)

• Many different mov instructions can accomplish the same thing

• Several different addressing modes can access the same memory location

• If interested in writing the shortest and fastest possible programs in assembly language, must be constantly aware of trade-offs between equivalent instructions!