(2066)INC R3 ; 得到下一个参加累加的数
ADD R1, R3 ; 累加计算
CMP R3, R2 ; 判是否累加完
JRNZ 2066 ; 未完, 开始下一轮累加
RET
运行过后, 可以用 R 命令看 R1 中的累加结果。
例子 5: 设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域。
E 20F0 (送入将被显示的 6 个字符‘A’~‘F’到内存 20F0开始的存储区域中) 0041 0042 0043 0044 0045 0046
A 2080
(2080)MVRD R3, 0006 ;指定被读数据的个数
MVRD R2, 20F0 ;指定被读、写数据内存区首地址
(2084)LDRR R0,[R2] ;读内存中的一个字符到 R0 寄存器
MVRD R8, 2100 ;指定子程序地址为2100 *此条指令与下一条指令可以改为CALA CALR R8 ;调用子程序,完成显示、转换并写回的功能
DEC R3 ;检查输出的字符个数
JRZ 208C ;完成输出则结束程序的执行过程
INC R2 ;未完成,修改内存地址
JR 2084 ;转移到程序的 2086 处,循环执行规定的处理
(208C)RET
A 2100 ; 输入用到的子程序到内存 2100 开始的存储区
(2100)OUT 80 ;输出保存在 R0 寄存器中的字符
MVRD R1,0020
ADD R0,R1 ;将保存在 R0 中的大写字母转换为小写字母
STRR [R2],R0 ;写 R0 中的字符到内存,地址同 LOD 所用的地址
(2105)IN 81 ;测试串行接口是否完成输出过程
SHR R0
JRNC 2105 ;未完成输出过程则循环测试
RET ;结束子程序执行过程,返回主程序
运行过程中,可以直接看到屏幕上显示的内容,运行过后, 再用 D 20F0 看内存的 20F0 区 域中保存的运行结果:
0061 0062 0063 0064 0065 0066
上述 5 个例子, 都是用监控程序的 A 命令完成输入源汇编程序的。在涉及到汇编语句标号的地方, 不能用符号表示, 只能在指令中使用绝对地址。使用内存中的数据, 也由程序员给出数据在内存中的绝对地址。显而易见, 对这样的极短小程序矛盾并不突出, 但很容易想到,对很大的程序, 一定会有较大的困难。
在用 A 命令输入汇编源语句的过程中, 有一定用机经验的人, 常常抱怨 A 命令中未提供适当的编辑功能, 这并不是设计者的疏漏, 因为我们并不准备在这种操作方式下支持设计较