A segment register contains a biased address which is used to calculate the physical address of a memory reference. The physical address calculation is ...
APHYSICAL = ASEGMENT * 16 + ALOGICAL
... where the logical address is the effective address generated by the CPU instruction, also called the offset address.
There are four segment registers, CS, SS, DS, and ES, standing for Code Segment, Stack Segment, Data Segment, and Extra Segment. Each is 16 bits in size, and is selected either in context of the particular operation or by use of a segment override prefix instruction. Normally, CS is used for code, SS is used for stack operations (including BP relative calculations), DS is used for data, and ES is used as the second operand in certain repeated string operations.
Since the segment register is 16 bits in size, and the offset (logical) address is also 16 bits in size, the effective range of the physical address is 20 bits, or one megabyte. This is due to the segment address being multiplied by 16, i.e. left shifted by 4.
This is called a segmented architecture, and allows for single instruction access to 64 KB of data at any one time. With two instructions, however, you can get to any of 1MB of data.
Note that this is not the same as virtual addressing. The 8086/8088 does not provide virtual (or protected) addressing.
The default segment register for the Instruction Pointer (IP) in x86 architecture is the Code Segment (CS) register. This register is used to define the segment of memory that contains the currently executing code. When a program is executed, the CPU uses the CS register in conjunction with the IP register to determine the address of the next instruction to execute.
The code segment (CS) register is used for access to program code. The data segment (DS) register is used for access to data. The extra segment (ES) register is used for access to data during certain string primitive operations. The stack segment (SS) register is used for access to stack data.Any of these implied uses can be overridden with a segment override prefix opcode.
The default offset register for the data segment in x86 architecture is the Data Segment Register (DS). When accessing data in memory, the DS register is used in conjunction with an offset to point to the location of the data within the data segment. This allows the CPU to retrieve data efficiently from memory. If no specific segment override is used, the DS register is assumed for data accesses.
there are 14 registers in 8088 micro processor. All the 14 are 16 bit registers. They are4 segment registers viz - code segment register, stack segment register, data segment register, extra segment register.general registers are - accumulator register i.e. AX, base register i.e. BX, count register i.e. CX, data register i.e. DX and stack pointer (SP), base pointer (BP).index registers are - source index(SI), destination index(DI),and the other registers are instruction pointer and flags register.
Give the effective address if the segment register is AA03 and the offset register is 0200.
In the 8086/8088, the logical address corresponds to a segment register, such as CS (Code Segment), DS (Data Segment), SS (Stack Segment) and ES (Extra Segment). The segment register is selected by context, or it is explicitly selected using a segment override prefix. The segment register is left shifted 4 bits into a 20-bit temporary register. This is the same as multiplying it by 16. Then the logical address is added to that result. The final result is the physical address.
In computer architecture, an offset in a segment register refers to the specific address within a segment of memory that the segment register points to. Segment registers are used to divide memory into different segments, enabling easier access and management of data. The offset is added to the base address contained in the segment register to form the effective address of a memory location. This method allows for more efficient memory utilization and organization, particularly in systems with limited addressing space.
stack segment register
The segment register in the 8086/8088 provide a base address for any memory access. There are four segment registers, CS - Code Segment, DS - Data Segment, SS - Stack Segment, and ES - Extra Segment. Each in used in the context of a particular instruction and contains the base address of the memory segment divided by 16. This allows the processor to access up to 1 MB of memory, though only in segments of 64 KB at a time.
There are four segment registers on the 8086 and 8088. These are CS (code for code), DS (data segment), ES (extra data segment), and SS (stack segment).
Code segment (CS) is a 16-bit register containing address of 64 KB segment with processor instructions. The processor uses CS segment for all accesses to instructions referenced by instruction pointer (IP) register. CS register cannot be changed directly. The CS register is automatically updated during far jump, far call and far return instructions. Data segment (DS) is a 16-bit register containing address of 64KB segment with program data. By default, the processor assumes that all data referenced by general registers (AX, BX, CX, DX) and index register (SI, DI) is located in the data segment. DS register can be changed directly using POP and LDS instructions. Code segment (CS) is a 16-bit register containing address of 64 KB segment with processor instructions. The processor uses CS segment for all accesses to instructions referenced by instruction pointer (IP) register. CS register cannot be changed directly. The CS register is automatically updated during far jump, far call and far return instructions. Data segment (DS) is a 16-bit register containing address of 64KB segment with program data. By default, the processor assumes that all data referenced by general registers (AX, BX, CX, DX) and index register (SI, DI) is located in the data segment. DS register can be changed directly using POP and LDS instructions.
CS