请大家帮忙(casl)!我是一个新手!
已知在x和y 两个单元中分别存在两个整数,编程从键盘输入一个字符(‘+’,‘-’,‘*’,
‘/’),根据不同的字符做不同 的运算。当输入的字符不是加减乘除之一时,输出错误。
START
LEA GR4,STACK
IN INBUF ,ILEN
LD GR0,INBUF
LEA GR1,0
LEA GR2,3
FINFOP CPL GR0,OP,GR1
JZE BEGIN
LEA GR1,1,GR1 "?????????"
LEA GR2,-1,GR1
JPZ FINDOP
BEGIN SLL GR1,1 "?????????"
CALL CAL,GR1 "??????????"
EXIT
CADD LD GR0,X
ADD GR0,Y
ST GRO,RESULT
RET
CSUB LD GRO,X
SUBB GRO,Y
ST GRO,RESULT
RET
CMUL LEA GRO,0
LD GR1,Y
CYCLE ADD GR0,X
LEA GR1,-1,GR1
JZE SAVE
JPZ CYCLE
SAVE ST GRO,RESULT
RET
CDIV LD GR0,X
LEA GR1,0
LOOP CPA GR0,Y
JMI STORE
SUB GR0,Y
LEA GR1,1,GR1
JMP LOOP
STORE ST GR1,RESULT
RET
ERROR OUT MES,OLEN
RET
CAL JMP CADD
JMP CSUB
JMP CMUL
JMP CDIV
JMP ERROR
X DS 1
Y DS 1
RESUL DS 1
MES DC 'OP ERROR'
OLE DC 8
INUF DS 1
IEN DS 1
op DC '+'
DC '-'
DC '*'
DC '/'
DS 20
STACK DS 1
END
我不太明白得这里 SLL GR1,1 是什么作用, LEA GR1,1,GR1 已经将 GR1 加1了,
当程序跳转到 BEGIN 时,SLL GR1,1 是什么意思?只是将GR1逻辑左移一位?那他对于下面的
CALL CAL,GR1 有什么作用?
望大家不惜赐教!!! 小弟在这里先谢谢了!!!!!:)