表3.3 可用的子程序调用地址及所用参数

子程序名
调用地址 输入参数 输出参数 修改寄存器
实现的功能
INCH
OUTCH
SHDW
SHUP
WSTR
INTNE
NUMASC
DISPCH
ASCNUM
UPCASE
005AH 无
009BH 字符在R0低字节
020CH R0
0213H R0
021AH R2:字符串首地址
0224H R2:缓充区首地址
02C9H R15:待显示的数据
02DFH R0:四位十六进制数
02F0H R10:串字节地址
0250H R0:ASCII码
字符在R0低字节 无
无       无
R0       无
R0       无
无       R2
R2:字符个数   R2
无       无
R0相应的ASCII  无
R15相应二进制数 R0
R0大写ASCII码  无
输入一个字节到R0
显示一字符
R0右移8位
R0左移8位
显示字符串(以0结束)
输入字符串, 回车结束
R15转成ASCII并显示
R0内容转ASCII并显示
ASCII到二进制转换
大写转换

  在表3.3的与I/O有关的子程序中,一切I/O操作只能在控制台终端进行,若需用非控制台终端进行I/O操作,则在调用这些子程序之前先把内存0F82H单元(表示控制台在哪个串行口)的值求反,然后再调用,调用之后再求反,恢复原来的值。

  在类似DEBUG方式下,汇编程序中的转移指令和子程序调用,只能用绝对地址,因为它不支持伪指令,即不能为地址定义符号名。例如:

  CALL 005A ; 用于输入一个字符到R0低位字节
  CALL 0224 ; 用于输入一个以回车结束的字符串,开始时,R2存放串的首地址;
       ; 输入完成后,R2中为串的长度

  当教学计算机系统把PC机用作自己的仿真终端时,PC机除了提供前述的计算机终端的全部操作功能外,实验人员还可以使用在PC机上提供的一个交叉汇编程序ASEC.EXE,它用PC机指令设计,在PC机上运行, 能对教学计算机的汇编语言的程序完成汇编,并生成教学计算机的指令代码。当把汇编生成的代码传送到教学计算机指定内存区域之后,就可以予以执行。这种编程方法的好处主要体现在两个方面:一是充分利用了IBM/PC机的已有功能,如较强的编辑功能,好用的文件系统和磁盘设备等;二是我们在PC机上,用IBM/PC的指令系统为教学机设计了一个很好的交叉汇编程序ASEC。它是一个符号汇编程序,不仅能对教学机已实现的53条指令进行汇编,而且还提供了6条非常有用的伪指令,并允许在汇编语句中使用语句标号,这就能有效地避免直接使用绝对地址值(在类似DEBUG方式下是不支持的)。这对开发运行在教学计算机系统上较大的汇编程序是很必要的。最明显的例子是开发教学计算机系统本身的监控程序,若没有在PC机上实现的交叉汇编程序的支持将是很困难的。提供交叉汇编程序的另一个目的,是准备将其源码提供出来,为大家具体深入地学习汇编程序的设计与实现提供帮助。