发表于:2013/12/23 9:28:28
#0楼
下面是网友不可取代给出的老外编的某设备的局部程序:
L #VehiclesLeftToDo //Load vehicle number
ITD //Convert from integer to double integer
SLD 4 //Shift left 4 bits (align byte boundary and multiply by 2)
LAR1 //Save in address register 1
装入的 #VehiclesLeftToDo都是正数。
使人困惑的是程序中有的地方有ITD指令,有的地方又没有ITD指令。
下面是我的回帖:
ITD指令用来将16位的整数转换为32位的双整数。转换时应保证符号位不变。
正数的符号位为0,对正数执行ITD指令,得到的双整数的高16位全部为0。L指令将正数 #VehiclesLeftToDo传入累加器低16位后,高16位自动变0,所以可以省去ITD。
负数的符号位为1,对负数执行ITD指令,得到的双整数的高16位全部为1。如果传入累加器的是负数,必须使用ITD指令,否则负数就变成正数了。
[/URL] [/URL]
L #VehiclesLeftToDo //Load vehicle number
ITD //Convert from integer to double integer
SLD 4 //Shift left 4 bits (align byte boundary and multiply by 2)
LAR1 //Save in address register 1
装入的 #VehiclesLeftToDo都是正数。
使人困惑的是程序中有的地方有ITD指令,有的地方又没有ITD指令。
下面是我的回帖:
ITD指令用来将16位的整数转换为32位的双整数。转换时应保证符号位不变。
正数的符号位为0,对正数执行ITD指令,得到的双整数的高16位全部为0。L指令将正数 #VehiclesLeftToDo传入累加器低16位后,高16位自动变0,所以可以省去ITD。
负数的符号位为1,对负数执行ITD指令,得到的双整数的高16位全部为1。如果传入累加器的是负数,必须使用ITD指令,否则负数就变成正数了。
[/URL] [/URL]
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/