顺序结构
- 从键盘读入一个2位的十进制的正整数,
存入BL中。
思路:逐位读取
要点:将字符转化为对应的数字
字符的后四位刚好对应其数字
分支结构
单分支
就是一共两个分支,其中一个分支不需要处理
例:计算AX的绝对值
思路分两个支路,正的时候不处理,负的时候取其补码(相反数)
双分支
两个都要处理,所以不能像单分支那样一个分支直接跳到最后。
例:显示BX最高位
思路,一个分支将dl赋值为1另一个分支赋值为0,最后显示
多分支
例:根据键盘输入的1~8数字转向不同的处理程序
思路:
1.写出8个分支,最后都有跳转向结尾的jmp指令,然后将这些标号给地址表。
2.将输入的字符转化为对应数字,然后得到对应地址表中的位置
3.跳转到地址表对应的分支处。
循环结构
例:将一个字符串中所有大写字母改为小写
思路:逐位判断,如果是小写就直接下一轮,否则就转为小写再下一轮直到读到结尾。
例二:把BX中的二进制数以十六进制的形
式显示在屏幕上
思路:将bx从高到低4位4位地转化为对应的十六进制字符并显示。
子程序结构
就是调用函数
函数格式:
在过程定义体内,必须有一条RET指令
能被执行到。
-
调用时,最好不要强制改变调用类型。
-
子程序保护现场。push,pop
-
堆栈操作指令必须配对。(不清楚,估计是指上面的push和pop要对应)
-
定义允许嵌套和递归
接下来逐一介绍:
通过内存
用寄存器
用堆栈
传进来的参数如何获取
需要一个能在栈段里动的寄存器,SP作为栈顶指针不能随便动,所以
就用BP了,但在此之前先将BP的原址存起来。
于是我们可以根据call的类型来得到BP加上几才能到达参数的地方
返回值输出
汇总:
例
例:从键盘输入有符号十进制数子程序
思路:
关键:如何将一个数字乘10:x8+x2
例:输出有符号十进制数子程序
提示: