表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机上实现的交叉汇编程序的支持将是很困难的。提供交叉汇编程序的另一个目的,是准备将其源码提供出来,为大家具体深入地学习汇编程序的设计与实现提供帮助。
|