高手请进,快帮帮我!!

superhackerlin 2002-12-28 05:50:04
作为一个汇编新手,最近在编程的过程中遇到了许多难以解决的问题,以至现在深陷其中,不能自拨,望各位高手指教!
1。寄存器入本的时候在SS段存放的是寄存器中的内容,在出本的时候,CPU怎么知道该把当前SP 指针所指的二进制数送回到哪个寄存器呢?也就是说,在出栈的时候CPU是怎样寻址的呢?

2。DOS是单任务的操作糸统,任务切换只能靠中断来实现,我一直不明白8号中断(定时器)与一般的中断有什么区别。众所周知,在中断处理的时候糸统会把相应寄存器CS,IP压入堆栈,而大家都知道DOS下的8号中断由糸统每秒产生18.206次,那么按中断理论来讲,比如:当前正在运行某一程序,那么糸统为了定时将每秒18次地将当前执行程序的CS,IP压入/取出糸统堆栈,对于早期的8086/8088机来说,是否会影响程序运行速度?还有,8号中断向量指向什么代码段(处理程序)?这些代码段完成什么功能?

3。8号中断与1C号中断有什么区别?DOS操作糸统到底是怎样正确地维护时钟(糸统时间)的?那么停机以后呢?靠电子表吗?糸统时间又是放在什么地方的呢?


4。为什么在TS或中断服务程序中访问DOS会导致程序崩溃?但为什么可以用BIOS中断调用?

5。DOS操作糸统位于内存TPA(临时程序区)顶部的16个字节是做什么用的?

6。DOS的糸统堆栈在内存的什么地方?
...全文
31 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaos 2003-02-13
  • 打赏
  • 举报
回复
对,硬件中断一般是CPU维护,所以速度很快,有专门的CPU引脚支持,是独立的CPU功能

DOS系统堆栈在640K内存的顶部
MagicianZ 2003-02-13
  • 打赏
  • 举报
回复
2.你可以按照中断向量的规则(这个知道吧)找到int8h的代码地址然后用debug反汇编一下,应该是只有一个RET。这个中断的主要作用是为DOS的TSR程序提供一个接口,要不然没法使得TSR正常激活。
3.系统的时钟有两种:一种是由可编程时钟控制器(好象是叫8255)产生的,就是一般的所谓总线周期的产生者,在DOS下读取的应该是这个时钟,它不是很准,在微秒级上有较大的误差。另外还有一个时钟是CPU内部电路产生的,维持CPU的指令周期,保证正常的流水线操作。精确度比较高。但断电后不能保持。所以你说的可以保持的时钟应该是前者。不过现在你可找不到单独的8255哦,已经集成进主板的芯片组里了。
4.TS是不是指TSR啊?你的这个问题涉及操作系统的可重入特性。DOS是严格的不可重入的,所以这样的调用一般会导致死机或者系统重新启动。但是,也并不是完全不能调用,调用方法涉及DOS的未公开特性。你可以参考《未公开的DOS核心技术》一书。
5.那个东西好象是叫做PSP的,作用是维持系统在执行一个程序后的正常返回。
wppw2002 2003-02-07
  • 打赏
  • 举报
回复
最好到汇编那儿问,我只知道一点,不一定对。

1。这个是由操作系统实现的,送到那个寄存器是由OS决定的。
2.8号中断的代码是硬件固化的,不管是什么中断,如果是DOS中断,是在IO。SYS中,如果是BIOS中断,是在硬件中固化的,书上都有啊,我看你的汇编水平比我好,怎么这个都不知道啊。
3。 系统时间不是由DOS维持 的,关机后靠主板上那块电池维持的,有时如果电池坏了,每次开机时间都要重设。

6。系统堆 栈,在系统保留区吧,不清楚。你把开机启动那几个文件反汇编一下,就都知道了。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧