8086 Reset vector above 20 bits with buses of 20 bitsWhat are some resources for getting started in operating system development?Do normal x86 or AMD PCs run startup/BIOS code directly from ROM, or do they copy it first to RAM?How does the segment:offset addressing scheme work?What is the value of segment registers in 8086?Intel Reset VectorReset vector in 386+ processorsDeoptimizing a program for the pipeline in Intel Sandybridge-family CPUsLoading program from RAM in 8086intel reset vector and documentation pedantics. Bits vs bytesHow do instructions fit in the instruction register on x86?

Print the phrase "And she said, 'But that's his.'" using only the alphabet

Someone who is granted access to information but not expected to read it

ISP is not hashing the password I log in with online. Should I take any action?

Does every chapter have to "blow the reader away" so to speak?

How can religions without a hell discourage evil-doing?

Should I worry about having my credit pulled multiple times while car shopping?

How to represent jealousy in a cute way?

Would a bit of grease on overhead door cables or bearings cause the springs to break?

Do Veracrypt encrypted volumes have any kind of brute force protection?

How can this shape perfectly cover a cube?

Has JSON.serialize suppressApexObjectNulls ever worked?

Past vs. present tense when referring to a fictional character

What are the advantages of using TLRs to rangefinders?

Why does this Apple //e drops into system monitor when booting?

Is all-caps blackletter no longer taboo?

Certain list transform

Placement of positioning lights on A320 winglets

A flower's head or heart?

What does the "titan" monster tag mean?

Does WiFi affect the quality of images downloaded from the internet?

Background for black and white chart

Why is it bad to use your whole foot in rock climbing

How can I find out about the game world without meta-influencing it?

Am I being scammed by a sugar daddy?



8086 Reset vector above 20 bits with buses of 20 bits


What are some resources for getting started in operating system development?Do normal x86 or AMD PCs run startup/BIOS code directly from ROM, or do they copy it first to RAM?How does the segment:offset addressing scheme work?What is the value of segment registers in 8086?Intel Reset VectorReset vector in 386+ processorsDeoptimizing a program for the pipeline in Intel Sandybridge-family CPUsLoading program from RAM in 8086intel reset vector and documentation pedantics. Bits vs bytesHow do instructions fit in the instruction register on x86?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















How can the cpu fetch instructions from the address 0xfffffff0 ( CS_base : 0xffff0000 + IP : 0xfff0) if it's above the 1mb limit of the 20 bit bus?



  • I understand that the cs register start with a base address of 0xffff0000

  • But i don't understand how can the bus communicate this address with only 20 bit bus

I have read the other posts; they only talk about the fact the the cs register is hardwired to get the 0xffff0000 base address, not about the bus limit










share|improve this question
























  • Possible duplicate of Software initialization code at 0xFFFFFFF0H, but I haven't read them carefully enough to be sure. Brendan posted a similar answer to that old question only a few weeks before this was asked, no wonder his answer here looks similar :P

    – Peter Cordes
    Apr 6 at 3:19

















0















How can the cpu fetch instructions from the address 0xfffffff0 ( CS_base : 0xffff0000 + IP : 0xfff0) if it's above the 1mb limit of the 20 bit bus?



  • I understand that the cs register start with a base address of 0xffff0000

  • But i don't understand how can the bus communicate this address with only 20 bit bus

I have read the other posts; they only talk about the fact the the cs register is hardwired to get the 0xffff0000 base address, not about the bus limit










share|improve this question
























  • Possible duplicate of Software initialization code at 0xFFFFFFF0H, but I haven't read them carefully enough to be sure. Brendan posted a similar answer to that old question only a few weeks before this was asked, no wonder his answer here looks similar :P

    – Peter Cordes
    Apr 6 at 3:19













0












0








0








How can the cpu fetch instructions from the address 0xfffffff0 ( CS_base : 0xffff0000 + IP : 0xfff0) if it's above the 1mb limit of the 20 bit bus?



  • I understand that the cs register start with a base address of 0xffff0000

  • But i don't understand how can the bus communicate this address with only 20 bit bus

I have read the other posts; they only talk about the fact the the cs register is hardwired to get the 0xffff0000 base address, not about the bus limit










share|improve this question
















How can the cpu fetch instructions from the address 0xfffffff0 ( CS_base : 0xffff0000 + IP : 0xfff0) if it's above the 1mb limit of the 20 bit bus?



  • I understand that the cs register start with a base address of 0xffff0000

  • But i don't understand how can the bus communicate this address with only 20 bit bus

I have read the other posts; they only talk about the fact the the cs register is hardwired to get the 0xffff0000 base address, not about the bus limit







x86 cpu-architecture boot bios osdev






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 25 at 8:18









Peter Cordes

144k21221367




144k21221367










asked Mar 25 at 1:41









mohamed azaiezmohamed azaiez

457




457












  • Possible duplicate of Software initialization code at 0xFFFFFFF0H, but I haven't read them carefully enough to be sure. Brendan posted a similar answer to that old question only a few weeks before this was asked, no wonder his answer here looks similar :P

    – Peter Cordes
    Apr 6 at 3:19

















  • Possible duplicate of Software initialization code at 0xFFFFFFF0H, but I haven't read them carefully enough to be sure. Brendan posted a similar answer to that old question only a few weeks before this was asked, no wonder his answer here looks similar :P

    – Peter Cordes
    Apr 6 at 3:19
















Possible duplicate of Software initialization code at 0xFFFFFFF0H, but I haven't read them carefully enough to be sure. Brendan posted a similar answer to that old question only a few weeks before this was asked, no wonder his answer here looks similar :P

– Peter Cordes
Apr 6 at 3:19





Possible duplicate of Software initialization code at 0xFFFFFFF0H, but I haven't read them carefully enough to be sure. Brendan posted a similar answer to that old question only a few weeks before this was asked, no wonder his answer here looks similar :P

– Peter Cordes
Apr 6 at 3:19












2 Answers
2






active

oldest

votes


















2














Originally (e.g. for 8088, 8086, 80186), physical addresses were 20-bits (giving 1 MiB of physical address space). At power-on and reset, CS:IP was set to "0xF000:0xFFF0 = 0xFFFF0", and the firmware's ROM was at the end of the physical address space (e.g. ending at physical address 0xFFFFF).



Note that this value is not "above 20 bits" because of the way "segment:offset" was converted into a physical address (specifically, "physical = segment * 16 + offset").



Also note that for physical addresses that didn't fit in 20 bits, the highest bit was discarded to make it fit in 20 bits (e.g. "0xFFFF:0xFFFE = 0xFFFF*16 + 0xFFFE = 0x10FFEE = 0x0FFEE"). This led to special hackery ("A20 gate") to preserve backward compatibility by disabling the 21st address line (A20) when 80286 was released (and the physical address size was increased to 24 bits giving 16 MiB of physical address space).



The other change that happened for 80286 is that (to support protected mode) segment registers (which were originally just a 16 bit integer) gained some hidden pieces - primarily a hidden "segment base" value was added to segment registers, so that the (in protected mode) you have the visible value that was loaded into the segment register and the details of the segment (base address, limit) were loaded from a table (global descriptor table or local descriptor table) and not directly implied by the value loaded into the segment register, the physical address calculation was changed to use the hidden value (e.g. "physical = segment.base + offset"), and in real mode the segment base was set on segment loads (e.g. "segment.base = value * 16") so that it all worked the same when in real mode.



Later (starting with 80386) the physical address space size was increased (first to 32-bit, then to 36-bit, then to "architectural maximum of 52 bits"). When this happened they changed the value loaded into hidden part of CS at power-on/reset. Specifically, the visible part remained the same (0xF000) but the hidden "segment base" part was set to 0xFFFF0000 so that it effectively becomes "0xFFFF0000+0xFFF0 = 0xFFFFFFF0". In addition, the firmware's ROM was shifted to the end of the 32-bit address space (e.g. ending at physical address 0xFFFFFFFF); and (for compatibility) a piece of the ROM was copied (possibly decompressed) and put in RAM at the old address (ending at physical address 0x000FFFFF), and the memory controller was configured such that writes to the "legacy ROM area" were ignored (so that it still behaved like ROM, but was faster because RAM was faster than ROM).



Of course now (for UEFI, in theory and/or once "hybrid BIOS+UEFI" permanently ceases to exist next year) this can disappear - there's no need to copy a part of the ROM into the "legacy ROM area" and no need to configure the memory controller to ignore writes to that area; and we could just have large (3 GiB?) area of normal usable RAM from 0x00000000 to 0xBFFFFFFFF.






share|improve this answer
































    1














    The 8086 has a 20-bit bus and on reset the CS register is set to 0xffff and the IP set to 0x0000, making the physical address 0xffff0, or 20-bits. 20-bit addressable space CPUs have 16-bit CS and IP registers, and thus the register values you have in your question (CS : 0xffff0000 + EP : 0xfff0) are incorrect for 8086 CPU.






    share|improve this answer

























    • Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

      – prl
      Mar 25 at 6:49











    • @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

      – XsummusX
      Mar 26 at 4:40











    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55330308%2f8086-reset-vector-above-20-bits-with-buses-of-20-bits%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    Originally (e.g. for 8088, 8086, 80186), physical addresses were 20-bits (giving 1 MiB of physical address space). At power-on and reset, CS:IP was set to "0xF000:0xFFF0 = 0xFFFF0", and the firmware's ROM was at the end of the physical address space (e.g. ending at physical address 0xFFFFF).



    Note that this value is not "above 20 bits" because of the way "segment:offset" was converted into a physical address (specifically, "physical = segment * 16 + offset").



    Also note that for physical addresses that didn't fit in 20 bits, the highest bit was discarded to make it fit in 20 bits (e.g. "0xFFFF:0xFFFE = 0xFFFF*16 + 0xFFFE = 0x10FFEE = 0x0FFEE"). This led to special hackery ("A20 gate") to preserve backward compatibility by disabling the 21st address line (A20) when 80286 was released (and the physical address size was increased to 24 bits giving 16 MiB of physical address space).



    The other change that happened for 80286 is that (to support protected mode) segment registers (which were originally just a 16 bit integer) gained some hidden pieces - primarily a hidden "segment base" value was added to segment registers, so that the (in protected mode) you have the visible value that was loaded into the segment register and the details of the segment (base address, limit) were loaded from a table (global descriptor table or local descriptor table) and not directly implied by the value loaded into the segment register, the physical address calculation was changed to use the hidden value (e.g. "physical = segment.base + offset"), and in real mode the segment base was set on segment loads (e.g. "segment.base = value * 16") so that it all worked the same when in real mode.



    Later (starting with 80386) the physical address space size was increased (first to 32-bit, then to 36-bit, then to "architectural maximum of 52 bits"). When this happened they changed the value loaded into hidden part of CS at power-on/reset. Specifically, the visible part remained the same (0xF000) but the hidden "segment base" part was set to 0xFFFF0000 so that it effectively becomes "0xFFFF0000+0xFFF0 = 0xFFFFFFF0". In addition, the firmware's ROM was shifted to the end of the 32-bit address space (e.g. ending at physical address 0xFFFFFFFF); and (for compatibility) a piece of the ROM was copied (possibly decompressed) and put in RAM at the old address (ending at physical address 0x000FFFFF), and the memory controller was configured such that writes to the "legacy ROM area" were ignored (so that it still behaved like ROM, but was faster because RAM was faster than ROM).



    Of course now (for UEFI, in theory and/or once "hybrid BIOS+UEFI" permanently ceases to exist next year) this can disappear - there's no need to copy a part of the ROM into the "legacy ROM area" and no need to configure the memory controller to ignore writes to that area; and we could just have large (3 GiB?) area of normal usable RAM from 0x00000000 to 0xBFFFFFFFF.






    share|improve this answer





























      2














      Originally (e.g. for 8088, 8086, 80186), physical addresses were 20-bits (giving 1 MiB of physical address space). At power-on and reset, CS:IP was set to "0xF000:0xFFF0 = 0xFFFF0", and the firmware's ROM was at the end of the physical address space (e.g. ending at physical address 0xFFFFF).



      Note that this value is not "above 20 bits" because of the way "segment:offset" was converted into a physical address (specifically, "physical = segment * 16 + offset").



      Also note that for physical addresses that didn't fit in 20 bits, the highest bit was discarded to make it fit in 20 bits (e.g. "0xFFFF:0xFFFE = 0xFFFF*16 + 0xFFFE = 0x10FFEE = 0x0FFEE"). This led to special hackery ("A20 gate") to preserve backward compatibility by disabling the 21st address line (A20) when 80286 was released (and the physical address size was increased to 24 bits giving 16 MiB of physical address space).



      The other change that happened for 80286 is that (to support protected mode) segment registers (which were originally just a 16 bit integer) gained some hidden pieces - primarily a hidden "segment base" value was added to segment registers, so that the (in protected mode) you have the visible value that was loaded into the segment register and the details of the segment (base address, limit) were loaded from a table (global descriptor table or local descriptor table) and not directly implied by the value loaded into the segment register, the physical address calculation was changed to use the hidden value (e.g. "physical = segment.base + offset"), and in real mode the segment base was set on segment loads (e.g. "segment.base = value * 16") so that it all worked the same when in real mode.



      Later (starting with 80386) the physical address space size was increased (first to 32-bit, then to 36-bit, then to "architectural maximum of 52 bits"). When this happened they changed the value loaded into hidden part of CS at power-on/reset. Specifically, the visible part remained the same (0xF000) but the hidden "segment base" part was set to 0xFFFF0000 so that it effectively becomes "0xFFFF0000+0xFFF0 = 0xFFFFFFF0". In addition, the firmware's ROM was shifted to the end of the 32-bit address space (e.g. ending at physical address 0xFFFFFFFF); and (for compatibility) a piece of the ROM was copied (possibly decompressed) and put in RAM at the old address (ending at physical address 0x000FFFFF), and the memory controller was configured such that writes to the "legacy ROM area" were ignored (so that it still behaved like ROM, but was faster because RAM was faster than ROM).



      Of course now (for UEFI, in theory and/or once "hybrid BIOS+UEFI" permanently ceases to exist next year) this can disappear - there's no need to copy a part of the ROM into the "legacy ROM area" and no need to configure the memory controller to ignore writes to that area; and we could just have large (3 GiB?) area of normal usable RAM from 0x00000000 to 0xBFFFFFFFF.






      share|improve this answer



























        2












        2








        2







        Originally (e.g. for 8088, 8086, 80186), physical addresses were 20-bits (giving 1 MiB of physical address space). At power-on and reset, CS:IP was set to "0xF000:0xFFF0 = 0xFFFF0", and the firmware's ROM was at the end of the physical address space (e.g. ending at physical address 0xFFFFF).



        Note that this value is not "above 20 bits" because of the way "segment:offset" was converted into a physical address (specifically, "physical = segment * 16 + offset").



        Also note that for physical addresses that didn't fit in 20 bits, the highest bit was discarded to make it fit in 20 bits (e.g. "0xFFFF:0xFFFE = 0xFFFF*16 + 0xFFFE = 0x10FFEE = 0x0FFEE"). This led to special hackery ("A20 gate") to preserve backward compatibility by disabling the 21st address line (A20) when 80286 was released (and the physical address size was increased to 24 bits giving 16 MiB of physical address space).



        The other change that happened for 80286 is that (to support protected mode) segment registers (which were originally just a 16 bit integer) gained some hidden pieces - primarily a hidden "segment base" value was added to segment registers, so that the (in protected mode) you have the visible value that was loaded into the segment register and the details of the segment (base address, limit) were loaded from a table (global descriptor table or local descriptor table) and not directly implied by the value loaded into the segment register, the physical address calculation was changed to use the hidden value (e.g. "physical = segment.base + offset"), and in real mode the segment base was set on segment loads (e.g. "segment.base = value * 16") so that it all worked the same when in real mode.



        Later (starting with 80386) the physical address space size was increased (first to 32-bit, then to 36-bit, then to "architectural maximum of 52 bits"). When this happened they changed the value loaded into hidden part of CS at power-on/reset. Specifically, the visible part remained the same (0xF000) but the hidden "segment base" part was set to 0xFFFF0000 so that it effectively becomes "0xFFFF0000+0xFFF0 = 0xFFFFFFF0". In addition, the firmware's ROM was shifted to the end of the 32-bit address space (e.g. ending at physical address 0xFFFFFFFF); and (for compatibility) a piece of the ROM was copied (possibly decompressed) and put in RAM at the old address (ending at physical address 0x000FFFFF), and the memory controller was configured such that writes to the "legacy ROM area" were ignored (so that it still behaved like ROM, but was faster because RAM was faster than ROM).



        Of course now (for UEFI, in theory and/or once "hybrid BIOS+UEFI" permanently ceases to exist next year) this can disappear - there's no need to copy a part of the ROM into the "legacy ROM area" and no need to configure the memory controller to ignore writes to that area; and we could just have large (3 GiB?) area of normal usable RAM from 0x00000000 to 0xBFFFFFFFF.






        share|improve this answer















        Originally (e.g. for 8088, 8086, 80186), physical addresses were 20-bits (giving 1 MiB of physical address space). At power-on and reset, CS:IP was set to "0xF000:0xFFF0 = 0xFFFF0", and the firmware's ROM was at the end of the physical address space (e.g. ending at physical address 0xFFFFF).



        Note that this value is not "above 20 bits" because of the way "segment:offset" was converted into a physical address (specifically, "physical = segment * 16 + offset").



        Also note that for physical addresses that didn't fit in 20 bits, the highest bit was discarded to make it fit in 20 bits (e.g. "0xFFFF:0xFFFE = 0xFFFF*16 + 0xFFFE = 0x10FFEE = 0x0FFEE"). This led to special hackery ("A20 gate") to preserve backward compatibility by disabling the 21st address line (A20) when 80286 was released (and the physical address size was increased to 24 bits giving 16 MiB of physical address space).



        The other change that happened for 80286 is that (to support protected mode) segment registers (which were originally just a 16 bit integer) gained some hidden pieces - primarily a hidden "segment base" value was added to segment registers, so that the (in protected mode) you have the visible value that was loaded into the segment register and the details of the segment (base address, limit) were loaded from a table (global descriptor table or local descriptor table) and not directly implied by the value loaded into the segment register, the physical address calculation was changed to use the hidden value (e.g. "physical = segment.base + offset"), and in real mode the segment base was set on segment loads (e.g. "segment.base = value * 16") so that it all worked the same when in real mode.



        Later (starting with 80386) the physical address space size was increased (first to 32-bit, then to 36-bit, then to "architectural maximum of 52 bits"). When this happened they changed the value loaded into hidden part of CS at power-on/reset. Specifically, the visible part remained the same (0xF000) but the hidden "segment base" part was set to 0xFFFF0000 so that it effectively becomes "0xFFFF0000+0xFFF0 = 0xFFFFFFF0". In addition, the firmware's ROM was shifted to the end of the 32-bit address space (e.g. ending at physical address 0xFFFFFFFF); and (for compatibility) a piece of the ROM was copied (possibly decompressed) and put in RAM at the old address (ending at physical address 0x000FFFFF), and the memory controller was configured such that writes to the "legacy ROM area" were ignored (so that it still behaved like ROM, but was faster because RAM was faster than ROM).



        Of course now (for UEFI, in theory and/or once "hybrid BIOS+UEFI" permanently ceases to exist next year) this can disappear - there's no need to copy a part of the ROM into the "legacy ROM area" and no need to configure the memory controller to ignore writes to that area; and we could just have large (3 GiB?) area of normal usable RAM from 0x00000000 to 0xBFFFFFFFF.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Mar 25 at 3:37

























        answered Mar 25 at 3:09









        BrendanBrendan

        14.7k1534




        14.7k1534























            1














            The 8086 has a 20-bit bus and on reset the CS register is set to 0xffff and the IP set to 0x0000, making the physical address 0xffff0, or 20-bits. 20-bit addressable space CPUs have 16-bit CS and IP registers, and thus the register values you have in your question (CS : 0xffff0000 + EP : 0xfff0) are incorrect for 8086 CPU.






            share|improve this answer

























            • Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

              – prl
              Mar 25 at 6:49











            • @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

              – XsummusX
              Mar 26 at 4:40















            1














            The 8086 has a 20-bit bus and on reset the CS register is set to 0xffff and the IP set to 0x0000, making the physical address 0xffff0, or 20-bits. 20-bit addressable space CPUs have 16-bit CS and IP registers, and thus the register values you have in your question (CS : 0xffff0000 + EP : 0xfff0) are incorrect for 8086 CPU.






            share|improve this answer

























            • Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

              – prl
              Mar 25 at 6:49











            • @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

              – XsummusX
              Mar 26 at 4:40













            1












            1








            1







            The 8086 has a 20-bit bus and on reset the CS register is set to 0xffff and the IP set to 0x0000, making the physical address 0xffff0, or 20-bits. 20-bit addressable space CPUs have 16-bit CS and IP registers, and thus the register values you have in your question (CS : 0xffff0000 + EP : 0xfff0) are incorrect for 8086 CPU.






            share|improve this answer















            The 8086 has a 20-bit bus and on reset the CS register is set to 0xffff and the IP set to 0x0000, making the physical address 0xffff0, or 20-bits. 20-bit addressable space CPUs have 16-bit CS and IP registers, and thus the register values you have in your question (CS : 0xffff0000 + EP : 0xfff0) are incorrect for 8086 CPU.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Mar 25 at 6:44









            prl

            5,9782319




            5,9782319










            answered Mar 25 at 2:34









            XsummusXXsummusX

            2814




            2814












            • Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

              – prl
              Mar 25 at 6:49











            • @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

              – XsummusX
              Mar 26 at 4:40

















            • Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

              – prl
              Mar 25 at 6:49











            • @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

              – XsummusX
              Mar 26 at 4:40
















            Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

            – prl
            Mar 25 at 6:49





            Note that modern x86 CPUs also have a 16-bit CS register. The base address, 0xffff0000, is stored in the hidden part; the CS register value on reset is 0xf000.

            – prl
            Mar 25 at 6:49













            @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

            – XsummusX
            Mar 26 at 4:40





            @pri, You are correct, but the poster asked specifically about the 8086 CPU where the CS register is 16-bit and is used with the 16-bit IP to form the physical 20-bit address.

            – XsummusX
            Mar 26 at 4:40

















            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55330308%2f8086-reset-vector-above-20-bits-with-buses-of-20-bits%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

            Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript