TimeCOS_STK_UTK指令参考手册_第1页
TimeCOS_STK_UTK指令参考手册_第2页
TimeCOS_STK_UTK指令参考手册_第3页
TimeCOS_STK_UTK指令参考手册_第4页
TimeCOS_STK_UTK指令参考手册_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 TimeCOS_STK/UTK 指令参考手册V5.3.32007年6月 研发中心 - 测试与管理部保密级别Confidential第61页TimeCOS_STK/UTK指令参考手册(V5.3.3)握奇数据版本说明版本更新人更新日期更新说明V5.3.1郝建梅2004年5月新建V5.3.2郝建梅2004年9月1、 修改第一版本错误:在TimeCOS V5.3空间计算中,Key File文件体空间计算方法由“单条密钥占用实际空间之和”改为“单条密钥占用实际空间之和 + 4”;2、 根据当前公司卡片情况,修改了手册适用范围;3、 将部分TimeCOS V5.2中无法用TimeCOS V5.3替代的老

2、指令添加到TimeCOS V5.3支持的指令列表中(这些指令在张东礼的TimeCOSV5.3 STK Client Development Guideline V1.02中也没有描述),这部分指令已经通知研发添加到测试任务中。(这些指令包括Ucs2toAsc、GetPinable、ModifyStkKey、ReadCounter)V5.3.3曹辉2007年6月 修正了部分指令的描述、说明; 删除了部分陈旧的指令。第一章 概述本手册对TimeCOS_STK/UTK 5.3版本支持的所有指令,以及5.3版本和5.2版本的指令差别进行了说明。目的是为STK/UTK应用的开发人员和测试人员提供指令参考

3、,使初学者通过学习本书能够迅速熟悉并掌握基于Time_COS_STK/UTK智能卡操作系统的卡片应用开发中的指令操作方法,提高工作效率。本手册版权归北京握奇数据系统有限公司所有。指令集简介TimeCOS V5.3支持的所有指令列表类别指令指令简要说明变量赋值SetVar对变量进行赋值。InVarToVar将参数变量中保存的变量名对应的内容存到参数变量中,即间接变量转化为直接变量。STKSetVarExt使用包括立即数和变量的源数据对变量进行混合赋值。SetVarExtend使用包括立即数和变量的源数据对变量进行混合赋值。用法和STKSetVarExt函数相同。StkVarInv该函数用于给变量

4、的各字节按位取反。Varfillv用给定的数据按照给定的长度填充变量。变量删除NewContext清除变量表。DelVar删除某个特定的变量。Delvarspec删除范围变量。DelVarInVar间接删除参数变量内容所指向的变量的内容,例如$02的内容为04,如果间接删除$02,删除后$0内容被删除。变量处理GetVarLen获取源变量内容的长度赋值给目标变量。RandVar获取指定长度的随机数赋值给目标变量。WibSubString从源变量指定偏移位置开始截取指定长度的内容赋值给目标变量。GetVarFromVar从源变量指定偏移位置处按照LV格式截取内容赋值给目标变量。FindStr在源

5、变量中查找指定的子变量,如果存在则将其偏移位置保存在目标变量中,不存在则跳转。ReplaceVar对源变量从指定偏移处开始的内容由替换变量的内容替换。GetPlugArgu将$81中的内容分散成参数2+1个子变量。变量运算VarMulChar执行乘法运算:参数2与参数3相乘,结果放在参数1中。VarDivChar执行除法运算:参数2除以参数3,结果放在参数1中。VarXorAnl参数1和参数2完成“异或”或“与”的运算,结果在参数1中。参数3为指令码:为A6,进行“与”运算;为26,进行“异或”运算STKVarSwap变量内容按字节进行高低4位的内容互换或取反。参数2为指令码:为A5,将变量各

6、位取反;为25,将变量个字节高低位交换。VarCmpAdd相加或比较两个变量:相加两个变量,溢出则相对跳转,否则顺序执行;比较两个变量,不同则相对跳转,相同则顺序执行。参数1为指令码:为37,两个变量相加;为B7,比较两个变量。VarAndXorJmp执行AND、XOR或NOT的操作。VarAddSubI执行加或减的操作。VarSubVar执行减的操作。分支跳转Goto段内相对跳转。SegGoto段间跳转,跳转到当前段的下一段ErrGoto设置错误跳转表。跳转方式为绝对跳转。Busyjmp如果SIM BUSY,则跳转到指定行执行Jmp6F03Offset在2700/6F03文件内的偏移位绝对跳

7、转Exit退出。Varnullgo为空跳转。JmpAbsEF文件之间跳转:跳转到指定文件指定段的指定行。AjmpVar段内绝对跳转:变量值从0到FE。AjmpVarOrg绝对跳转。StkBranchVar根据比较变量的值进行分支选择跳转。VarAddJmp两个变量相加,发生溢出则跳转到指定位置。VarCmpJmp比较两个变量内容,不相等则跳转到指定的位置。StkChkProfile测试Terminal Profile的某个位是否已置位。加密解密SMPBOCKey按照PBOC方式分散密钥。STKDescrypt对输入内容进行DES ECB加密和解密。STKMAC对输入变量内容按照ISO/IEC

8、9797g规范计算MAC。ModifyStkKey用变量的值修改KEY的值(计数器)XRAM16CRC计算CRC16。XRAM32CRC计算CRC32。XRAMMAC用给定的密钥计算RAM中指定偏移位置开始指定长度内容的MAC。XRAMDESCRYPT在RAM中对指定的内容进行DES加密和解密。VarHash对输入数据进行SHA_1运算,运算结果为20个字节的哈希值。PKCrypt对输入内容进行1024位的RSA公钥或私钥加密。SMPBOCKey产生PBOC密钥。RAM操作GetWibXRAM从RAM中的指定偏移位置取指定长度的数据到变量中。PutWibXRAM将数据写入RAM中的指定偏移位置

9、处。MoveXRAMBlock进行RAM内数据的块移动。RunWibDPTR在RAM中执行WIB指令。RunRFMDPTR在RAM中执行APDU指令。GetXramOff读取XRAM中指定偏移位置开始的指定长度的内容。XramBit设置XRAM中指定字节指定位的值。XramBitJmp读取XRAM中指定字节指定位的值,读取的值为1则相应发生跳转。SaveSMXram判断短信内容,如果是0348短信的第一条,则存储到XRAM中并顺序执行;是0348中间短信,跳转到相应位置;如果短信不是0348的短信,跳转到相应位置。主动命令SendSTKRS根据参数中的主动式命令代码调用相应的主动式命令。Dir

10、ectSend直接发送Proactive Command。DisplayText显示字符串,显示内容为变量或可显示的字符串组合。WibDispClear该指令的功能和Displaytext指令一样,不同之处在于该指令是“Clear after delay”,而不是“User to clear Message”。Display显示数据。GetInput从终端获取指定长度的内容保存到结果变量中。MoreTime在SIM卡执行操作时要求终端等待,防止出现SIM处理超时。PlayTone根据输入的参数执行Proactive Command的响铃功能。FileMenu根据记录文件的内容组织要显示的菜单。

11、SelectItem组织菜单项供用户选择。GSMSM_union_cdma()GSMSM根据参数构造GSM11.14短信并发送。Put0348Data将用户数据在RAM指定的偏移位置开始组织成GSM03.48格式的数据。Put0348Submit对输入的数据在RAM指定的偏移位置开始组织成GSM03.48格式的数据。Put0348msg根据输入参数在RAM的指定偏移地址取数据。GetPadLen获取参数变量的长度(编译出错)。SubMit按照GSM0348格式发送消息。SetRetTAR设置下一次SUBMIT时使用的6F01文件的记录号。SendUSSD以USSD字符串格式发送SetUpCal

12、l根据输入参数组织符合GSM11.14规范的Setupcall命令。Refresh根据输入参数组成符合GSM11.14规范的Refresh Proactive Command。ProvLocalInfo从终端获取由参数Command Qualifier指定的本地信息给SIM卡,保存在结果变量中。SetIdleModeText实现主动式命令SetIDleModeText,设置终端空闲时显示的内容。StkLaunchBrowser组织符合GSM11.14规范的Launch Browser命令。数据转换BinToDec将2个Bytes的16进制数转换为5个Bytes的十进制数对应的ASCII码。De

13、cToBin将5个Bytes的十进制对应ASCII码转换成4个字节的16进制数。StkVarPad在源变量后加入填充数据保存到目标变量中。CodeDataBit在7位编码(非压缩)和8位编码(压缩)之间进行转换。Ucs2toAscUCS2码向ASCII转换ASCIItoADN将ASCII码格式的内容转换为ADN格式。ASCIItoTPDA将ASCII变量码转为TPDA码并在前加可选的国内外标识,不足补FADNToTPDA将AND格式的内容转换为TPDA格式。ADNToASCII将AND格式的内容转换为ASCII码格式。TPDAtoAscii将指定TPDA变量转为ASCIISMSTPDUToUD

14、将短信的DCS+ UserData赋值给结果变量,要求输入变量是短信从TPDU Type字节开始(即MTI开始)asctoucs2将ASCII码转换为UCS2码。文件操作指令ReadFile从变量指定的文件中读取相应的内容。WriteFile将内容写入到变量指定的文件中。SearchFileNext按照参数指定的模式在记录文件中进行向下搜索。SearchFileUp按照参数指定的模式在文件中进行向上搜索。DeleteAID对指定文件从指定偏移位置删除指定长度的内容,其后的内容向前移动填充被删除的空间。DelWriteAID从指定的RAM偏移处将指定长度的内容拷贝到指定文件的偏移位置。Erase

15、EF擦除指定文件的内容,所有参数都必须为立即数。ChangeFileArgu修改DF下的文件IDFileArgu获取指定文件的文件参数。ExtEEPROM动态分配6F3A和6F3C两个文件的空间。Plug-In指令PlugIn调用27006F84文件中对应的名称的Plugin函数,并向该函数传递指定的参数,最终把函数执行的结果保存到目标变量之中。PlugInRet从PlugIn函数返回主调函数。如果参数为空,则返回主调函数的下一行,否则返回到参数指定的行。SaveSMToVar将当前下行短信保存到变量中,还有一个功能就是将传递到PlugIn的参数内容保存到变量中。OTA2指令GetAIDAdd

16、r根据提供的数据AID变量值和序号值在OTA2的ByteCode文件(6F03)中找到匹配的AID地址,最后将结果保存在目标变量中。TransCMD将OTA2中的主动式指令的TAG值转换为我们卡片自定义的值Backward_Ret当Result of Terminal Profile为0x11时跳转到OTA2当前应用的某个过程的指定行,具体由参数决定。OTAJmp跳转到OTA当前应用的某个过程的某一行执行,具体由参数指定。OTAAjmpVar跳转到当前OTA2应用的某个过程的某一行执行,具体由参数指定。Call_Fun调用27006F86的指定段,并向其传递参数保存在变量0x81之中。AIDW

17、rite将数据写入所选AID的专用地址中AIDReadLV从所选的AID中以LV格式读取数据保存到目标变量中AIDRead从所选择的AID中读取数据保存到目标变量中ChkWYSM检查无忧短信:全部的短信接收完毕后,跳转到相应的位置;本组短信接收完毕后,跳转到相应位置;否则跳转到另外的指定位置。GetWYADN从参数给定的无忧源变量中读取相应的AND。OtaCopy用源变量的值修改目标变量的内容,如果修改失败则跳转到相应的位置。其他指令SetVerToVar将2700目录下的6F07文件中保存的版本信息赋值为目标变量。BufSize将缓冲区的大小按照十进制的ASCLL赋值给变量SendNull用

18、于发送T=0协议中的等待过程字节:60HGetSIMUIM获取当前卡片的运行状态:是SIM/UIM,用于G/C网双模卡。AddItemVar构造一个ITEM。DefineGetPinable获取PIN是否Disable,即变量高位是否为1Wib13Swap将变量中的内容逐字节高低半字节交换WibAdd进行十进制整数的加法运算,目标变量结果值= 目标变量原值+ 源变量值WibAddSub进行十进制整数的减法运算,目标变量结果值 = 目标变量原值 - 源变量值WibAlphToUcs2将Alphabet转换UCS2格式WibBDCToAlph将BDC (Binary-Coded Decimal 二

19、进制编码的十进制) 格式转换Alphabet格式WibConvertVar将输入变量中包含二进制的数据转换为其他可显示的格式WibDisplayExt作用类似与displytext 和 display ,只不过此指令可通过设置参数3来支持附加功能,如图标显示等.WibGroupUn合并及拆分变量WibIncDec将变量内容加1或减1WibSetIdleExt设置ME空闲时屏幕的显示内容WibSub执行两变量相减的操作WatchModifyStkKey()修改STK目录下的KEY的值。WatchReadCounter()A3A8操作,读出A3A8算法的最后两个字节计数器。第二章 TimeCOS

20、V5.3指令解释注:以下的指令解释中,数字后面的“H”表示16进制,“D”表示十进制,如无特别说明,都是十六进制。2.1 变量赋值SetVar (Variable name to be assigned, Value assigned to variable) 对变量进行赋值,赋值分为两种情况:立即数赋值或变量赋值,但是不能将二者混合对变量进行赋值。参数1为目标变量;参数2为源变量或立即数。用法1:立即数赋值SetVar&(“$01”,”33”)/the data in variable 01 is 33Displaytext#(“$01”)/=3SetVar#(“$01”,”03”)/the

21、 data in variable 01 is 3033Displaytext#(“$01”)/=03SetVar(“$01”,”03”)/the data in variable 01 is 00300033Displaytext(“$01”)/=03用法2:赋空值SetVar&(“$01”,”)SetVar#(“$01”)用法3:变量值的复制,源变量的值附加到目标变量值的后面构成新的结果SetVar&(“$02”,”31”)SetVar&(“$03”,”32”)SetVar&(“$01”,”$02”)/data in varibale is 31Displaytext#(“$01”)/=1

22、SetVar&(“$01”,”$03”)/data in variable is 3132Displaytext# (“$01”)/=12备注:给变量赋值不能超过0xFD个字节;拷贝赋值最多赋0xFE个字节;参数2只能为立即数或一个变量,不能为多个变量或变量与立即数的混合;表示将内容转化为ASCII码存入变量;表示将内容转化为Unicode码存入变量;表示将内容直接存入变量; 不加限制符,则默认为&。InVarToVar(Variable name to be assigned)用法1:如果Length of Variable = 0x01,则该指令将变量值对应的变量所指的内容付给结果变量;S

23、etVar&(“$01”,”3131”)SetVar&(“$02”,”01”)/data in variable 02 is variable 01InVarToVar(“$02”)/data in variable 02 is 3131Displaytext# (“$02”)/$02=11用法2:如果Length of Variable 0x01,则该指令将该变量值的第一个字节以后的内容赋值给该变量第一个字节所表示的变量,而不是赋值给变量自身SetVar&(“$01”,”023232”)InVarToVar(“$01”)/data in varible 02 is 3232Displayte

24、xt# (“$02”)/$02=22备注:间接赋值(用法2)内容不能超过0xFD个字节。SetVarExtend(Variable name to be assigned,Printable String or Variable References)STKSetVarExt(Variable name to be assigned,Printable String or Variable References)使用包括立即数和变量的源数据对变量进行混合赋值。参数1为目标变量;参数2为源数据,可以是变量或立即数,也可以变量和立即数的混合值。用法1:立即数StkSetVarExt&(“$01”,

25、”31”)/data in variable 01 is 31Displaytext# (“$01”)/ :OutputVal:$01=1oStkSetVarExt#(“$01”,”31”)/data in variable 01 is 3331Displaytext# (“$01”)/ :OutputVal:$01=31oStkSetVarExt(“$01”,”31”)/data in variable 01 is 00330031Displaytext(“$01”)/ :OutputVal:$01=31o用法2:混合数据StkSetVarExt&(“$03”,”31”)/data in v

26、ariable 03 is 31StkSetVarExt&(“$01”,” $0333”)/data in variable 01 is 3133Displaytext# (“$01”)/:OutputVal:$01=13o用法3:赋空值stksetvarext&($03,)displaytext#($03) /空值stksetvarext($03)displaytext#($03) /空值备注:关于 80 81 82的使用,在使用SetVarExtend& 方式进行赋值时,80、81、82之后的一个字节会被当成变量名进行赋值,所以如果在此模式下想要将80、81、82作为立即数直接赋给目标变量

27、的话,需要将80、81、82双写。SetVar#($01,4567)SetVarExtend&($02,313233820138)/$02 = 3132333435363738SetVarExtend&($03,31323382820138)/$02 = 313233820138StkVarInv(变量名)该函数用于给变量的各字节按位取反用法:SetVar&($01,FFFF0000)Displaytext#(Var01=$01)StkVarInv(“$01”)Displaytext#(Var01=$01)/:OutputVal:$01=0000FFFFSetVar&($01,01234567

28、89ABCDEF)Displaytext#(Var01=$01)StkVarInv($01)Displaytext#(Var01=$01)/:OutputVal:$01=FEDCBA987654321Varfillv(name of destination variable, length to fill, filled value)用给定的数据按照给定的长度填充变量参数1为目标变量,用于存储填充后的内容参数2为立即数,为填充的长度参数3为立即数,为填充的内容用法:varfillv($05,08,32)/参数2、3都必须为立即数displaytext#($05)/$05=222222222.2

29、 变量删除NewContext( attribute)此命令用来清除变量表,参数1:立即数,为指令的属性用法1:attribute = 00 或为空时,清除的范围是从变量01h到变量DFh用法2:attribute = 01,清除的范围是从变量E0h到变量FFh用法3:attribute = 02,清除的范围是从变量01h到变量FFh注:attribute 从03h至FFh为系统保留字,不可用setvar&($01,31)setvar&($02,32)setvar&($03,33)setvar&($E1,3131)setvar&($E2,3232)setvar&($E3,3333)newcon

30、text() /改变参数,分别为 空,00,01,02,观察display结果displaytext#($01)displaytext#($02)displaytext#($03)displaytext#($E1)displaytext#($E2)displaytext#($E3)DelVar(Variable name to clear)删除某个特定的变量。参数1:要删除的变量名称。用法:SetVar&(“$01”,”31”) DelVar(“$01”)Displaytext# (“$01”) /为空Delvarspec( name of start variable, number of

31、variable need to clear)删除范围变量参数1: 变量, 删除的起始变量参数2: 立即数, 删除变量的个数用法:delVarSpec(“$01”,”04”) /10 0201 04将清空变量$01, $02, $03, $04备注:目前该函数需要使用Addcode指令添加,Addcode(10020104)。DelVarInVar (Variable name) 间接删除参数变量内容所指向的变量的内容。参数1:变量用法:SetVar&(“$01”,”3131”)SetVar&(“$02”,”01”)DelVarInVar(“$02”)/delete variable01Dis

32、playtext# (“$01”)/= emptyDisplaytext# (“$02”)/= data in variable 02 is 012.3 变量处理GetVarLen(Variable length to store length,Source variable name, End Byte)获取源变量的内容的长度,保存在目标变量中。参数1为目标变量;参数2为源变量;参数3为结束字符 (可选参数)。用法1:有参数3时,输出的是源变量中参数3字符前的字符长度SetVar&(“$02”,”313233”)GetVarLen(“$01”,”$02”,”33”)/data in vari

33、able 01 is 02Displaytext# (“$01”)用法2:没有参数3时,输出的是源变量中所有字符的长度SetVar&(“$02”,”313233”)GetVarLen(“$01”,”$02”)/data in variable 01 is 03Displaytext# (“$01”)备注:当源变量不存在或参数3为源变量中的第一个字节时,返回值为00h。RandVar(Variable name to store random,Random length)获取指定长度的随机数,保存在目标变量中。参数1为目标变量;参数2为随机数的长度,必须为立即数。用法1:RandVar(“$01

34、”,”05”)Displaytext# (“$01”)备注:最大可取的随机数长度为0XFE。WibSubString(Destination,Source variable name, Start Position, Copy length)将源变量从指定偏移位置起、长度为指定长度的内容,拷贝到目标变量中。参数1为目标变量;参数2为源变量;参数3为源中的偏移量,必须为立即数,取值范围从01h开始。参数4为拷贝的字节数,必须为立即数,取值范围从01h开始。用法1:SetVar&(“$01”,”3132333435”)WibSubString(“$02”,”$01”,”01”,”01”)/data

35、 in variable 02 is 31Displaytext# (“$02”)/=1WibSubString(“$02”,”$01”,”03”,”FF”)/data in variable 02 is 333435Displaytext# (“$02”)/=345注:1. 目标变量和源变量可以为同一个变量;2偏移量不能超出源文件的长度;3如果“拷贝的字节数”为“FF”,或者“拷贝的字节数”大于源文件可用的字节数,则表示截取起始偏移后的所有的内容给结果变量。GetVarFromVar(Variable name to store substring,Source variable name,

36、Offset variable name,Length variable name)将源变量从指定偏移位置起、长度为指定长度的内容,拷贝到目标变量中。参数1为目标变量;参数2为源变量;参数3为偏移变量,必须为变量,其值表示源中的偏移量;取值范围从00h开始。参数4为长度变量,必须为变量,其值表示拷贝的字节数。用法1:setvar&($02,0102030405060708)setvar&($03,01)setvar&($04,02)getvarfromvar($01,$02,$03,$04)displaytext#($01) /0203用法2:当不存在参数4时,从偏移量处取出的第一个字节中的内

37、容表示的是后续数据的长度。getvarfromvar($01,$02,$03,) /偏移变量处值 02h,所以取得的数据为其后的两个字节,即0304备注:Offset Length+Substring Length一定要小于或等于Source LengthFindStr (Variable name for storage of offset, String variable name, Variable name for string to find, Skip address if fail) 在源变量(参数2)中查找指定的子变量(参数3),如果存在则将其偏移位置保存在目标变量(参数1)中

38、,不存在则跳转。参数1为目标变量,用于存放在原中搜索到的起始偏移量;参数2为源变量,用于存放被搜索的源字符串;参数3为子字符串变量,用于存放在源字符串中进行匹配搜索的子字符串;参数4为立即数,没有找到匹配的字符串时的跳转行。用法:SetVar&($01,3132343536FF37373A3B3C)SetVar&($02,3132)SetVar&($03,3C)SetVar&($04,37)SetVar&($05,3C3A)FindStr($06,$01,$02,gotolab02)/data in variable 06 is 00Displaytext#(“$06”)FindStr($06

39、,$01,$03,gotolab02)/data in variable 06 is 0ADisplaytext#(“$06”)FindStr($06,$01,$04,gotolab02)/data in variable 06 is 06Displaytext#(“$06”)FindStr($06,$01,$05,gotolab02)/cannt find,goto lab02Displaytext#(“$06”)Exit()Lab02: Displaytext (“查找失败”)Exit()ReplaceVar (name of variable for storage, name of S

40、ource variable, Offset, name of Variable to replace) 将源变量(参数2)从指定偏移量(参数3)开始的内容改写为替换变量(参数4)的内容,并将替换后的结果保存至目标变量(参数1)。参数1为目标变量,用于存放结果;参数2为源变量,用于存放被替换的变量;参数3为立即数,用于存放指定的偏移量, 取值范围从00h开始。参数4为替换变量,用于存放替换源变量的值。用法:SetVar&($01,313233343536373839)SetVar&($02,3030)ReplaceVar($03,$01,04,$02)/data in variable 03

41、is 313233343030373839Displaytext#(“$03”)/=123400789ReplaceVar($03,$01,08,$02)/data in variable 03 is 313233343131373830Displaytext#(“$03”)/=123456780Displaytext#(“$01”)/=123456789备注:如果 偏移量+替换变量长度 源变量长度 ,则多出的部分会被忽略。GetPlugArgu(name of the first variable, number of variables)将81变量中的内容拆分到数个子变量中。从81变量的第

42、00字节起,依次将每一个字节存入到一个目标变量中去,参数2控制拆分的次数,如果经过拆分后81变量仍有剩余则将剩余数据继续保存在81变量中。参数1为目标变量,为分散后的第一个变量名称;参数2为立即数,表示拆分的次数,也等于拆分后形成的新的变量的数量。用法:SetVar&($81,696E70755324)GetPlugArgu($A1,03)displaytext#($A1)/$A1=69displaytext#($A2)/$A2=6Edisplaytext#($A3)/$A3=70displaytext#($81)/$81=755324备注:如果 参数2 = 81变量中数据的长度,则在拆分后8

43、1变量为空; 如果 参数2 81变量中数据的长度,则在拆分后81变量中值不正常!2.4 变量运算VarMulChar (Variable name for storage, Source variable name, Variable name for MUL) 执行乘法运算:参数2与参数3相乘,结果放在参数1中。参数1为目标变量,2字节,存放结果;参数2为被乘数变量,存放被乘数,必须为变量,内容为2个字节;参数3为乘数变量,存放乘数,必须为变量,内容为1个字节的16进制数。用法:SetVar&($01,89)SetVar&($02,24)VarMulChar($03,$01,$02)/dat

44、a in variable 03 is 1344Displaytext#(“$03”)SetVar&($01,3389)SetVar&($02,24)VarMulChar($03,$01,$02)/data in variable 03 is 3F44(见备注)。Displaytext#(“$03”)备注:1.结果只取从最低位起两个字节的数据 2.如果参数长度超出规定,编译器不会报错,请注意!VarDivChar (Variable name for storage, Source variable name, Variable name for DIV)执行除法运算:参数2除以参数3,结果放

45、在参数1中。参数1为目标变量,为两个字节;参数2为源变量,存放被除数,为2个字节;参数3为除数变量,存放除数,为1个字节,不能为0。用法:SetVar&($01,89)SetVar&($02,24)VarDivChar($03,$01,$02)/data in variable 03 is 0003DisplayText#(Result=$03)SetVar&($01,3389)SetVar&($02,24)VarDivChar($03,$01,$02)/data in variable 03 is 016EDisplayText#(Result=$03)SetVar&($01,10)SetV

46、ar&($02,24)VarDivChar($03,$01,$02)/data in variable 03 is 0000DisplayText#(Result=$03)VarXorAnl (Variable name to XOR, Source Variable name, Command tag) 参数1和参数2进行“异或”或“与”的运算,结果保存在参数1中。参数1为目标变量,在运算前存放参与运算的第一个变量的值,运算后存放运算结果;参数2为源变量,存放参与运算的第二个变量的值;参数3为指令码。A6: “与”运算; 26:“异或”运算。用法1:指令码= 26,两变量进行“异或”运算,结

47、果存在参数1中SetVar&($01,89) SetVar&($02,24) VarXorAnl($01,$02,26)/data in variable 01 is ADDisplayText#(01=$01) 用法2:指令码= A6,两变量进行“与”运算,结果存在参数1中SetVar&($01,89) SetVar&($02,24)VarXorAnl($01,$02,A6)/data in variable 01 is 00DisplayText#(01=$01)备注:两个变量的长度必须一致,且变量不能为空。VarAndXorJmp(目标变量,第一个立即数,第二个立即数,跳转地址)执行AN

48、D、XOR或NOT的操作。参数1为目标变量,在操作前存放源变量,操作后存放目标变量;参数2为第一个立即数;参数3为第二个立即数;参数4为跳转位置,操作结果不是00h时的相应跳转位置。用法1:第二个立即数 = 00h, 变量与立即数一进行“与”运算,结果存在变量中用法2:第一个立即数 = FFh, 变量与立即数二进行“异或”运算,结果存在变量中用法3:第二个和第一个立即数都 = FFh, 对变量自身一进行“非”运算,结果存在变量中SetVar&($01,56)Displaytext(操作数据为$01)/设置跳转位置1,回退到主菜单(结束运行)watchSelectItem($00,VarAndX

49、orJmp执行方式,(AND 操作/gotolab01)/(Xor 操作/gotolab02)/(Not 操作/gotolab03)lab01:VarAndXorJmp($01,01,00,02) /ANDDisplaytext(AND 操作结果为00)goto(gotolab99)Displaytext(AND 操作结果不为00)goto(gotolab99)lab02:VarAndXorJmp($01,FF,01,02) /XorDisplaytext(Xor 操作结果为00)goto(gotolab99)Displaytext(Xor 操作结果不为00)goto(gotolab99)la

50、b03:VarAndXorJmp($01,FF,FF,02) /NotDisplaytext(Not 操作结果为00)goto(gotolab99)Displaytext(Not 操作结果不为00)lab99:Displaytext#($01)STKVarSwap (Variable name to swap, Command tag) 将源变量内容按字节进行高低4位的内容互换或取反,结果保存在源变量中。参数1为源变量,存放参与运算的值,运算后存放结果;参数2为指令码。 25:高低位交换;A5:各位取反用法1:指令码= 25,将源变量个字节高低位交换SetVar&($01,89) StkVar

51、Swap($01,25)/data in variable 01 is 98 DisplayText#(01=$01)用法2:指令码=A5,则将源变量各位取反SetVar&($01,89) StkVarSwap($01,A5)/data in variable 01 is 76 DisplayText#(01=$01)备注:与WIB13Swap编译后指令相同VarCmpAdd (Command tag, destination Variable, source Variable, Skip Address) 相加或比较两个变量:相加两个变量,溢出则相对跳转,否则顺序执行;比较两个变量,不同则相对跳转,相同则顺序执行。参数1为指令码。37:相加;B7:比较;参数2为目标变量,运算前存放参与运算的第一个数,运算后存放运算结果参数3为源变量,存放参与运算的第二个数参数4为立即数,表示当两个变量不相同或相加结果溢出的时候的相对跳转地址。用法1:指令码=37,目标变量与源变量相加,结果存放在目标变量中,如果溢出则执行相对跳转。用法2:指令码=B7,目标变量与源变量进行比较,结果存放在目标变量中,如果溢出则执行相对跳转。SetVar($01,FFFFFF) SetVar($02,0001) lab2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论