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

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

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

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

不言而喻,这是一个耗时耗力的过程。在这个过程中一些小错误是在所难免的。看看你的手指,或许已经磨出了水泡,你的大脑也感觉一片混乱,而这一切都是工作的代价。

但当你开始用视频显示器显示程序运行的结果时,到底是什么使这一切都变得简单、方便呢?上一章中我们讲到只显示字符的视频显示器,它有一个1KB的随机访问存储器,可以存储25行、每行40个字符的ASCI码。程序将要显示的内容写入到此存储器中,其方法与向计算机中其他存储器中写入数据的方法一样。

尽管把程序的输出结果显示在视频显示器上看似简单,实则不然。例如,你编写了一个程序用来完成某个计算任务,如果计算结果是4Bh,不能将这个值直接写入到视频显示器的内存中。如果犯了这样的错误,屏幕上显示的将是字母K,因为此字母的对应ASCII码的值正是4Bh。4Bh 由两个字符组成,其中 4对应的 ASCII码是34h,B 对应的 ASCII码是42h,应该将这两个ASCII码写到视频显示器存储器上,才能在显示器上看到期望的数值。这里再强调一下,8位二进制数可以表示两位十六进制数字,因此必须将每一位十六进制数字对应的ASCI码,写入到视频显示器的存储器中才能显示这个数。

这种转换可以通过编写小的程序来实现。下面是一段8080汇编程序,功能是把存储在累加器中的十六进制数(假设这个数介于00h与0Fh之间)的每一位转换成对应的ASCⅡ码:

通过两次调用NibbleToAscii,下面的程序实现了把累加器A中的一个字节转换成两个ASCII码对应的数字,分别存放在寄存器B和C中。

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

348