微机原理习题答案1234章 下载本文

按“字”存放数据,则每个数据的位移量是:0、2、4、6、8。对于输入参数N,计算位移量的公式是N=(N-1)*2。

当输入‘1’时,跳转到标号G1。调用子程序CHGLTR,完成将输入字符串中的小写字母变换成大写字母。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G1;

当输入‘2’时,跳转到标号G2。调用子程序MAXLTR,完成在输入字符串中找最大值。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G2;

当输入‘3’时,跳转到标号G3。调用子程序SORTNUM,完成输入数据组的排序。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G3。

当输入‘4’时,跳转到标号G4。调用子程序TIMCHK,完成时间的显示。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G4。

当输入‘5’时,跳转到标号G5。结束程序的运行,返回操作系统。 其流程框图见图3-1。

- 44 -

START 初始化 E 调用子程序MENU 设置光标位置(41,10) 带回显的控制台输入 (AL) ← 输入字符 Y (AL) < ‘1’ N (AL) > ‘5’ N 将跳转表TABLE的偏移地址送入(BX) (AL) ← (AL) – ‘1’ (AL) ← (AL) * 2 AL按符号扩展成AX (BX) ← TABLE (BX) ← (BX) + (AX) Y N=1 A B N=2 N=5 C N=3 D N=4 END 图3-1 主程序流程框图

- 45 -

A 调用子程序CHGLTR 带回显的控制台输入 (AL) ← 输入字符 N B 调用子程序MAXLTR 带回显的控制台输入 (AL) ← 输入字符 N (AL) = ESC ? Y E C 调用子程序SORTNUM 带回显的控制台输入 (AL) ← 输入字符 (AL) = ESC ? Y E D 调用子程序TIMCHK 带回显的控制台输入 (AL) ← 输入字符 (AL) = ESC ? Y E N (AL) = ESC ? Y E N 图3-1(续) 主程序流程框图

※子程序MENU的编程思路:

设置显示器显示方式为80*25彩色文本方式,清屏。逐行设置光标位置,使提示文档左对齐整体居中。输出1-5的提示文档,再输出输入N的提示。其流程框图见图3-2。

START 初始化 清屏 设置光标位置(5,5) 显示提示字符串STRING1 设置光标位置(5,6) 显示提示字符串STRING2 M 设置光标位置(5,7) 显示提示字符串STRING3 设置光标位置(5,8) 显示提示字符串STRING4 N N 设置光标位置(5,9) 显示提示字符串STRING5 设置光标位置(5,10) 显示提示字符串子程序MENU返回 M 图3-2 子程序MENU流程框图

- 46 -

※子程序CHGLTR的编程思路: 设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,使提示文档左对齐整体居中。输出输入字符串提示文档,读取输入字符串并将其放入KEYBUF。在输入字符串尾加结束标志$,输出输入字符串。从前往后,依次取字符串中的每个字符,若其为小写字母,则将其ASCII码减去20H。输出变换后的字符串。最后输出说明文档。 其流程框图见图3-3。

START 初始化 清屏 设置光标位置(5,5) 显示提示字符串IN_STR 设置光标位置(5,6) KEYBUF ← 输入字符串 (AL) ← 输入字符串长度 AL按符号扩展成AX (CX) ← (AX) 在字符串尾加结束标志’$’ 设置光标位置(5,7) 显示提示字符串PRESTR 显示输入的字符串 (BX) ← KEYBUF + 2 ((BX)) ≥ ‘a’ Y ((BX)) ← ((BX)) ∧ 0DFH N (BX) ← (BX) + 1 N (CX) ← (CX) – 1 (CX) = 0 ? Y 设置光标位置(5,8) 显示提示字符串NEWSTR 显示变换后的字符串 设置光标位置(5,9) 显示提示字符串HINSTR 子程序CHGLTR返回 图3-3 子程序CHGLTR流程框图

- 47 -