CASL知识的学习要点与试题的应试技巧

一、对于水平考试中的CASL汇编知识的学习要点:
  ㈠、参加应试的考生在掌握CASL方面必须做到以下几点:
  1、掌握伪指令,宏指令,符号指令的使用方式,理解各条指令的功能。
  ①、PC为下一条要执行的指令地址,SP(GR4)为栈顶元素的地址(指针),例:LD GR0,0,GR4取出的是栈顶元素的值。刚进入子程序过程时SP(GR4)指向调用子程序返回时要执行的指令,子程序首部的LD GR2,0,gr4为取出子程序调用返回时PC的值。
  ②、LEA可实现GR=ADDR+XR赋值语句,而LD是取数指令GR=(ADDR+XR),如LEA gr1,1,gr1就是实现gr1=gr1+1调整变量GR1值的功能。
  ③、DC定义中标号栏的标号代表指定常数的存储首地址,要说明的是它在使用时已表示所定义常量的值,不要求再用LD、ST对它的数据进行有关地址与数据的转换操作。DS是用来保留指定数量的存储区域,其对应的标号为首字节地址,其对应的值应用LD指令。它们与LEA、LD、ADD在使用上的格式要求不同。如:
  C10 DC 10 可以使用形如LEA GR0,C10的指令表示GR0=10,而不能用形如LD gr0,c10的指令
  WRK DS 1 可以使用形如LD GR0,WRK,GR1的指令表示GR0=(GR1+WRK),而不能用形如LEA gr0,WRK来表示。
  ④、子程序的返回。
  子程序是通过RET指令返回主程序。RET指令的功能是将栈顶的返回地址置入PC。CASL中GR4兼作通用寄存器,变址器和栈顶指针,因此在子程序中可以通过GR4修改返回地址。这样子程序返回时,就不一定返回到主程序的调用点下面的一条指令。在CASL程序设计中常常利用这一技巧。刚进入过程时用LD GR2,0,GR4;则是取出过程返回的程序地址GR2=(GR4),其中GR4为返回时地址值PC在栈中的位置。若再用LD GR3,0,GR2,则是取出返回地址处机器代码指令的值。
  2、了解运行CASL汇编程序的COMET机的硬件结构和CASL程序的运行环境。
  GR0通用寄存器不能兼作变址器;PC指令计数器存放着将要执行的指令首字节地址;FR标志寄存器不受影响的有LD、ST数操作指令、条件转移指令,栈操作指令、调用返回指令。
  3、掌握标号、字符常数、地址常数、数字常数的构成和使用方式
  4、区分取数据指令LD和取地址指令LEA的差别。掌握取地址指令LEA的使用以及该指令在循环结构程序中应用。
  5、掌握基本数据结构(如数组、堆栈、表格和二叉树)的构造及其应用。
  6、掌握一些基本的算法(如排序、分类和查找等)
  7、能进行分支程序、循环程序、主子程序、字符串处理程序和输入/输出等程序的设计与构造。
  8、能利用堆栈进行递归程序的设计与构造。
  ㈡、常用的算法积累,如
  1、将GR0扩大10的实现
  ①、2*GR0+8*GR0 {SLA GR0,1;ST GR0,WORK;SLA GR0,2;ADD GR0,WORK}
  ②、8*GR0+GR0+GR0 {ST GR0,WORK;SLA GR0,3;ADD GR0,WORK;ADD GR0,WORK}
  ③、2*(4*GR0+GR0){ST GR0,WORK;SLA GR0,2;ADD GR0,WORK;SLA GR0,1}
  2、普通两数相除,一般通过以减代除的方法实现
  3、普通两数的最大公约数的实现:
  当M,N都是偶数时GCD(M,N)=2*GCD(M/2,N/2)
  当M,N中仅有一个是偶数时,如M为偶数时;GCD(M,N)=GCD(M/2,N)
  当M,N都是奇数,且M>N时,GCD(M,N)=GCD(M-N,N)
  当M,N相等时,GCD(M,N)=M=N;
  4、判断最高位的位值的方法:LEA XR,0,XR;判断两数符号关系EOR GR0,0,GR1 
  二、对于水平考试中的CASL汇编试题的解法:
  水平考试中的汇编试题一般都采用完形填空的形式,即每个汇编试题的程序中留出8个左右的空格,让考生填上正确的指令,完成程序。该类题目,其难度要小于要求考生独立编程的题目。因为这类题目在程序中已确定了算法,数据结构以及变量。考生在答题时,只要根据程序说明,弄清程序的功能,结合不完整的程序弄清程序中所使用的算法和数据结构,就能够正确填空。 
  一般的解题过程可以归纳成以下三个步骤:
  1、阅读程序说明,了解程序功能以及完成该功能的实现方法和数据结构有关的变量说明。
  2、阅读程序,了解程序中所使用的寄存器、变量和数据区的作用。进一步了解程序中所使用的算法和数据结构。画出程序框图(程序结构图:循环、选择、顺序)和数据结构图。 
3、结合程序框图和数据结构,再读程序,填写出各空应填的指令。
三、对于水平考试中的CASL汇编试题的应试技巧:
  解题的最基本规律是真正掌握CASL语言及其程序设计。其次掌握一些试题的应试技巧对答题帮助极大。 
  1、注意分析关联指令的使用情况,如留空格前后的指令、成对存在的指令。
因为前后的指令和留空指令关系最紧密,如在留空格指令后出现了一个新的寄存器而在留空格指令前面的指令中未出现过该寄存器,则留空指令和该寄存器有关。在LD和ST使用的过程中对所用的寄存器写入操作之前,常常要先修改寄存器的内容。 
  在子程序和过程的调用和定义中,常用PUSH和POP的成对存在的形式实现对一些数据和寄存器进行保护和还原。
  2、比较指令后的空格,一般填写条件转移指令。当然条件转移指令前的空格除比较指令外可以是LEA、ADD、LD、AND等指令。由于比较指令的执行结果只设置FR,对其它寄存器和内存单元不产生影响。而只有条件转移指令才受FR影响,其它指令不受FR影响。另外只影响FR的指令除比较指令外还有:LEA XR,0,XR和移动0位的左移或右移指令,如SLL GR,0;SLA GR,0等。
  3、所定义标号及变量标识名称的含义与使用情况。
所是理解程序结构的一个标志。如标号LOOP是循环结构的标志。表示从LOOP开始是一个循环结构。则LOOP前的指令必须包含设置初值部分。根据所确定循环和循环体系的结构要求:置初值、循环体,循环调整、循环控制的四个环节要求,可以更方便确定相应指令位的功能。 
哪一子程序的入口标号为DIV,则可猜出该子程序可能是除法子程序,阅读程序时根据标号给出的含义可帮助理解程序。
  总之,应试能力和技巧是一个综合性的问题,只有多练习,才能逐步摸索出一套适合自身特点的应试技巧


集星资讯网供稿 如有建议请联系cnstars
http://cnstars.126.com cnstars@21cn.com