. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  cs:ip 中段地址是怎么确定的。  [待解决] 回复[ 10次 ]   点击[ 496次 ]  
lijunabc
[帖 主]   [ 发表时间:2009-12-24 10:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54
cs刚开始的地址是由cpu决定的吗?
是怎么决定的.
lijunabc
[第1楼]   [ 回复时间:2009-12-24 12:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54
段地址是由程序确定的还是由cpu确定的,是怎么确定的?
lijunabc
[第2楼]   [ 回复时间:2009-12-24 12:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54
第二十四页:
    其实,内存并没有分段,段的划分来自于cpu,由于8086cpu用“基础地址”(段地址*16)+偏移地址=物理地址的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。
其中的段地址是怎么确定的。
versaariel
[第3楼]   [ 回复时间:2009-12-24 14:16 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
如果由程序给出,那说明你(程序)可以指定段地址,如果由CPU给出,那说明你(程序)不能指定段地址.DEBUG下做个实验就知道了,往后看,问题会解决的.cs是存放代码段的,还有其他不同的段寄存器.
scuzg
[第4楼]   [ 回复时间:2009-12-24 17:48 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
cs、ds、ss等段寄存器的值决定了应用程序在内存中的位置,这不能有程序自己确定,而是由操作系统根据内存的占用情况分配给导入内存、准备运行的程序的。
wtan
[第5楼]   [ 回复时间:2010-01-03 12:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-03 08:56
楼上说得有道理,应该是操作系统决定的,不过具体的过程应该比较复杂,特别是涉及到多任务的时候
lijunabc
[第6楼]   [ 回复时间:2010-01-05 11:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-24 09:54
谢谢你们,有点启发。
但是刚开机的时候cpu怎么工作呢,应该自己默认会产生一个段地址和偏移地址吧,这个地址是cpu厂商规定的还是怎么决定的。
lijunabc
[第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的管理下执行的。
lijunabc
[第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的管理下执行的。
hdlyoyo
[第9楼]   [ 回复时间:2010-01-14 10:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-08 13:00
7楼说的有道理!
cwandqd
[第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 然后电脑自检启动。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved