发布于 2007-12-06 09:14:09
0楼
请教斑主,下面是ZANE 作者的200的USS接收报文校验一程序
子例行程序注解TITLE= BCC校验码计算子程序
VAR_INPUT
DAT_ADR_P:DWORD; // Address pointer to data to be calculated
DAT_LEN:BYTE; // Data length for BCC cal
S_R:BYTE; // S=Send Cal R=RCV Cal
END_VAR
VAR_OUTPUT
BCC_AP:DWORD; // Address pointer for BCC calculation result
END_VAR
VAR
BCC_CHK:BYTE; // BCC value buffer
INDEX:INT;
FINAL:INT;
ADDR_P:DWORD;
END_VAR
Network 1
LD SM0.0
MOVB 0, LB10
MOVD LD0, LD15
BTI LB4, LW13
Network 2
LDB= LB5, 'S'
-I +1, LW13
Network 3
LDB<> LB5, 'S'
AB<> LB5, 'R'
CRET
Network 4
LD SM0.0
FOR LW11, +1, LW13
XORB *LD15, LB10
INCD LD15
Network 5
NEXT
Network 6
LD SM0.0
MOVB LB10, *LD15
MOVD LD15, LD6
END_SUBROUTINE_BLOCK
USS接收报文校验
LSCR S0.5
Network 16
LD SM0.0
CALL BCC_CAL, VD144, VB250, 'R', VD148
MOVD VD200, LD0
XORD VD250, LD0
Network 17
LDB= *VD148, 0
AD= LD0, +0
LPS
NOT
INCB VB119
LRD
MOVB VB250, VB350
LRD
BMB VB251, VB351, VB250
LPP
MOVB 0, VB119
Network 18
LDB> VB119, 200
MOVB 200, VB119
Network 19
LD S0.5
SCRT S0.6
其是VB144为接收报文的地址指针,VB250接收报文长度
请问为什么LDB= *VD148, 0