易码技术论坛

 找回密码
 加入易码
搜索
查看: 329759|回复: 4

再讲批量法[原创]

[复制链接]
发表于 2006-8-19 17:29:30 | 显示全部楼层
支持一下!(你的签名打错了,应该用[]括号
发表于 2006-9-1 19:41:41 | 显示全部楼层
一点拙见~
应该改为:
20 PEEK(I-2)=64 AND PEEK(I-1)=65 AND PEEK(I)=1 THEN 40
发表于 2006-9-13 14:16:22 | 显示全部楼层
有点头晕。。
发表于 2006-9-15 14:29:01 | 显示全部楼层
引用第1楼Strongme2006-08-19 17:29发表的“”:
支持一下!(你的签名打错了,应该用[]括号
PEEK(I-2)=64 AND PEEK(I-1)=65 AND PEEK(I)=1 THEN 40
是指这些 ()吗?
BASIC和LAVA C不同
 楼主| 发表于 2006-8-19 17:10:16 | 显示全部楼层 |阅读模式
  批量法~星星上的应该很强的东西~很多人会用~在用~学着用~想用~就是不会用~==用法都有~
我来把其中的一个知识点讲讲~
怎么批量?
1.概念大家都了解差不多了
~就是通过修改储存在内存中的变量地址来达到批量替换变量内容的方法~
2.GVBasic是怎么记录你定义或给一个变量赋值的
~在内存中有一个连续的5字节区域~(重点啊~听好了~)分别记录的是:
  01.变量类型
  02.变量名的ASCII码
  03.变量长度~中文2字节不用说了
  04.HI高位地址
  05.LO低位地址
这5个是连在一起的,这就为以后寻找它们提供了方便之处~程序到处有~我讲下原理~好让大家理解~
00 A$=“ ”                            //引号里要有个空格
10 FOR I= 8192 TO 65535        //8192是显存后面的地址~
20 PEEK(I-2)=64 AND PEEK(I-1)=65 AND PEEK(I)=1 THEN 30
                                       //PEEK(I-2)是上面的01.变量类型,字符串的值是64.
                                       //PEEK(I-1)是上面的02.变量名的ASCII码。“A”的ASCII码就是65.
                                       //PEEK(I)   是上面的03.变量长度。一个空格当然是1了~
30 NEXT I                            //循环
40 LO=I+1                          //得到低位地址LO
50 HI=I+2                          //得到高位地址HI
知道了原理~就好办了~想找什么就找什么了~不会因为各自的程序对变量的定义不同而混淆了~
顺便讲下~怎么改吧~就是批量啊~怎么批呢?接着看
上面的程序你已经找到了A$的高低位地址~LO/HI
那它们是干吗的呢~它们用来存数据所在处的地址:DZ
DZ=HI*256+LO。举个例子:文字缓存开始地址704它是怎么换成LO和HI的呢
                                    HI=INT(704/256)
                                    LO=DZ-(HI*256)
                                    算算它们是多少~HI=2.LO=192
知道了没?
如果你想换文字缓存的内容~替换成A$里的东西~
那你 就改 03.变量长度 和 04.HI高位地址还有 05.LO低位地址
改成100和2还有192~即LE=100:HI=2:LO=192  //因为文字缓存有100字节大字情况下
怎么改呢~
用POKE撒。POKE LE,100:POKE HI,2:POKE LO,192
再缓冲区赋值~LSET A$=“要显示的内容”
PRINT一下~就出来了~
我上面没写出完整的持程序来~理解后自己写就不难了~
讲完收工!
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 20:52 , Processed in 0.008410 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表