顺序程序设计
举例:
利用学号查学生的数学成绩表
算法分析:首先在数据段中建立一个成绩表TABLE,在表中各学生的成绩按照学号从小到大的顺序存放。要查的学号存放在变量NUM中,查表的结果放在变量MATH中。
1 | TITLE TABLE LOOKUP |
分支程序设计
转移指令
格式: JMP 目标
1 | : |
用比较/测试指令+条件转移指令实现分支
数据转移
当源块首地址<目的块首地址时,从数据块末地址开始传送。反之,则从首地址开始传送
注:跳转指令一览
用跳转表形成多路分支
LOOPZ/LOOPE
要用到LOOPE/LOOPZ:在ZF为1且CX不等于0时(条件成立或结果为零)继续循环。如果当前字符是空格,且字符串没有遍历完(CX初始化为字符串长度),就继续向下遍历
LOOPNZ/LOOPNE
编写程序,计算两个字节数组ARY1和ARY2对应元素之和,一直计算到两数之和为0或数组结束为止。并将和存入数组SUM中,将该数组的长度存放在NUM单元中
要用到LOOPNZ/LOOPNE,如果当前数组没有遍历完或者当前对应位置两数之和不是0
JCXZ
防止一开始做循环,CX里面的值就是0,那么0-1=0FFFFH先入死循环
1
2
3
4
5
6
7程序结构为:
..........
MOV CX,COUNT
JCXZ NEXT
LOP: ..........
LOOP LOP
NEXT: ..............
选用CX计数控制循环
关键代码
条件控制循环
题干:
将字单元VARW 中含1的个数统计出来,存入CONT单元中
思想:
本例中通过将字单元各位逐位移入最高位来判断。为了减少循环次数,循环中加上了判断各位是否全为0,这样可使低位为全0时的循环次数减少。
多重循环
题干:
设计