极语言1-6, 文本、数组、指针和特殊指令

        文本是一段文字数据,数组是按数据类型连续排列的数据,指针是指向内存中某个地址位置的数值。
        它们都是用一个整数值来表示所在位置,操作是比较近似的。都可以用指针的语法进行操作
        文本相当于一维的字节数组,数组可以用来存放更多数据,跟申请内存一样都可以作为缓冲区
        二维数组跟一维数组用法类似,只是多了一组括号,数组都有动态和静态两种申请方法
        固定数组申请时括号里指定固定的数值,如:整数 数一(10);小数 数三(15,3);
        使用方法: 数一(3)=66; 数二=数一(5) 数三(3,0)=88.4567; 数值=数三(2,1)
        动态数组是在申请时候括号里写空: 整数 数二(); 然后在代码段使用重置:
        重置 数二(886679) 重置 数二(66,55);文本变量的数组其实就是二维的
        例如: 文本 内容(64,10);注意文本变量和固定数组的长度必须是数值
        不能是变量,例如这样就是是错的: 文本 内容; 文本 文字(数三)
指针操作相关符号:

符号作用用法示例
@取内存地址@变量名或程序段名
~取内存处的数据~变量:取指针变量地址的整数值;~变量%取两字节数值
[]取内存处的数据值=变量[8];获取变量地址后第8字节处的字节值
[]%取内存处的数据值=变量[8]%;获取变量地址后第8字节处的正数值
[]&取内存处的数据值=变量[8]&;获取变量地址后第8字节处的整数值
`取已知内存使用~或中括号后取1字节值:值=`;指针后移1字节
`%取已知内存使用~或中括号后取2字节值:值=`%;指针后移2字节
`&取已知内存使用~或中括号后取4字节值:值=`&;指针后移4字节
()读写指定内存数据b=a(3);a(b*6+c/100)=66+d*78;非数组读写一字节
()%读写指定内存数据数=组%;组(b*6)%=值;非数组读写两字节
()&读写指定内存数据数=组(2)%;组&=值;非数组读写四字节
%读写指定内存数据数=组%;组%=值;非数组读写两字节,(0)%偏移为零时可省略(0)
&读写指定内存数据数=组&;组&=值;非数组读写四字节,(0)&偏移为零时可省略(0)
()$读写指定内存地址数组指针获取地址指针:地址=$460
()!读写指定内存数据数组指针读取或写入单精度值:数=组(2)!;组(6)!=值;
()#读写指定内存数据数组指针读取或写入双精度值:数=组(2)#;组(6)#=值;
#取已知内存使用小括号或列举后取值(整数或小数):#4
#@取已知内存使用小括号或列举后取地址(文本):#@8
#()取已知内存使用小括号或列举后取值(字节):#(12)
#[]取已知内存使用小括号或列举后取值(正数):#[12]
##取已知内存使用小括号或列举后取值(浮点):##16
_[]读写已知内存使用中括号后读取或写入字节值:_(2)=60
_[]%读写已知内存使用中括号后读取或写入2字节值:_(4)%=60
_[]&读写已知内存使用中括号后读取或写入整数值:_(2)&=60;n=_[4]&
_[]$读写已知内存地址使用中括号后获取地址指针:地址=_[460]$
_[]!读写已知内存使用中括号后读取或写入单精度值:_(4)!=60
_[]#读写已知内存使用中括号后读取或写入双精度值:_(8)#=60
.()读写已知内存使用小括号或列举后读取或写入字节值:.(2)=60
.%读写已知内存使用小括号或列举后读取或写入2字节值:.%4=60
.&读写已知内存使用小括号或列举后读取或写入整数值:.&2=60;n=.&4
.$读写已知内存地址使用小括号或列举后获取地址指针:地址=.$460
.!读写已知内存使用小括号或列举后读取或写入单精度值:.!4=60
.#读写已知内存使用小括号或列举后读取或写入双精度值:.#6=60
.+增加已知内存数据表使用列举时内存增加指定长度:.+10
.++增加已知内存数据表使用列举时内存增加到下一行
<读指定内存数值a < b;从b地址处取数据到a,a是字节取一字节,整形取两字节,局部变量固定4字节
>写指定内存值a>b+8;向b+8地址处写入a的数值,a是字节写一字节,整形写两字节,局部变量固定4字节

        已知内存是指使用指针操作后,无需再使用变量表达式去定位指针。
        以刚才指针位置进行偏移,比如读写指针后面6字节位置内存,只用指定偏移值6即可。
        可以使用API函数进行读写,程序还提供一些便捷的指针操作。 如 整数 s="sdkfskd";
s(0)=\b;就把文本的第一个字符替换成字符b;
        非定义的数组,通常是读写是按一字节
如 整数 m是一个内存地址
m(13)=128;就是把128这个数字写入第14个字节处
a=m(10);是从第11字节处读取1字节。
在括号后面加%就可以读写两字节,加&读写四字节。
如m(13)%=32128;a=m(2)%;
m(13)&=$AF32C128;如果(m(2)&=889654){};
也可以把变量对内存地址进行读写
变量只能是字节 整形 整数 小数等4字节以内的数字类型
如 文本 a="$32A4B8C6428B";字节 b;正数 i;
b b>a+2;就把a的第三位置0xB8,换成了50
i 读写数据的长度是按定义的变量类型长度,只有1、2、4字节这三种。
示例代码:
文本 内容[64]="0123456789ABCDEF中华人民共和国";
整数 数值=内容
//数值得到数据缓冲区的内存地址
数值=内容(0)
//从数据缓冲区读取第一字节数值,0这个字
数值=内容%
//从数据缓冲区读取两字节数据到数值变量,01这两个字
数值=内容&
//从缓冲区读取四字节数据,0123这四个字,(0)可以不写
数值=内容(2)
//从缓冲区的2字节后读取一字节数据,2这个字
数值=内容(2)%
//从缓冲区的2字节后读取两字节数据,23这两个字
数值=内容(2)&
//从缓冲区的2字节后读取四字节数据,2345这四个字
内容% =数值
//向缓冲区写入两字节数值,01被修改
内容& =数值
//向缓冲区写入四字节数值,0123被修改
内容(2)% =数值
//向缓冲区的2字节后写入两字节数值,23被修改
内容(2)& =数值
//向缓冲区的2字节后写入四字节数值,2345被修改
数值=#4
//#4是指针之后偏移4字节,就是读取4567这四个字
数值=#(4)
//#(4)是指针之后偏移4字节,小括号就是读取4这一个字
数值=#[4]
//#[4]是指针之后偏移4字节,中括号就是读取45这两个字
数值=#@4
//#@4是指针之后偏移4字节,就是4这个字的位置(取文本)
数值=##4
//#4是指针之后偏移4字节,就是读取456789AB这8个字(取浮点数)
.#6=数值
//#6是指针之后偏移6字节的浮点数,就是6789ABCD这八个字
.(6)=数值
//6是指针之后偏移6字节,读写操作6这个字
.%6=数值
//6是指针之后偏移6字节,读写操作67这两个字
.&6=数值
//6是指针之后偏移6字节,读写操作6789这四个字
.!6=数值
//6是指针之后偏移6字节,读写操作6789这四个字的小数值
//==============以上是小括号的指针用法=============
//记住的指针位置是变量的缓冲区内最后读写操作的内存偏移位置
//还有中括号和~符号的指针操作,只记变量指针位置,不包括操作的偏移位置
//小括号可以读写操作整数、文本、数组、结构体和数据表等,中括号只能读整数和文本指针
示例代码:
文本 内容[64]="0123456789ABCDEF中华人民共和国";
整数 数值=~内容
//数值得到数据缓冲区的前四字节数据,0123
数值=内容[0]
//从数据缓冲区读取第一字节数值,0这个字
数值=内容[2]
//从缓冲区的2字节后读取一字节数据,2这个字
数值=内容[2]%
//从缓冲区的2字节后读取两字节数据,23这两个字
数值=内容[2]&
//从缓冲区的2字节后读取四字节数据,2345这四个字
数值=`[4]
//`[4]是内容缓冲区向后4字节,就是读取4这个字
数值=`[4]%
//内容缓冲区向后4字节,百分号就是读取45这两个字
数值=`[4]&
//内容缓冲区向后4字节,连接号就是读取4567这四个字
置入指令类似于汇编的DB/DW等,是在代码段插入指令数据,支持下面几种格式

英文语法中文语法简单用法
byte字节置入[字节 15,20,40];多个用逗号隔开
dword整数置入[整数 66,$204068AA];
word整形置入[整形 $2040,88];
single小数置入[小数 3.14];
string文本置入[文本 "你好"];不带引号时是插入指定长度的0,置入[文本 50];
address地址置入[地址 窗体];地址是指变量的地址
local局部置入[局部 参数];局部是指局部变量
call调用置入[调用 加法];调用是指小程序
function函数置入[函数 信息框];函数是指向外部API函数
@指针置入[@ 加法];指针是取变量或小程序的偏移地址

跳转是一系列特殊指令,且记不要和跳到搞混,指令功能如下(判断语句也可以使用#符号)

用法作用解释
跳转 = 标记相等则转移到标记
跳转 != 标记不相等则转移到标记
跳转 <> 标记不相等则转移到标记
跳转 > 标记大于则转移到标记(比较无符号数)
跳转 < 标记小于则转移到标记(比较无符号数)
跳转 <= 标记小于或等于则转移到标记(比较带符号数)
跳转 =< 标记小于或等于则转移到标记(比较带符号数)
跳转 >= 标记大于或等于则转移到标记(比较无符号数)
跳转 => 标记大于或等于则转移到标记(比较无符号数)
跳转 #0 标记若溢出则转移到标记
跳转 #1 标记不溢出则转移到标记
跳转 #2 标记小于则转移到标记(比较无符号数)
跳转 #3 标记大于或等于/进位为零则转移到标记(比较无符号数)
跳转 #4 标记相等则转移到标记
跳转 #5 标记不相等则转移到标记
跳转 #6 标记小于或等于则转移到标记(比较无符号数)
跳转 #7 标记大于则转移到标记(比较无符号数)
跳转 #8 标记结果为负则转移到标记
跳转 #9 标记结果为正则转移到标记
跳转 #A 标记奇偶位为偶则转移到标记
跳转 #B 标记奇偶位为奇则转移到标记
跳转 #C 标记小于则转移(比较带符号数)
跳转 #D 标记大于或等于则转移(比较带符号数)
跳转 #E 标记小于或等于(比较带符号数)
跳转 #F 标记大于则转移(比较带符号数)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值