发布于 2008-04-01 12:43:09
0楼
L #IN_Integer //取一单整形数放入累加器一
ITD //将累加器一中的单整数转换为双整数
DTR//将累加器一中的双整数转换为实数
L #IN_Real//将上面的实数移到累加器2,取一数(实数)放入累加器1
/R//累加器2值除以累加器1值
RND //将上面两个浮点数的商取整,变成整数,并存到累加器1,此时累加器2值为#IN_Real
L L#32767//将上述商存入累加器2,同时将32767存入累加器1
>D //比较两个累加器值大小
JC LIM//如果商值大于32767,则跳转到LIM
INVD //如不大于32767,则将32767取反(-32768)
JC LIM//小于,则跳转到LIM
TAK //交换两个累加器的值
LIM: T #Out_Integer //将累加器1中的值存到#Out_Integer 中。
注意,随着比较的不同,#Out_Integer的值是不同的,第一次成功跳转,,#Out_Integer= 32767,第二次成功跳转,,#Out_Integer=-32768,如果两个条件均不满足,则,#Out_Integer=商(整数)
实际上这段程序的意思就是要确保输出一个在-32768和32767之间的数
楼上的32767反码为-2147450880是错误的!!!!
好好生活,天天向上!