WEB开发网
开发学院软件开发汇编语言 汇编语言程序设计(一) 阅读

汇编语言程序设计(一)

 2007-04-25 09:30:06 来源:WEB开发网   
核心提示:至于 Hercules 图形板,只是显示模组的一小段程式,汇编语言程序设计(一)(3),我们提示在此,是因为这种显示板很适合中文系统,任何人只要能够正确地输入,就能与拼音文字一般快速地在经过排序的资料中, 键盘是一项经常被系统分析所忽略的组件,我个人过去就如此

至于 Hercules 图形板,只是显示模组的一小段程式,我们提示在此,是因为这种显示板很适合中文系统。
键盘是一项经常被系统分析所忽略的组件,我个人过去就如此,这次特别提出,并在下文中详细说明。

二、原则

由前面任务已知有一种编码,能利用仓颉码特色,加入所有的表格符号,现在要找出一种有效率的设计及应用方式。
谁都知道在电脑作业过程上,产生功率最直接的步骤是机器码。而组合语言就是机器码的介面,根据效率定律一,组合语言的作业效率最高。
任务前面已经详细说明,效率的要求非常高,因此,我们决定利用组合语言作为基本工具。
再看效率定律二,生产成本的效益,取决于工作时间及损耗。如果采用组合语言写作,能不能在时间上有所改进?我们可以用事实证明,只要受过良好的训练,掌握了所有的技术,而且一切工具准备齐全,用组合语言写作所需要的时间,绝对不会比高阶语言多。
根据效率定律三,要达到应用方便的目标,在于功能的累进。不论将来硬体多进步,人类对其速度及容量的要求永远不会满足。采用组合语言只是第一步,举凡模组、介面等结合的技巧,及「整合」的观念,都有待大家努力去研究、开发。

三、工作性质
在谈到实际工作前,我们先说明一下中文系统。有人认为此为一系统程式,但我个人认为不如称之为附属程式。附属程式是一种环境,透过这种环境,可以增加中文的功能。因此,这种程式一定要驻留在系统中,而且,要改变原系统程式的中断程式位址。
所有的附属程式都需要一种「介面」,我们的工作自不例外。此处首先根据工作的性质,将所需的介面列举如下:
1,初始化系统图形态。
2,检查系统使用空间,决定是否能够执行。
3,检查和安排所有必要的参数值。
4,改变必要的中断入口位址。
5,申请程式的驻留,并回到系统。
在中文系统上,改变最大的首推图形字符显示INT 10H和列印INT 17H,其次是键盘处理INT 16H,和利用时序中断 INT 1CH 作为图形游标。这些本属系统功能,加以修改后,成为新的中断入口,在此仍称之为系统程式。
我们过去曾犯了一个很大的错误,为了想全面控制系统的功能,在改键盘中断程式时,把 INT 9H 也改了。原因在于对系统分析不够彻底,以致对该段程式的瞭解有了偏差。
INT 9H是在键盘输入后,每键产生两个字元的讯号,分别称为:「扫瞄码」(Scan Code) 及「字符码」(ASCII Code)。早期的机种,其键数不多,字符码完全符合 ASCII 的规定,即最高位的位元保持为0。
中文系统之所以能与若干英文软件兼容,就是利用该最高位元做分辨。我们当时误认为字符码不可能再改变,所以在写INT 9H时,该位元并未一一检查。不料新键盘的键数增加了,由于字符码不够,新加的「页控制键」,即键盘右中一列、键色较深的一区,其字符码皆为0E0H,亦即其高位不为0。这一来,在中文系统下,一碰到那些键,就被当作中文,事实上却又非中文码,因而天下大乱。
但是,在经过IBM BIOS的处理后,INT 16H 所得到的值却不然。那是为了与以往的系统兼容,把高位的位元放到一个缓冲器里去了。如果我们不改 INT 9H ,就不会有任何问题,而改了以后,又没有注意到这种情况,以致产品性能极不稳定,为人所诟病。
因为程式本身非常简单,介面解决以后,就只是程式的安排了。

四、相关问题

再来看看我们的工作还有什么应该注意的,除了程式本身的制作外,还要把前述的编码放到“聚珍整合系统”中。该系统的规格,请参考2聚珍整合系统操作手册。
我们已再三强调,表格之加入,一定要精简,否则喧宾夺主,就不值得了。
这104 种图形如果用点阵来画,共需 21,632B,竟占了系统空间的百分之廿。这还不说,点阵不能放大缩小,就无法供绘图、排版用。
于是决定了第一个原则,这些形状必须用程式绘制而不是存点阵资料,而且程式越小越好。
由于中文系统已经是图形态,且具备多种功能,所以不必再写绘图的程式,只要将输入码转换成该程式可以接受的资料结构即可。
“聚珍整合系统”内表格的制作,与下面所举的例子差异不大。为便于说明,在此以早期另一中文系统的表格符为例,使用的技术虽不成熟,但较为简洁。
当时所定的结构,是以暂存器的性质为本,规格如下:
AX=图形指令,如:横、直、斜、捺、点以及卅多种复杂的字形
BX=X1,X2
DX=Y1,Y2
SI= 指令贮存区起始位址
DI= 图形点阵贮存区起始位址
因此,只要资料结构符合,就可以运用原有的子程式。
第二个原则也因之决定,本程式应纳入原组字程式中,作为其中一个模组。
第三个原则,是在内码及资料表中,要增加一组表格码的资料。这并不难办到,因为 YYX后没有其他有效的中文字码,所以不会妨碍中文字码的排序。
凡是涉及编码的作业,千万不可忽略排序的功能。对系统分析来说,排序的功能是资料处理上,有关效率的重要手段。例如有个人口达一百万的都市,这一百万人的各种资料,都需要极为昂贵的电脑来处理。假定排序的功能良好,每天能够准时完成其固定的工作,而且排序的结果能令人一目瞭然,我们可以认定其效率正常。
再假设文字资料并不具备排序的功能,或者说其排序的结果,与使用者的观念无法配合,则电脑所处理的资料就等于废物。再若为了要用这些资料,须要用「对照表」的方式,重新排序,那么又要一倍以上的时间,也可以说还要耗费钜资增购一套电脑。
问题还没有解决,人所能接受的「文字序列」倒底又是什么呢?中文本身并不具备序列观念,这才是中文处理效率不足的,最严重的症结所在! 仅以字典为例,国人查字典时每个字要多久时间?一个「一」字,有多少同音字?如果有一个字,不知其正确读音,又该怎样去查?再问下去,恐怕能回答的人不多了,就是包括大学生以及学有专长的知识份子在内,到底能正确地读出多少音?我不讳言自己的无知,对我而言,只有三千个。
我承认当年研究仓颉输入码时,采用了拼音字母的排序优点。任何人只要能够正确地输入,就能与拼音文字一般快速地在经过排序的资料中,找到该中文字的位置。

上一页  1 2 3 4  下一页

Tags:汇编语言 程序设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接