9)无条件转移指令JMP与条件转移指令JPZ(不小于转)、JMI(小于转)、JNZ(不等于转)、JZE(等于转) JMP | ┐ | | JPZ | │ | | JMI | ├ | ADR[,XR] | JNZ | │ | | JZE | ┘ | |
●当地址码中缺 [XR] 时,所有转移指令为直接转移( ADR 即为转移地址) 当地址码中有 [XR] 时,所有转移指令为间接相对接转移 ●JPZ 与 JMI 根据符号位 FR0 作为判断条件 JNZ 与 JZE 根据零位位 FR1 作为判断条件 10)进栈 PUSH 与出栈 POP: (1)进栈指令 PUSH: (SP)-1→SP,E→(SP) (2)出栈指令 POP: ((SP))→GR,(SP)+1→SP 注意:出栈指令的目的寄存器是 GR0~GR4,而进栈指令的源操作数不包括 GR0。 11)子程序调用CALL与返回 RET指令 4、伪指令 1)START:程序开始 2)END:程序结尾 3)常量定义指令 DC: 此伪指令与其它汇编语言中的 DB 指令似。利用 DC 指令可定义: (1)定义十进制常数: 其中 -32768 < n ≤65535 (2)定义字符串常数: (3)定义十六进制常数: 其中 0000 ≤ h ≤FFFF (4)定义地址: 其中 LABLE 是程序中的地址标号 因为 Casl 没有立即数运算指令,所以需要与立即数进行算术逻辑运算时,都要将立即数定义为内存常数进行运算。 4)变量定义指令 DS:用来保留指定字数的存储区域 其中 n 是十进制常数(≥0),当 n=0 时,存储区域不存在,但标号 LABLE 仍然有效,即代表下一字的地址。 5)宏指令:IN、OUT、EXIT Casl 中有进行输入、输出及结束程序等宏指令,而没有定义输入、输出符号指令,这类处理由操作系统完成。 程序中出现宏指令时,Casl 生成调用操作系统的指令串,但是,生成的指令串字数不定。 执行宏指令时,GR 的内容保持不变,而 FR 的内容不确定。 (1)输入宏指令 IN: 宏指令 IN 从输入装置上输入一个记录,纪录中的信息(字符)依次按字符数据的形式存放在标号为 ALABLE 开始的区域内,已输入的字符个数以二进制数形式存放在标号为 NLABLE 的字中,纪录之间的分隔符号不输入。 (2)输入宏指令 OUT: 宏指令 OUT 将存放在标号为 ALABLE 开始的区域中的字符数据作为一个记录向输出装置输出,输出的字符个数由标号为 NLABLE 的字的内容指定。输出时,若要纪录间的分隔符号,由操作系统自动插入输出。 (3)宏指令 EXIT : 宏指令 EXIT 表示程序执行的终止,控制返回操作系统。 二、汇编语言常用子程序 1、拆字与拼字: 【例1】将 GR0 中的四位 BCD 码从高到低依次存放到 GR2 所指的四个内存单元中。 | START | | | | LEA | GR3,4 | ;循环计数器 | L1 | ST | GR0,REG | ;保护其余几位 BCD 码 | | AND | GR0,C000F | ;屏蔽高 3 位,留下最低 1 位 BCD 码 | | ST | GR0,3,GR2 | ;将此位 BCD 码存放到 GR2 所指第四个内存单元 | | LD | GR0,REG | ;恢复其余几位 BCD 码 | | SRL | GR0,4 | ;将已处理过的此位 BCD 码移出 | | LEA | GR2.-1,GR2 | ;地址指针减 1 | | LEA | GR3,-1,GR3 | ;循环计数器减 1 | | JNZ | L1 | ;未处理完,继续 | | RET | | | C000F | DC | #000F | ;十六进制常数,屏蔽屏蔽高 3 位 BCD 码用 | REG | DS | 1 | ;暂存单元 | | END | | |
 
2/2 首页 上一页 1 2 |