HP 50g图形计算器之RPL编程

2019-03-06 12:25:20 3点赞 3收藏 2评论

要学系统RPL编程首先要学会用户RPL编程。要学会用户RPL首先要学会RPL方式使用计算器。
下面讲的计算器操作都是在RPL模式下进行。
系统RPL比用户RPL的好处是可以使用更多的内部功能,用更高的精度计算,而且会更快。
下面先来编一个系统RPL的程序。

::
CK1NOLASTWD
CK&DISPATCH1
BINT1 ::
%2 %^
%PI
%*
;
;

HP 50g图形计算器之RPL编程

大家看到系统RPL程序就是这样。但是把这个程序输入计算器。然后输入ASM进行编译。什么也不会发生。
首先要装

上ASM工具库。
输入
256
输入
ATTACH按ENTER键。
然后点APPS这个键。会发现菜单里面多了一个选择Development lib。就表示用来编译程序的工具装好了。
现在输入程序。然后输入ASM就可以进行编译了吗?不行。还差很多步骤没有完成。
还要装一个extable。这个库的作用是把程序里面的字母代表的功能翻译成对应程序在计算器中的地址。让计算器可以跳转到那个地址运行那个程序。
下载地址在这里
https://www.hpcalc.org/details/3245
解压之后把其中的extable.HP这个文件拷到计算器的2:flash。
然后输入
258
输入
ATTACH
按ENTER键
然后点桔色右弯箭头键,点LIB键。会发现菜单里面有extab项。就表示安装成功。
下一个步骤。就是在程序的最后加一行输入@这个字符。而且要保证@后面什么也没有。空行,空格都不能有。@必须做为程序的结尾。ASM才对它进行编译。
否则就认为它不是一个合法的程序。
下一个步骤。就是把flag92选成SysRPL模式。
点MODE键。菜单里面点选FLAGS项。通过方向键,选到92项。点F3键。选到SysRPL mode。
然后备份好计算器上所有的数据到SD卡上。因为程序出错导致清掉所有的内容的事情很容易发生。
然后点击双引号把上面的程序输入。最后加一个@。双引号不算程序中的字符。@后面有一个引号是可以的。然后起一个名字保存好。
然后按VAR。点这个名字。把输入的程序调出来。检查一下有没有错误。
然后输入ASM。然后按ENTER键。对它进行编译。然后代码会出来。如果程序有错误。会出来错误提示。
如果编译成功。大概会是下面的内容
External External
¤ 1h 2. External
3.14159265359
External
然后按单引号键,起一个名字保存起来。然后按VAR键。可以看到这个程序。这是一个算圆面积的程序。
输入一个数字做为半径,然后点这个名字。就会得出面积。
下面解释程序的含义。
双冒号::和分号;用来包括程序。成对出现。双冒号和分号中间的双冒号和分号表示一个程序中的子程序。
这个例子中包括了一个子程序。
CK1NOLASTWD是一个命令,用来检查至少输入了一个参数。如果没有输入参数就运行程序。这个命令就会报错。
CK&DISPATCH1用来检查参数是否是实数。如果不是实数,比如是字符串,或者代数表达式。就会报错。
BINT1表示如果输入的是实数的状况。它后来是一个双冒号,就表示。如果是实数就执行这个双冒号中的子程序内容。
子程序第一行 %2 相当于输入一个实数2。%表示实数,2表示数值。空格之后是%^是实数乘方运算。把用户输入的参数,和前面的实数%2进行这个运算。就得出参数的2次方。第二行%PI,输入一个实数的圆周率派。第三行%*是实数的乘法运算功能。把前面得出来参数的2次方和圆周率%PI相乘。得出最后结果。后面的分号;表示子程序结束。第二个分号表示整个程序结束。最后的@用来告诉编译器这是一个合法的程序文件。

总的来讲。SysRPL程序就是调用计算器中的各种内部命令来处理各种对象(object)来完成各种功能。
计算器中的有很多的命令和数据。存在内存中的不同位置。
比如一个高精度的圆周率π。存在2FADB这种地址。这是一个5位的十六进制数。
在计算器中输入
# 2FADBh
输入
SYSEVAL
按ENTER键(以后不再讲按ENTER键,输入后就要按,自己根据情况脑补)
就会出来一个高精度15位的圆周率值。
这个值的名字是%%PI。在昨天的程序里面用到一个%PI只有12位。
%PI的地址是2FAC6。如果不知道名字。用PTR 2FAC6也可以起到同样的作用。
地址前面加PTR和一个空格。就可以。修改昨天的程序用PTR 2FAC6取代%PI。再用ASM编译保存。得到的程序代码是一样的。
命令和常数都有地址。如果知道它们存在计算器内存中的地址,都可以用这种方式来调用。我们在程序中可以用命令和常数的名字来调用它们。是因为装了extable这个库。它可以把名字自动转成地址。编程序的时候使用名字可以让程序便于阅读。
HP计算器把要处理的东西分成各种不对的对象(object)。针对不同的对象有不同的命令来处理它们。
对象大概有以下几种
1: 二进制整数(BINTS)
输入的整数和#开头的十六进制数都可以当做二进制数处理
2: 实数(Real Numbers)
带有小数点的数可以当成实数
3: 复数(Complex Numbers)
复数形式的数
4: 整数(Integers(ZINTS))
整数
5: 字符和字符串(Characters and Strings)
双引号中的字符比如程序可以当做字符和字符串来处理
6: 十六进制字符串(Hex Strings)
以#开头结尾有h的十六进制数
7: 标识符(Identifiers)
用单引号输入的变量名
8: 标签对象(Tagged Object)
用TAG命令加上标签的对象
9: 数列(Arrays)
用方括号输入的数列和矩阵
10: 组合对象(Composite Objects)
用大括号(花括号)包括起来里面可以有整数,程序,矩阵等各种东西的组合
11: 元对象(Meta Objects)
和组合对象一样包含多个不同的对象,和一个对象数量的二进制数
12: 单位对象(Unit Objects)
数值的单位比如重力加速度9.8_m/s^2。包含有单位m/s^2米每秒平方这个数据就是单位对象。
13: 符号(Symbolics)
输入的各种代数表达式都是符号
14: 图像对象(Graphics Objects(Grobs))
保存的图象。函数图像,画的各种图像。
15: 库和备份对象(Library and Backup Objects)
安装的库和备份的数据。

针对不同的对象,都有不同的命令去处理、计算它们。SysRPL很大的篇幅都是
列出各种处理各种不同对象命令在内存中的地址,它们的名字,功能。大家可以去看英文版中的相应章节仔细研究一下。
Programming in System RPL英文版下载地址

https://www.hpcalc.org/details/5142

比如介绍二进制数的第2章1.1节内容如下

2.1.1 Built-in Binary Integers
Addr. Name Description
33107 BINT0 0d 0h
aka: ZERO, any
33111 BINT1 1d 1h
aka: ONE, real, MEMERR
3311B BINT2 2d 2h
aka: TWO, cmp
33125 BINT3 3d 3h
aka: THREE, str
3312F BINT4 4d 4h
aka: FOUR, arry
33139 BINT5 5d 5h
aka: FIVE, list
33143 BINT6 6d 6h
aka: SIX, id, idnt
3314D BINT7 7d 7h
aka: SEVEN, lam
33157 BINT8 8d 8h
aka: EIGHT, seco
33161 BINT9 9d 9h
aka: NINE, symb
3316B BINT10 10d Ah
aka: TEN, sym
这里列出了计算器中内建的二进制对象。
以这一行为例子:
33107 BINT0 0d 0h
33107是内存中的地址。BINT0是程序中调用它名字。0d 0h是对它的描述。0d表示一个十进制的0,0h表示它也同时是一个十六进制的0。
aka:后面是ZERO查字典ZERO是零的意思。表示它就是0,any表示可以做任意用途。
整个意思就是在这个地址中保存了一个0,可以在程序中用这个地址或者它的名字调用它。可以用它做为十进制的0参与计算,也可以做为十六进制的0参与计算。

再看英文版的第2章1.4节

2.1.4 Arithmetic Functions
Addr. Name Description
03DBC #+ ( # #' ! #+#' )
03DEF #1+ ( # ! #+1 )
03E2D #2+ ( # ! #+2 )
355FD #3+ ( # ! #+3 )
35602 #4+ ( # ! #+4 )
35607 #5+ ( # ! #+5 )
3560C #6+ ( # ! #+6 )
35611 #7+ ( # ! #+7 )
35616 #8+ ( # ! #+8 )
3561B #9+ ( # ! #+9 )
35620 #10+ ( # ! #+10 )
3562A #12+ ( # ! #+12 )
03DE0 #- ( # #' ! #-#' )

这里列出的是一些二进制数字的四则运算命令。
以第一排:
03DBC #+ ( # #' ! #+#' )为例子
03DBC是这个命令在内存中的地址。#+表示它的名字,程序可以用这个名字调用它。
( # #' ! #+#' )表示的它的工作方式。#表示一个二进制数,#'表示另一个二进制数。
!其实在英文版里面看是一个右箭头copy过来变成了!。右箭头表示经过命令处理之后。
处理之后是#+#'表示得出两个二进制相加之后的和。
总的来讲这个命令的功能就是先要输入两个不同的二进制数。然后使用这个命令。它会令这两个输入的二进数消失。而产生一个它们的和。
就和我们用RPN模式计算,先输入两个数,再按+。两个数没了。出来一个相加后的结果。
在程序中要使用它就是先放两个二进制数
程序使用例子
::
BINT0
BINT1
#+
;
这个程序先放一个二进制数BINT0,再放一个二进制数BINT1,再用它的名字#+调用它。
最后就会输出一个1。
关于这些说明中的各种符号。
前面第1章第2节有一个表。

1.2 About the Entries Listing

Abbreviation Meaning

ob
any object

1...n
n objects

#
binary integer (BINT)

HXS
hex string (User binary integer)

CHR
character

$
character string

T
TRUE

F
FALSE

flag
TRUE or FALSE

%
real number

%%
extended real number

%C
complex number

%%C
extended complex number

z, Z, ZINT infinite precision integer

N
positive infinite precision integers,

symb
symbolic

u, unit
unit object

{}
listA,

[]
arrayV,

[]
vectorM,

[[]]
matrix

P
polynom,

a list of Qs

Q
ZINT or Pmeta, ob1..obn

#n
meta objectgr

ob
graphical object menumenu:

a program or a list
大家自己翻译一下。Abbreviation下面是一系列的符号简写。Meaning是它们的含义。自己翻译一下就可以。

后面讲一些程序中基本和重要的命令使用。

展开 收起

猎寻 手机信息采集系统1.0 -ZK5000(手机快速点验/手机检查仪)

猎寻 手机信息采集系统1.0 -ZK5000(手机快速点验/手机检查仪)

38800元起

Microsoft 微软 赠送3个月到手15月office365家庭版microsoft365

Microsoft 微软 赠送3个月到手15月office365家庭版microsoft365

289元起

卡巴斯基(kaspersky)网络解决方案中小企业版杀毒软件1服务器10台PC三年升级

卡巴斯基(kaspersky)网络解决方案中小企业版杀毒软件1服务器10台PC三年升级

3990元起

华三(H3C) SecPath F100-BAS AV 防病毒 License,3年

华三(H3C) SecPath F100-BAS AV 防病毒 License,3年

6904元起

华三(H3C) SecPath F100-BAS URL特征库升级服务授权函,3年

华三(H3C) SecPath F100-BAS URL特征库升级服务授权函,3年

2701元起

Microsoft 微软 OfficePLUS 订阅会员

Microsoft 微软 OfficePLUS 订阅会员

9.9元起

微软Office 365 15个月家庭版 职场利器 智能功能 电脑必备1年6人同享

微软Office 365 15个月家庭版 职场利器 智能功能 电脑必备1年6人同享

628元起

微软(Microsoft)365/Office 个人版 文档自动保存 各设备通用 1年盒装 5设备同享

微软(Microsoft)365/Office 个人版 文档自动保存 各设备通用 1年盒装 5设备同享

259元起

360企业级终端防病毒系统(涉密计算机平台)单机版

360企业级终端防病毒系统(涉密计算机平台)单机版

暂无报价

苍穹 边缘缓存节点管理系统

苍穹 边缘缓存节点管理系统

43800元起

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

269元起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

258元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

106元起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

328元起

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

299元起

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

106元起
2评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章

xmz2019

液晶和e-ink显示屏电子设备爱好者

关注 打赏
作者其他文章
最新文章 热门文章
3
扫一下,分享更方便,购买更轻松