WEB开发网
开发学院软件开发汇编语言 Casl汇编语言辅导 阅读

Casl汇编语言辅导

 2008-04-28 09:33:27 来源:WEB开发网   
核心提示:2、2000年试题四[程序说明](1)本子程序根据每位职工的基本工资(非负值)和他完成产品的超额数或不足数计算该职工的应发工资,(2)主程序调用时,Casl汇编语言辅导(7),GR1中给出子程序所需参数的起始地址,参数的存放次序如下表: GR1

2、2000年试题四

[程序说明]

(1)本子程序根据每位职工的基本工资(非负值)和他完成产品的超额数或不足数计算该职工的应发工资。

(2)主程序调用时,GR1中给出子程序所需参数的起始地址,参数的存放次序如下表:

GR1

a1
  b1
  c1
  a2
  b2
  c2
 
  an
  bn
  cn
  -1(结束标志)
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

[解]

寄存器作用:

GR1:地址指针

GR2:临时工作单元。先放 ai,后放 bi(绝对值)。

GR3:bi符号

GR0:ci---应发工资

分析:

1)从第 6 行 "LEA GR0,0,GR2" 及第 7 行 "JMI FINISH" 可知 GR0 开始时应是 ai,GR2 也应是ai,(从 LEA 指令功能分析)。所以第 5 行(1)应该是取数指令:

LD GR2,0,GR1

2)从第 8 行 "LD GR3,1,GR1" 及第 9 行 "LEA GR2,0,GR3" 可知 GR2 及 GR3 放的都是 bi(超额数或不足数),而从第 10 行 "AND GR2,C7FFF"(注意:C7FFF是 16 进制常量的标号(第 24 行)),可知 GR2 存放其绝对值。而且在该值为 0 时直接结束该职工处理(第 11 行 "JZE L3")。

3)从第 12 行 "SRL GR3,15" 可知 GR3 存放 bi 的符号(超额为 0,不足为 1)

4)从第 25、26 两行可知 BONUS 是每个超额或不足单位(4 件)的增加或扣除金额。从而得出最关键的第 14 行2应为 "ADD GR0,BONUS,GR3"。第 15、16 行指出这一加或减(GR3=1时,源操作数为负)是一循环过程,一直到 GR2<0。为防止 bi为 4 的整数倍时多加减一次,在第 13 行中先将 GR 减 1。

5)第17、18、19行(L3)依次是该职工的应发工资回送、修改地址指针(指向下一职工)和跳到处理程序开始(L1):

ST GR0,2,GR1

LEA GR1,3,GR1

JMP L1

上一页  2 3 4 5 6 7 8 9 10 11  下一页

Tags:Casl 汇编语言 辅导

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接