2、2000年试题四
[程序说明]
(1)本子程序根据每位职工的基本工资(非负值)和他完成产品的超额数或不足数计算该职工的应发工资。
(2)主程序调用时,GR1中给出子程序所需参数的起始地址,参数的存放次序如下表:
GR1 | a1 |
b1 | |
c1 | |
a2 | |
b2 | |
c2 | |
… | |
an | |
bn | |
cn | |
-1(结束标志) |
其中 ai 为职工 i 的基本工资;bi 为职工 i 的完成产品的超额数或不足数;ci为职工 i 的应发工资数(i = 1、2、…、n)。
bi以原码形式存放(大于零为超额,小于零为不足),基本工资与计算所得的应发工资以补码形式存放。
(3)应发工资的计算规则为:
●恰好完成定额数(此时bi = 0),应发工资即为基本工资。
●每超额 4 件,在基本工资基础上增加 10 元(不到 4 件,以 4 计算,例如超额数为 10 时,增加 30 元)。
●每不足 4 件,在基本工资基础上减 5 元(不到 4 件,以 4 计算,例如不足数为 5 时,减 10元)。
[程序]
START | 1 | ||
BEG | PUSH | 0,GR1 | 2 |
PUSH | 0,GR2 | 3 | |
PUSH | 0,GR3 | 4 | |
L1 | __(1)__ | 5 | |
LEA | GR0,0,GR2 | 6 | |
JMI | FINISH | 7 | |
LD | GR3,1,GR1 | 8 | |
LEA | GR2,0,GR3 | 9 | |
AND | GR2,C7FFF | 10 | |
JZE | L3 | 11 | |
SRL | GR3,15 | 12 | |
LEA | GR2,-1,GR2 | 13 | |
L2 | __(2)__ | 14 | |
LEA | GR2,-4,GR2 | 15 | |
JPZ | L2 | 16 | |
L3 | __(3)__ | 17 | |
__(4)__ | 18 | ||
__(5)__ | 19 | ||
FINISH | POP | GR3 | 20 |
POP | GR2 | 21 | |
POP | GR1 | 22 | |
RET | 23 | ||
C7FFF | DC | #7FFF | 24 |
BONUS | DC | 10 | 25 |
DC | -5 | 26 | |
END | 27 |
[