|
主题 : : cs:ip 中段地址是怎么确定的。 [待解决] |
回复[ 10次 ]
点击[ 496次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-12-24 10:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54 |
cs刚开始的地址是由cpu决定的吗?
是怎么决定的. | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-12-24 12:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54 |
段地址是由程序确定的还是由cpu确定的,是怎么确定的? | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-12-24 12:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54 |
第二十四页:
其实,内存并没有分段,段的划分来自于cpu,由于8086cpu用“基础地址”(段地址*16)+偏移地址=物理地址的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。
其中的段地址是怎么确定的。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-12-24 14:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
如果由程序给出,那说明你(程序)可以指定段地址,如果由CPU给出,那说明你(程序)不能指定段地址.DEBUG下做个实验就知道了,往后看,问题会解决的.cs是存放代码段的,还有其他不同的段寄存器. | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-12-24 17:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
cs、ds、ss等段寄存器的值决定了应用程序在内存中的位置,这不能有程序自己确定,而是由操作系统根据内存的占用情况分配给导入内存、准备运行的程序的。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-01-03 12:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-03 08:56 |
楼上说得有道理,应该是操作系统决定的,不过具体的过程应该比较复杂,特别是涉及到多任务的时候 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-01-05 11:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54 |
谢谢你们,有点启发。
但是刚开机的时候cpu怎么工作呢,应该自己默认会产生一个段地址和偏移地址吧,这个地址是cpu厂商规定的还是怎么决定的。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-01-05 11:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54 |
assume cs:code
把自己的代码段和cpu的cs关联起来了,这个关联关系之间应该由操作系统计算分配的吧。
现在理一下这个过程:
刚开机的时候cpu的cs和ip应该会默认有值,这个值读rom中的信息,rom给他指令,让他读别的地方的指令(应该到操作系统了),然后操作系统就开始霸占了cpu的大部分时间,其他程序都是有cpu分配,并在cpu的管理下执行的。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2010-01-05 11:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54 |
assume cs:code
把自己的代码段和cpu的cs关联起来了,这个关联关系之间应该由操作系统计算分配的吧。
现在理一下这个过程:
刚开机的时候cpu的cs和ip应该会默认有值,这个值读rom中的信息,rom给他指令,让他读别的地方的指令(应该到操作系统了),然后操作系统就开始霸占了cpu的大部分时间,其他程序都是有cpu分配,并在cpu的管理下执行的。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2010-01-14 10:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-08 13:00 |
|
|
|
|
|
[第10楼]
[ 回复时间:2010-03-08 23:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-02 13:24 |
书上说的很清楚了,第30页
是这么说的。
在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=f000h IP=ffffh 即8086PC刚启动时,CPU从内存ffff0H单元读取指令执行,ffff0H单元中的指令是CPU开机后执行的第一条指令。
第11页 说过 所有的存储器(包括显卡,带ROM的网卡,主板ROM(BIOS)芯片)可以被看作为一个大的逻辑空间。
我想开机后的第一条指令应该指向主板的ROM 然后电脑自检启动。 | | |