# AufScript **Repository Path**: apiglio/AufScript ## Basic Information - **Project Name**: AufScript - **Description**: 一个汇编风格的代码玩具 - **Primary Language**: Pascal - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-16 - **Last Updated**: 2026-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AufScript just a toy, but interesting. + TAuf can be said as a command-line class in "AufScript" + it contains some "asm-like function" for basic calculation and process control + use TAufScript.add_func( name, func_ptr, args_str, tip_str) to add similar function







# built-in function:
**set** option,value 代码窗运行设置
**version** 显示解释器版本号
**help** 显示帮助
**deflist** 显示定义列表
**ramex** -option/arv,filename 将内存导出到ram.var
**ramim** filename [,var [,-f]] 从文件中载入数据到内存
**sleep** n 等待n毫秒
**pause** 暂停
**beep** freq,dura 以freq的频率蜂鸣dura毫秒
**cmd** command 调用命令提示行
**hex** var 输出标准变量形式的十六进制
**hexln** var 输出标准变量形式的十六进制并换行
**print** var 输出变量var
**println** var 输出变量var并换行
**echo** expr 解析表达式
**echoln** expr 解析表达式并换行
**cwln** 换行
**clear** 清屏
**of** [filename] 改为输出到文件
**os** 改为输出到屏幕,同时保存已经输出到文件的内容
**mov** v1,v2 将v2值赋值给v1
**add** v1,v2 将v1和v2的值相加并返回给v1
**sub** v1,v2 将v1和v2的值相减并返回给v1
**mul** v1,v2 将v1和v2的值相乘并返回给v1
**div** v1,v2 将v1和v2的值相除并返回给v1
**mod** v1,v2 将v1和v2的值求余并返回给v1
**rand** v1,v2 将不大于v2的随机整数返回给v1
**swap** v1 将v1字节倒序
**fill** var,byte 用byte填充var
**loop** :label/ofs,times[,st] 简易循环times次
**jmp** :label/ofs 跳转到相对地址
**call** :lable/ofs 跳转到相对地址,并将当前地址压栈
**ret** 从栈中取出一个地址,并跳转至该地址
**load** filename 加载运行指定脚本文件
**fend** 从加载的脚本文件中跳出
**halt** 无条件结束
**end** 有条件结束,根据运行状态转译为ret, fend或halt
**define** name,expr 定义一个以@开头的局部宏定义
**rendef** old,new 修改一个局部宏定义的名称
**deldef** name 删除一个局部宏定义的名称
**ifdef** name 如果有定义则跳转
**ifndef** name 如果没有定义则跳转
**var** type,name,size 创建一个ARV变量
**unvar** name 释放一个ARV变量
**cje** v1,v2,:label/ofs 如果v1等于v2则跳转
**ncje** v1,v2,:label/ofs 如果v1不等于v2则跳转
**cjm** v1,v2,:label/ofs 如果v1大于v2则跳转
**ncjm** v1,v2,:label/ofs 如果v1不大于v2则跳转
**cjl** v1,v2,:label/ofs 如果v1小于v2则跳转
**ncjl** v1,v2,:label/ofs 如果v1不小于v2则跳转
**cjec** v1,v2,:label/ofs 如果v1等于v2则跳转,并将当前地址压栈
**ncjec** v1,v2,:label/ofs 如果v1不等于v2则跳转,并将当前地址压栈
**cjmc** v1,v2,:label/ofs 如果v1大于v2则跳转,并将当前地址压栈
**ncjmc** v1,v2,:label/ofs 如果v1不大于v2则跳转,并将当前地址压栈
**cjlc** v1,v2,:label/ofs 如果v1小于v2则跳转,并将当前地址压栈
**ncjlc** v1,v2,:label/ofs 如果v1不小于v2则跳转,并将当前地址压栈
**cjs** s1,s2,:label/ofs 如果s1相等s2则跳转
**ncjs** s1,s2,:label/ofs 如果s1不相等s2则跳转
**cjsc** s1,s2,:label/ofs 如果s1相等s2则跳转,并将当前地址压栈
**ncjsc** s1,s2,:label/ofs 如果s1不相等s2则跳转,并将当前地址压栈
**cjsub** sub,str,:label/ofs 如果str包含sub则跳转
**ncjsub** sub,str,:label/ofs 如果str不包含sub则跳转
**cjsubc** sub,str,:label/ofs 如果str包含sub则跳转,并将当前地址压栈
**ncjsubc** sub,str,:label/ofs 如果str不包含sub则跳转,并将当前地址压栈
**cjsreg** reg,str,:label/ofs 如果str符合reg则跳转
**ncjsreg** reg,str,:label/ofs 如果str不符合reg则跳转
**cjsregc** reg,str,:label/ofs 如果str符合reg则跳转,并将当前地址压栈
**ncjsregc** reg,str,:label/ofs 如果str不符合reg则跳转,并将当前地址压栈
**str** #[],var 将var转化成字符串存入#[]
**val** $[],str 将str转化成数值存入$[]
**srp** #[],old,new 将#[]中的old替换成new
**gettimestr** var 显示当前时间字符串或存入字符变量var中
**getdatestr** var 显示当前日期字符串或存入字符变量var中
**settimer** 初始化计时器
**gettimer** var 获取计时器度数
**waittimer** var 等待计时器达到var
**readf** var,filename 读取文件并保存至var
**writef** var,filename 将var保存至文件
**getbytes** var,idx,len 截取变量var中从idx起的len个字节到@prev_res
**setbytes** var,idx,src 将变量src保存到变量var的第idx个字节,超出部分不保存
**cmp** v1,v2,out 比较
**shl** var,bit 左移
**shr** var,bit 右移
**not** var 位非
**and** v1,v2 位与
**or** v1,v2 位或
**xor** v1,v2 异或
**ofs** v1,v2,threshold,out 差值位计数
**h_add** #[],#[] 高精加
**h_sub** #[],#[] 高精减
**h_mul** #[],#[] 高精乘
**h_divreal** #[],#[] 高精实数除