应用PC-1500微机技巧四则

🏠 首页 《无线电》杂志 1987年 🔗 第221期 🔗 第5页 分类:应用电子仪器 🔗 郭显忠 🔗, 刘臻祥 🔗

一、源程序的恢复

键入PC-1500计算机源程序是个费时费力的工作。如果不慎将它误清除,这时请你不要着急,有补救的办法。

在计算机的读写存贮器内,源程序的清除只是将程序末地址存贮单元&7867、&7868存贮的地址抹掉,同时将程序起始地址变为末地址。

恢复时采用PRO、RUN或RESEVE三种方式均可。具体方法如下:

键入:POKE A,B,CENTER

POKE &7867,D,FENTER其中A为键入PEEK &7865*256+PEEK &7866ENTER显示屏上显示的数值。B、C分别为源程序最小行号除以256的整数商和余数。D、F分别为A-1+G除以256的整数商和余数。G为程序占用的字节数。键完源程序后用STATUS1指令求得(不知此数时适当往大里估计值也可,程序恢复后再将多余行清除掉。也可算出:程序中指令个数的2倍加语句号个数的2倍加行数即为源程序占用的字节数)。

图1
图1 🔍原图 (477×966)

以日历小程序为例说明:(程序见表1)

图2
图2 🔍原图 (507×1060)

G用STATUS1指令求得为255。按NEWENTER清除后按上述方法求得A=197;B=0; C=10;D=1;F=195。

键入POKE 197,0,10ENTERPOKE &7867,1,195 ENTER

二、数据区的恢复

错用了数据清除语句“CLEAR”,数据能否用简便办法恢复呢?能。在RAM内,数据的清除只是将数据地址存贮单元&7899、&789A存贮的地址改写为末地址。

恢复时计算机用RUN、PRO或RESEVE三种方式均可。具体方法如下:

键入 POKE &7899,A,BENTER

其中A、B计数值分别为键入STATUS3—C所显示的数除以256的整数商和余数。

C为数据占用的字节数。由程序中的非固定变量个数算出:每个变量说明符占7个字节,数值占8个字节,字符串变量占16个字节,加起来即为数据区占用的字节。

举例:程序见表2。键入CLEARENTER数据区被清除。在RUN方式GOTO40启动显示屏不显示。

图3
图3 🔍原图 (504×2322)

计算数据区占用的字节数C:此程序中共有2个非固定变量说明符AA和AB$,每个占用7个字节,2个占用14个字节;AA为数值变量数值占8个字节;AB$为字符串变量字符串长度占16个字节。所以C=14+8+16=38;A=71;B=218。

键入POKE&7899,71,218ENTER

数据得以恢复。在RUN方式键入GOTO40显示屏显示AA、AB$两个变量的值。

三、用字符串压缩数据的内存

PC—1500机容量有限,要处理较多的数据时容量尚显不足。用字符串压缩内存可在一定程度上增大数据区容量缓和这个矛盾。

每个数据按BASIC语言正常方法存贮占用内存8个字节,而字符串变量占用的字节数可用定维语句“DIM”规定。据此将数据先变为字符串再存入内存。便可相应的节约一些内存。

定维语句的一般格式为“DIM字符串变量名(下标个数)*每个字符串变量长度”。例:“DIMA$(99)* 5”表示A$下标变量共有100个,每个变量的长度为5个字节。

我们日常生活中用的数据一般不太大,若小于8位,则可以将数据变量通过“STR$”语句变为字符串变量,经过定维语句“DIM”规定其长度存入内存,用时通过“VAL”语句将其变回为数据变量,达到压缩数据扩大内存容量的目的。

下面以将数据按大小排列的源程序为例说明:程序见PRO-1。

在PRO方式键入源程序,在RUN方式键入数据。

上面两程序当N=99时为100个数据。“PRO—1”为常用方法存贮数据,数据区占用字节807个。

“PRO-2”为用字符串压缩数据存贮,执行程序后数据区占用字节507个。共节约出数据区内存300个字节。

四、用PEEK、POKE压缩数据区

使用PEEK和POKE指令直接将数据写入RAM存贮器的数据区,能更有效的解决数据较多时容量不足的问题。

计算机RAM内的每个字节都由八位二进制数组成,最大可表示的数字为255,连用二个可表达数为256×255+255,依次类推连用三个字节可表达数为256\(^{2}\)×255+256×255+255。利用计算机的这一性质,用POKE指令进行存贮,使用时用PEEK指令取出。这样压缩内存的数据可使计算机存贮数据的能力成数倍地增大。假如每个数据压缩为2个字节,则每个数据就比正常存贮省出6个字节。

仍旧将数据按大小排列的源程序为例说明:程序见PRO-3。

“PRO—1”、“PRO—2”、“PRO—3”功能一样。“PRO—1”为正常存贮,N=99时为100个数据占内存容量807个字节。“PRO—2”为字符串压缩存贮,N=99为100个数据时占用内存容量507个字节。“PRO—3”为PEEK、POKE压缩内存,N=99为100个数据时占用内存容量200个字节。(郭显忠 刘臻祥)