目录
一、顺序程序设计
二、分支程序设计
1. 用比较/测试命令+条件转移指令实现分支
2. 采用跳转表实现多路分支
三、循环程序设计
1. 计数循环程序设计
2. 条件判断循环程序设计
四、子程序设计
1. 子程序设计举例
2. 主程序和子程序设计举例
一、顺序程序设计
举例:利用学号查询学生数学成绩表。
学号 1 → 偏移量 = 0
二、分支程序设计
1. 用比较/测试命令+条件转移指令实现分支
(1)单分支结构
举例:计算字单元 DMem 中带符号数的绝对值,并将结果存储于数据段 RESULT 中。
完整的源程序必须定义堆栈段,否则将会出现编译警告。
需要注意的是,条件满足时转移,否则执行下一条语句。
因此,需要合理选择分支条件,同时理解与高级语言的差别。
(2)双分支结构
举例:编写一个能够显示 BX 二进制最高位的程序段。
写法2:AND BX,8000H
2. 采用跳转表实现多路分支
举例:设某程序有 10 路分支,试根据变量 N 的值(1~10),将程序转移到其中的一路分支去。
初始化部分:
程序部分:
橙色部分:
三、循环程序设计
1. 计数循环程序设计
举例:计算 1~100 数字之和,并将结果存入字变量 SUM 的程序段。
LOOP:① CX - 1 ② 判断 CX 是否为 0
2. 条件判断循环程序设计
举例:数据段的 ARY 字节数组中存放有 10 个无符号数,试找出其中最大者送入 MAX 字节单元。
初始化部分:
程序部分:
四、子程序设计
-
子程序是程序的一部分,是完成特定功能的程序段,它能够在程序中的任何地方被调用。
-
子程序的调用与返回是由指令 CALL 和 RET 来完成的。
-
子程序中一般都要使用寄存器,除了要返回参数的寄存器外,在子程序设计的开始部分,要将用到的寄存器进行压栈保护,在子程序结束返回调用程序之前要进行出栈恢复。
-
子程序和调用程序直接的信息传送称为参数传递。
1. 子程序设计举例
举例:实现一个显示回车和换行功能的子程序。
先完成主要程序,再看需要用到哪些寄存器。
2. 主程序和子程序设计举例
举例:将两个给定的二进制数 BIN1 和 BIN2(8 位和 16 位)逐位转换为 ASCII 码字符串,并存储于 ASCBUF 中。
初始化部分:
主程序部分:
原理说明:
子程序部分: