奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 349 页

PDF 物理页索引 365 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
349
PDF 物理页
365(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
19b0f151074f2f307da0836955a05291a81d1d009332f9092463b9a10bdc5404

MOV C, A ;把结果存入寄存器C中 RET

通过这些程序,可以把一个用十六进制表示的字节显示在视频显示器上。进一步来讲,如果想把它转换成十进制数,还需要做些别的工作。这个过程与把一个数从十六进制转换成十进制的过程(用10除几次)十分相似。

记住,到此为止实际上你还没有将汇编语言程序写入到内存。你需要把汇编语言写到纸上,将它们转换成机器代码后才写入到内存中。直到第24章我们一直都会采用这种“手工汇编”的方式。

控制面板的确不需要很多硬件支持,但它不便于使用,因为它有着最糟糕的输入输出形式。我们甚至可以从头开始独立建造一台计算机,但仍然无法改变这样糟糕的输入输出方式通过按键输入0和1这的确让人尴尬。如何把控制面板去掉是要解决的首要问题。

实现按键来控制输入输出的不二之选就是键盘。前面我们已经搭建了一个计算机键盘,每次有按键按下的时候,就会产生一个中断信号送至微处理器。计算机内有中断控制芯片,通过执行一条RST指令使得微处理器响应这次中断,例如RST1,微处理器执行这条指令,把当前程序计数器的值压入到堆栈中,然后跳转到地址0008h处。可以直接在这片地址空间上输入一些代码(使用控制面板),这些代码称为键盘处理程序( keyboard handler)。

为了使复位后微处理器能正常工作,微处理器在复位的时侯需要执行一些代码,称为初始化代码(initialization code)。堆栈指针在运行初始化代码的寸候会被设置,以保证堆栈处在内存的有效区域内。为了不让屏幕上显示随机字符,初始化代码还把视频显示器内存中的每个字节设置成十六进制数20h,在ASCⅡ码中这是一个空格符。此外,初始化代码还要把光标定位在第一行第一列的位置——OUT(Output)指令可以完成这一操作:光标在视频显示器上是以下画线的形式出现的一—它可以显示出下一个要输入字符的位置。为了使微处理器能响应键盘中断,必须设置EI指令开中断,而HT指令可以使微处理器停止工作。

上面讲述的就是初始化代码的作用。执行了HLT指令后,计算机则处于停机状态。为了把计算机从停机状态唤醒,只能通过控制面板的复位信号或者键盘的中断信号来实现。

22 操作系统

349