`
javatar
  • 浏览: 1704524 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

批量法作图(速度奇迹)

阅读更多
批量法作图(速度奇迹)
余海林的创始原帖:  
批量发送字节法:

先要了解字串变量在BASIC助手中的存放方式:
   一旦程序中出现A$="XXX"之类的字串赋值语句时,在内存中用A$代表的字串
"XXX"就会被保存在内存中(内存是RAM,不要理解成闪存).并且保存的地址也
会记录在内存中,在使用A$时BASIC平台就会按记录的地址去取出"XXX".
总之,一旦出现类似A$='XXX"的语句时,BASIC助手会完成两件事:
①把"XXX"存放起来;②把"XXX"存放的地址登记下来.

对于第2步,"存放地址登记",在内存中格式是这样的
(第一个是地址,后面是该地址的值):
7659-64(表示这个变量的类型是字串)
7660-65(字符"A"的ASCII码值)
7661-3 (A$的长度,因为"XXX"长度为3)
7662-254(低位地址)
7663-63 (高位地址)

"高位"、"低位"是什么意思?由于1字节能表示的数值只有0-255,所以用1字节
来记录地址是不够的,所以用了2字节。将 "低位"+"高位"*256 所得的结
果就是存放实际地址。可以用以下方法取得:(BASIC助手运行)
]10 A$="XXX"
]20 ADD=PEEK(7662)+PEEK(7663)*256
]30 PRINT ADD

PRINT出来的数字就是"XXX"的存放地址,如果不相信,再接下去:
]40 PRINT PEEK(ADD),PEEK(ADD+1),PEEK(ADD+2)
运行结果显示:
88
88
88

查ASCII码表,X的ASCII值果然是88。

下面是具体方法:
我们对"XXX"存放在哪不感兴趣,我们的兴趣在于怎样控制内存中的某一端数
据。

第一步:报名。在程序第一句中出现X$="X"之类语句,让BASIC助手记录下字串
X$的存放地址。

第二步:修改记录地址。只要X$是第一个被赋值的字串,它的地址必定为7662和
7663,只要按高低位的方法用POKE改了它的记录地址,BASIC助手就会把修改的
地址当作X$的记录地址。这样,用X$就可以调用指定地址的字串,用LSET X$=" "
就可以修改那段地址的谌?/TD> 

网友改善1:

作者: 立天
更简单批量法 FOR PC1010 NC2000 NC2600
在程序中用到批量法的时候,是否感到这个变动的批量法地址有点麻烦呢?
虽然这个地址可以很方便的求出来,但在每次修改完程序都要到资源管理器
去看一下程序大小,最终还是麻烦。现在,我可以在程序中极快的把它算出
来:它等于PEEK(A)+PEEK(A+1)*256(A=47302或47304或47757)
现在,我们用47302这个地址做一个实验吧!
10 A$="":B$=""
20 A=47302:D=PEEK(A)+PEEK(A+1)*256
30 POKE D+2,100:POKE D+3,0:POKE D+4,64
40 POKE D+7,100:POKE D+8,192:POKE D+9,2
50 LSET B$=A$:PRINT
可以看到,我们已成功把地址16384--16483这一百个地址的内容发送到了
地址704--803.
是不是方便很多呢?
以上程序在PC1010 NC 2000 NC2600 上通过测试,估计同样适用于PC2000.

网友改善2:

作者:SHEN(YUE)
首先来说说在NC2000A上使用批量法与其他型号的区别:

要想使用批量法,首先得知道存放“变量存放的高、低位地址”的地址在哪。
这就是NC2000A的特殊之处了。
NC2000A存放“变量类型,变量名,变量长度与变量存放的高、低位地址”的地址并不是一个固定的地址,它是一个不固定的,动态的地址。它存放在GVBASIC程序执行时在内存中的存放地址之后。所以在执行不同的GVBASIC程序的时,存放“变量类型,变量名,变量长度与变量存放的高、低位地址”的地址一般不同。

下面我将教大家找出这个动态的地址:(如果看不懂,文章最后还有修改实例)

把下面的语句加入要使用批量法的程序中:

0 9979

这里写要使用批量法的程序,程序中改存放“变量长度与变量存放的高、低位地址”的POKE语句还不知道具体地址,先用一个任意五位数(如:00000)代替。

9979 FOR A=8192 TO 65535:IF PEEK(A) THEN B=0 ELSE B=B+1:IF B=3 THEN PRINT A-69,A+1:END

9989 NEXT

然后运行程序得到两个数字
这两个数字都是存放程序中第一个变量的第一个数据(变量类型)的地址(一会儿再说这两个数的区别),通过它,往后顺延就可以知道每个变量的每个数据(变量类型,变量名,变量长度与变量存放的高、低位地址)的存放位置了。

下面说这两个数的区别:
第一个数是程序还在调试,没有最后完成时使用的。在用这个数时不必把加入程序的,找地址的语句(就是0 9979 , 9979 FOR A=8192 TO 65535:IF PEEK(A) THEN B=0 ELSE B=B+1:IF B=3 THEN PRINT A-69,A+1:END , 9989 NEXT)删掉,把行号0的语句改为:0 GOTO 你程序的第一行,注意要用四位数写。(比如你程序的第一行行号为10,那么就改为0 GOTO 0010)然后就可以执行你的程序了(别忘了把刚才得到的地址改入程序,注意要用五位数写)。

第二个数是程序制作完毕时使用的,用这个数时需把找地址的语句(就是0 9979 , 9979 FOR A=8192 TO 65535:IF PEEK(A) THEN B=0 ELSE B=B+1:IF B=3 THEN PRINT A-69,A+1:END , 9989 NEXT)删掉,其他的跟第一个数一样,只是不用把行号0的语句改为“0 GOTO 你程序的第一行”了(因为已经删了)。

注意:
1.在找地址时你的程序必须和使用这个地址时的程序必须一样!因为这两个地址都是动态的。(有一些可以改:比如改数字,只要位数不变,就可以。)
2.我写的程序要原样照抄,还是“动态”的缘故。

下面举一个例子方便理解:

我举的这个例子是把A$的存放地址改到NC2000A的存放秒的位置上,也就是地址1017,并显示不断变化的A$。

第一步:写程序
10 A$="A":POKE 00000,249:POKE 00000,3
20 PRINT A$:GOTO 20

第二步:把找地址的语句加入程序,变成

0 9979
10 A$="A":POKE 00000,249:POKE 00000,3
20 PRINT A$:GOTO 20
9979 FOR A=8192 TO 65535:IF PEEK(A) THEN B=0 ELSE B=B+1:IF B=3 THEN PRINT A-69,A+1:END
9989 NEXT

第三步:执行程序

显示出两个数
8238
8308

第四步:修改程序,这是我们使用第二个数,不删把找地址的语句。
通过知道存放程序中第一个变量的第一个数据(变量类型)的地址8308,就可以知道8309是变量名,8310是变量长,8311和8312就是我们要改的存放“变量存放的高、低位地址”的这个地址,把这两个地址代入程序,注意如果不够五位要在前面加“0”补位。然后把行号0的语句改为:0 GOTO 你程序的第一行(也就是行号为10的那行),并用“0”补齐4位。
把程序改为:
0 GOTO 0010
10 A$="A":POKE 08311,249:POKE 08312,3
20 PRINT A$:GOTO 20
9979 FOR A=8192 TO 65535:IF PEEK(A) THEN B=0 ELSE B=B+1:IF B=3 THEN PRINT A-69,A+1:END
9989 NEXT

第五步:试运行程序
发现程序按我所想象的那样显示不断变化的A$。

在程序全部完成并试运行正确的情况下,执行第六步

第六步:修改程序,把找地址的语句删除,并通过第一个数算出存放程序中存放“变量存放的高、低位地址”的这个两地址(8241和8242),并代入程序。
10 A$="A":POKE 08241,249:POKE 08242,3
20 PRINT A$:GOTO 20

这样程序就完成了,执行效果和第五步试运行时一样。
完成后,就不要做什么改动了,如果要改,那么就得从第一步开始算出新的地址。

最后献上用这个方法制作的NC2000A的速度检测程序,数越大,越快。
0 GRAPH:A$="A":POKE 8289,249:POKE 8290,3
1 B$=CHR$(PEEK(1017)):FOR A=0 TO 999:IF A$<>B$ GOTO 3
2 NEXT
3 LOCATE 1,1:PRINT A:GOTO 1
我的NC2000A是832,记得我以前的NC1020是772




批量法再提速--作者: 116205035

此法用于2000 ,2600 可能有用

结合批量法的使用:
POKE 34731,9

这样改了后呢,就可以用 BOX XX,YY,XX1,YY1,1,0

帖图了!

152,153 是图片数据的地址。

比批量法快 N 多。

一秒大概 10 多张图吧。

(我玩星星较晚,若先前有人发现过这样的做法,请谅解)

比如你有一张 16*16 的图片,它有 32 字节的数据对吧。

要你将它在屏幕上显示,怎么做呢?一般的话BAS 做这样的工作是很慢的。一张 16*16 的图也要 1 秒。

只需这样做: POKE 34731,9

这是第一步。

2。将图片数据 POKE 到内存。该地址为 :XX+YY*265

3。 POKE 152,XX:POKE 153:YY

4。 调用画矩形的函数:BOX XX,YY,XX+15,YY+15,1,0

如此即可将该 16*16 的图片显示到 以 (XX,YY) 为左上角的矩形上。

速度比一般的快的多啦!

附:结合批量法后即可方便地进行帖图了,可大大提高BAS 程序的画面质量,特别是游戏!

如需再画矩形则 POKE 34731,10。

分享到:
评论

相关推荐

    五点法作图

    五点法作图,输入五个点,然后在数轴中连成线

    gdi+批量作图

    在批量作图的场景下,GDI+可以被高效地利用来绘制大量图片或者进行复杂的图形操作。以下是对GDI+批量作图的知识点详解: 1. **GDI+基础**:GDI+的核心类是`Graphics`,它代表了一个绘图表面,可以用于绘制线条、...

    透镜成像作图法

    透镜成像作图法是中学物理教学中的一个重要知识点,主要应用于光学部分的学习。通过本篇文章,我们将深入了解透镜成像的基本原理、作图方法及其应用。 ### 一、透镜的基本概念 #### 1.1 透镜的定义 透镜是由两个...

    作图法在大学物理实验数据处理中的应用与研究.pdf

    在传统的数据处理方法中,作图法往往与列表法结合使用,列表法通过计算将数据点以表格形式展示,而作图法则通过直观的方式,如点、线、曲线等图形来分析数据变化趋势和关系。 作图法在物理实验中的应用首先需要掌握...

    提高机械CAD作图速度之初探.pdf

    在探讨如何提高机械CAD作图速度的方法时,我们可以从多个方面来考虑。首先,我们需要对CAD软件中各种命令有深入的了解。这包括熟悉绘图命令、修改命令以及其它常用命令,并掌握它们的使用技巧。以下是一些具体的知识...

    (完整版)理想光学系统作图法练习题答案.pdf

    (完整版)理想光学系统作图法练习题答案.pdf

    作图法处理实验数据.doc

    作图法是实验数据分析中常用的一种方法,尤其在物理学中,它可以直观地揭示物理量之间的关系,例如在伏安法测电阻的实验中,通过绘制电压(U)与电流(I)的关系图,可以确定电阻的值。以下是利用作图法处理实验数据...

    QTL定位的多区间作图法值得推广

    QTL定位的多区间作图法值得推广,李广军,李河南,数量性状基因座(quantitative trait loci: QTL)定位已成为研究数量性状基因的常规方法。然而,选择何种QTL定位方法却成为应用工作者的难题。

    小学五年级奥数训练——作图法解题PPT教案.pptx

    小学五年级的学生正处于思维能力快速发展的阶段,此时引入作图法解题策略,不仅能够帮助他们直观理解数学问题,而且能够培养他们解决复杂问题的能力。这份针对小学五年级学生的PPT教案,旨在通过作图法教授解决数学...

    三角函数的图象与性质要点梳理五点法作图原理PPT课件.pptx

    三角函数的图象与性质要点梳理五点法作图原理PPT课件.pptx

    复摆法测重力加速度

    3. **掌握作图法**:学会通过绘制图表来分析数据并确定重力加速度的具体数值。 #### 实验原理 复摆是一种特殊的摆动系统,它由一个刚体组成,这个刚体可以围绕一个固定的水平轴自由摆动。复摆的主要特征是其周期...

    PPT作图大全,最全的PPT作图素材

    PPT作图大全,最全的PPT作图素材,需要的童鞋速度了!!

    中学物理作图工具

    在这样的大背景下,一款专注于中学物理教学和学习的工具——《中学物理作图工具》应运而生。这款软件的出现,不仅为广大物理教师和学生提供了一个极为方便的教学和学习平台,更是对提高物理教学效果和学习效率的一大...

    Matlab用于几何作图

    MATLAB是一种强大的数值计算和数据可视化软件,尤其在数学建模和数学实验中,它的作图功能被广泛应用。MATLAB的绘图主要是基于点的坐标,通过连接这些点来形成曲线或曲面,使得复杂的数学模型得以直观地展现。 在三...

    用C/C++编的海龟作图

    海龟作图,程序虽短,但功能齐全!! 设置海龟类型的基本操作为:procedure StartTurtleGraphlcs ;{显示作图窗口,并在窗口内写出本人的姓名、上机号和实验题号。}procedure StartTurtle;{令海龟处于作图的初始...

    Word版物理作图程序 V3.0

    例如,力的平衡图、速度与时间图、加速度与时间图、电流与电压关系图等,都是物理学中的基础图像。《Word版物理作图程序 V3.0》则提供了这些常见图的快速绘制选项,用户只需输入相关数据,程序就能自动生成对应的...

    尺规作图的教学分析.doc

    1. **重视程度不足**:尽管五种基本尺规作图法相对简单,但由于在考试中所占比例较小,师生往往不够重视。这导致学生在实际操作中熟练度不高,无法将理论知识与实践操作有效结合。 2. **加强练习的必要性**:为了...

Global site tag (gtag.js) - Google Analytics