4–3汇编语言程序设计的基本方法.ppt
文本预览下载声明
第四章 程序设计的基本方法;4.4 汇编语言程序设计方法;设计一个程序要点:
认真分析问题的需求,选择好解决方法;
针对选定的算法,编写高质量的程序。
一个高质量的程序不仅要满足设计的要求,而且还应尽可能实现以下几点:
(1)结构清晰、简明、易读、易调试。结构好
(2)执行速度快。 效率高
(3)占用存储空间少。 资源少;(1)分析问题,选择合适的解题方法。
(2)根据具体问题,确定输入输出数据的格式。
(3)分配存贮区并给变量命名(包括分配寄存器)。
(4)绘制程序的流程图,即将解题方法和步骤用程序流程图的形式表示出来。
(5)根据流程图编写程序。
(6)静态检查与动态调试。;几种框图符号;分支程序的特点:根据不同情况作出不同的处理,程序结构分成了若干支路。
分支的结构形式:
(1) (2)
结构特点:
程序运行方向是向前的,条件确定,只能执行分支中的一个。
机器根据不同的情况作出判定,有选择的执行相应的分支。
这类程序称之为分支程序。;(1)分支由条件转移指令产生,不同条件通过FLAGS的标志位状态(0或1)反映出来;
(2)转移指令不影响FLAGS的标志位,可连续使用转移指令,产生多个分支。
例:可以产生如下的多个分支。
CMP BYTE PTR ARRAY[BX], 0
JLE L1 ; 小于等于0,转移到L1
┇分支1 ; 大于0
L1: JL NEXT ; 小于0,转移到NEXT
┇分支2 ; 等于0
NEXT:
┇分支3 ; 小于0;选择合适的转移指令;
为每个分支安排出口;
将分支中的公共部分尽量放到分支前或分支后的公共程序段中;
流程图、程序对应;
调试时,逐分支检查。; 特点:
(1)改变程序的执行顺序,即改变指令指针CS:IP的值;
(2)不改变标志位。
;转移指令;1 无条件转移指令;③某些条件转移指令转移的范围超过它规定的范围时, 用JMP搭桥。
例:JL L1 ; 小于0时转L1
┇
L1: ……
可改为如下指令串:
JGE L0 ; 大于等于0时转L0
JMP L1 ; 小于0时无条件转L1
L0: ……
┇
L1: ……;根据所处的位置分类:
段内转移:要转移的目的地址与指令本身在同一段;
段间转移:要转移的目的地址与指令本身在不同段。
根据寻址的方式分类:
直接方式转移:转移到标号。
间接方式转移:从存储器或寄存器中得到转移目的地的段地址和偏移地址。;格式;例:
JMP NEXT ——直接方式的无条件转移指令
JMP WORD PTR [BX] ——段内间接转移指令(16位段)
JMP DWORD PTR [BX]——DS:[BX]指向的双字单元中存放着EA和段首址(16位段);2 条件转移指令 ;2 条件转移指令;2 简单条件转移;JZ/JE ZF=1时,转移
JNZ/JNE ZF=0时,转移
JS SF=1时,转移
JNS SF=0时,转移
JO OF=1时,转移
JNO OF=0时,转移
JC CF=1时,转移
JNC CF=0时,转移
JP/JPE PF=1时,转移
JNP/JPO PF=0时,转移; JZ L1
MOV AX , 0
……
L1:;特点:
① 根据单一标志位确定转移方向;
② 当超出转移范围时,可用JMP搭桥;
③ 不能作段间转移,不得作间接转移;
④ 不影响FLAGS的标志位,可连续使用转移指令,产生多个分支。;例:分析以下程序段,指出所完成的功能。 ;无符号数条件转移指令往往跟在比较指令之后;
根据与无符号数特征有关条件标志CF和ZF的组合决定转移方向。
JA / JNBE 短标号
当 CF=0 且 ZF=0时,转移
JAE / JNB 短标号
显示全部