恭喜,你发布的帖子
发布于 2020-05-12 10:43:41
5楼
1200的间接寻址需要用到PEEK 和 POKE 指令,下面是解读的STL的含义。
L 0
T #Outlet_Nr_P //清零Outlet_Nr_P输出
L 0
L #RoutingDB_Nr //判断RoutingDB_Nr输入是否为0
==I
JC endp
T #t_Int //存放RoutingDB_Nr
OPN DB [ #t_Int] //打开RoutingDB_Nr数据块
L #Dest_Nr
L %DBD10
>=I //需要Dest_Nr >= DB[RoutingDB_Nr].DBD10
JCN endp
L #Dest_Nr
L %DBD4 //需要Dest_Nr <= DB[RoutingDB_Nr].DBD4
<=I
JC norm
L 0
T #Outlet_Nr_P
T #Outlet_Nr_S
L 1
T #Status // 若Dest_Nr > DB[RoutingDB_Nr].DBD4 ,则清空输出,结束程序
JU endp
norm: L #Dest_Nr //这里是满足上面条件后开始执行的程序
L %DBD10
-D //#Dest_Nr - DB[RoutingDB_Nr].DBD10
L %DBW2
ITD
*D //(#Dest_Nr - DB[RoutingDB_Nr].DBD10) * DB[RoutingDB_Nr].DBW2
L %DBW0
ITD
+D //(#Dest_Nr - DB[RoutingDB_Nr].DBD10) * DB[RoutingDB_Nr].DBW2 + DB[RoutingDB_Nr].DBW0
L 8
*D // 乘8的目的是为了适应地址寄存器
LAR1 //此时AR1的字节地址就是 (#Dest_Nr - DB[RoutingDB_Nr].DBD10) * DB[RoutingDB_Nr].DBW2 + DB[RoutingDB_Nr].DBW0
L DBW [ AR1 , P#0.0 ]
T #Outlet_Nr_P //Outlet_Nr_P值= DB[(#Dest_Nr - DB[RoutingDB_Nr].DBD10) * DB[RoutingDB_Nr].DBW2 + DB[RoutingDB_Nr].DBW0 ]
L DBW [ AR1 , P#2.0 ]
T #Outlet_Nr_S //Outlet_Nr_S值= DB[(#Dest_Nr - DB[RoutingDB_Nr].DBD10) * DB[RoutingDB_Nr].DBW2 + DB[RoutingDB_Nr].DBW0 + 2]
L 0
T #Status
endp: NOP 0
请填写推广理由:
分享
只看
楼主