请大家帮忙(casl)!我是一个新手!

dream0335 2003-05-13 03:12:44


已知在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 有什么作用?
望大家不惜赐教!!! 小弟在这里先谢谢了!!!!!:)
...全文
55 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoyy 2003-05-13
  • 打赏
  • 举报
回复
指令的存储长度是"运算符"的存储长度的2倍,假设是做减法运算,GR1 =1 ,但要实现跳转到
JMP CSUB,GR1要等于2才行。SLL GR1, 1 的作用就是乘2。

CAL JMP CADD
JMP CSUB
JMP CMUL
JMP CDIV
JMP ERROR
shaoyy 2003-05-13
  • 打赏
  • 举报
回复
在执行CALL CAL,GR1时,GR1应是CAL起始对应的几种运算调用指令的偏移量。
在执行SLL GR1,1 之前,GR1是运算符对应op的偏移量,应运算定义的顺序与CAL对应的调用顺序相同,好像直接用GR1作为偏移就行,

但是请注意,

op DC '+'
DC '-'
DC '*'
DC '/'

DC是以"BYTE"定义的,即每个数据的长度是一个字节,而每条指令要占两件字节,所以要乘2,即"GR1逻辑左移一位"。我讲清楚了吗?
CASL引入国内以后作为中国计算机软件专业技术资格和水平考试高级程序员级考试内容之一。使用虚拟的计算机目的为的是一个公平的考试环境,毕竟如果让每天和MC680X0打交道的朋友去和写PC驱动的朋友一起考i80X86汇编显然是不公平的。 CASL达到这一目的的同时却带来了一个麻烦:CASL程序无法在常见的PC或者其他任何计算机上运行。 我们有三条常见选择: 1)汇编器,将Casl汇编程序汇编成诸如80X86指令的程序,在PC上运行 2)解释器,解释执行每一条指令,有点像解释型高级语言,但是来的简单一些 3)忘记CASL,忘记高程考试 ;;;;-) 在选择了第二种方案以后我们开始了这个软件...... Nasl的设计主要目标便是简单易用,事实上在我能找到的所有CASL解释器中没有一个能很快上手运行起来的,当然这不包括Nasl本身。由于Comet是一个虚拟计算机,诸如复旦大学计算机科学系所设计的CASL汇编器的设计只能给使用者带来不必要的麻烦。鉴于它只能在Pure DOS下运行,Nasl诞生了,编写一个开放的人人可以得到的方便的CASL解释器是编写Nasl的初衷之一。 Nasl能对输入的CASL汇编程序解释运行,以此可以观察各个寄存器以及内存的变化情况,使得您可以熟悉CASL汇编并对汇编语言程序设计的思想有所了解,帮助通过高程考试。Nasl支持CASL汇编文件的编辑,但是不要将它视作一个";;;开发环境";;;,CASL和Nasl都不值得您去那么做。 最后祝所有努力学习的朋友好运!

2,958

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧