Casl汇编语言辅导
2008-04-28 09:33:27 来源:WEB开发网核心提示:5)宏指令:IN、OUT、EXITCasl 中有进行输入、输出及结束程序等宏指令,而没有定义输入、输出符号指令,Casl汇编语言辅导(3),这类处理由操作系统完成,程序中出现宏指令时,屏蔽屏蔽高 3 位 BCD 码用 REG DS
5)宏指令:IN、OUT、EXIT
Casl 中有进行输入、输出及结束程序等宏指令,而没有定义输入、输出符号指令,这类处理由操作系统完成。
程序中出现宏指令时,Casl 生成调用操作系统的指令串,但是,生成的指令串字数不定。
执行宏指令时,GR 的内容保持不变,而 FR 的内容不确定。
(1)输入宏指令 IN:
[LABLE] | IN | ALABLE,NLABLE |
宏指令 IN 从输入装置上输入一个记录,纪录中的信息(字符)依次按字符数据的形式存放在标号为 ALABLE 开始的区域内,已输入的字符个数以二进制数形式存放在标号为 NLABLE 的字中,纪录之间的分隔符号不输入。
(2)输入宏指令 OUT:
[ LABLE] | OUT | ALABLE,NLABLE |
宏指令 OUT 将存放在标号为 ALABLE 开始的区域中的字符数据作为一个记录向输出装置输出,输出的字符个数由标号为 NLABLE 的字的内容指定。输出时,若要纪录间的分隔符号,由操作系统自动插入输出。
(3)宏指令 EXIT :
[LABLE] | 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】将存放在 GR2 所指的四个内存单元中的四位 BCD 码依从高到低顺序压缩到 GR0 中 。
START | |||
LEA | GR0,0 | ;GR0 清 0 | |
LEA | GR3,4 | ;循环计数器 | |
L1 | SLL | GR0,4 | ;将已处理过的 BCD 码移到高位 |
LD | GR1,0,GR2 | ;GR1 用作临时工作寄存器 | |
AND | GR1,C000F | ;屏蔽高 12 位 | |
ST | GR1,0,GR2 | ;对内存单元中的 BCD 码预处理 | |
ADD | GR0,0,GR2 | ;将已处理过的此位 BCD 码加到 GR0 低位 | |
LEA | GR2.1,GR2 | ;地址指针指向下一位 BCD 码 | |
LEA | GR3,-1,GR3 | ;循环计数器减 1 | |
JNZ | L1 | ;未处理完,继续 | |
RET | |||
C000F | DC | #000F | ;十六进制常数,屏蔽高 12 位二进制数 |
END |
更多精彩
赞助商链接