From cdc7d9421c17d5aa6562dda76d609f1e18b0eac3 Mon Sep 17 00:00:00 2001 From: Z Date: Fri, 20 Nov 2020 09:39:30 +0800 Subject: [PATCH] Update linux-bootstrap-1.md --- Booting/linux-bootstrap-1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Booting/linux-bootstrap-1.md b/Booting/linux-bootstrap-1.md index 4b5461b..609d99e 100644 --- a/Booting/linux-bootstrap-1.md +++ b/Booting/linux-bootstrap-1.md @@ -64,7 +64,7 @@ which is `65520` bytes past the first megabyte. Since only one megabyte is acces Ok, now we know a little bit about real mode and its memory addressing. Let's get back to discussing register values after reset. -The `CS` register consists of two parts: the visible segment selector and the hidden base address. While the base address is normally formed by multiplying the segment selector value by 16, during a hardware reset the segment selector in the CS register is loaded with `0xf000` and the base address is loaded with `0xffff0000`. The processor uses this special base address until `CS` changes. +The `CS` register consists of two parts: the visible segment selector and the hidden base address. In real-address mode, the base address is normally formed by shifting the 16-bit segment selector value 4 bits to the left to produce a 20-bit base address. However, during a hardware reset the segment selector in the CS register is loaded with `0xf000` and the base address is loaded with `0xffff0000`. The processor uses this special base address until `CS` changes. The starting address is formed by adding the base address to the value in the EIP register: