基本汇编语言程序设计 转入分支:按输入的数字转入不同分支 ①按输入的数字求出分支相对 tabe l的偏移量: disp1为0,disp2为2,dsp3为4.如输入数字2,则偏 移量为(2-1)×2=2,将求出的偏移量存入bx ②执行指令 imp tabe[bx],设bx=02 则|P←[tabe|+bx] 即|P←2500H ③0S:2500H为分支Dsp2的入口,CPU即执行分 支D|SP2 16 回第四章
第 四 章 基 本 汇 编 语 言 程 序 设 计 16 多分支(e) 转入分支:按输入的数字转入不同分支 ①按输入的数字求出分支相对tabel的偏移量: disp1为0,disp2为2,disp3为4…,如输入数字2,则偏 移量为(2-1)×2=2,将求出的偏移量存入bx。 ②执行指令jmp tabel[bx],设bx=02 则IP← [tabel+bx] 即IP← 2500H ③CS:2500H为分支Disp2的入口,CPU即执行分 支DISP2 返回第四章
基本汇编语言程序设计 4.3循环程序设计(重复执行的程序段) 1.循环程序的组成 ◆初始化部分:设置循环条件、次数、初值等。 令循环体部分:重复执行的代码,含循环条件的 修改等。 ◇循环控制部分:判断循环条件,决定是否继续。 2.两种循环结构 1)“先循环、后判断”结构 相当于高级语言的“直到型”循环 2)“先判断、后循环”结构 相当于高级语言的“当型循环”,可实现0次循 环
第 四 章 基 本 汇 编 语 言 程 序 设 计 17 4.3 循环程序设计 4.3 循环程序设计(重复执行的程序段) 1.循环程序的组成 ❖初始化部分:设置循环条件、次数、初值等。 ❖循环体部分:重复执行的代码,含循环条件的 修改等。 ❖循环控制部分:判断循环条件,决定是否继续。 2.两种循环结构 1) “先循环、后判断”结构 相当于高级语言的“直到型”循环 2) “先判断、后循环”结构 相当于高级语言的“当型循环”,可实现0次循 环
基本汇编语言程席设计 初始化部分 初始化部分 循环体部分 (修改循环条件) 循环 条件成立? 循环 条件成立? 循环体部分 修改循环条件) 18
第 四 章 基 本 汇 编 语 言 程 序 设 计 18 两种循环结构 初 始 化 部 分 循 环 条件成立? 循 环 体 部 分 (修改循环条件) N Y 循 环 条件成立? 初 始 化 部 分 循 环 体 部 分 (修改循环条件) Y N
基本汇编语言程席设计 3循环程序设计 编写循环程序的关键在于循环的控制。 循环次数已知:可用L00P指令,Q计数。 如教材例4.5。 循环次数和2F标志:可用L00PZ、L00PNZ指令。 如教材例4.6。 ◆循环次数未知:通常要采用各类条件转移指令 实现循环控制。如教材例4.7,字符串以0结尾; 例4.9,字符串以$结尾。 19
第 四 章 基 本 汇 编 语 言 程 序 设 计 19 循环程序设计 3.循环程序设计 编写循环程序的关键在于循环的控制。 ❖循环次数已知:可用LOOP指令,CX计数。 如教材例4.5。 ❖循环次数和ZF标志:可用LOOPZ、LOOPNZ指令。 如教材例4.6。 ❖循环次数未知:通常要采用各类条件转移指令 实现循环控制。如教材例4.7,字符串以0结尾; 例4.9,字符串以$结尾
基本汇编语言程序设计 循环程序例题分析 例4.5:计算100个数字之和。 仅用循环次数控制,且循环次数已知,比较简单。 例4.6:确定一个字变量中为1的最低位数。 从最低位向高位依次测试,最多测试16次;测试 到某位为1,即可结束程序,测试结果用ZF标志反映, 因此可用L00PE或L00PZ控制循环(结果非0,退出)。 例4.7:将一个字符串中的所有大写字母改为小写 字母,字符串以0结尾。 循环次数未知,应使用条件判断控制循环;循环 结构应使用“先判断、后执行”的结构;通常,采用 条件判断控制循环时,往往采用“先判断、后执行” 的循环结构
第 四 章 基 本 汇 编 语 言 程 序 设 计 20 例题分析 循环程序例题分析: 例4.5:计算100个数字之和。 仅用循环次数控制,且循环次数已知,比较简单。 例4.6:确定一个字变量中为1的最低位数。 从最低位向高位依次测试,最多测试16次;测试 到某位为1,即可结束程序,测试结果用ZF标志反映, 因此可用LOOPE或LOOPZ控制循环(结果非0,退出)。 例4.7:将一个字符串中的所有大写字母改为小写 字母,字符串以0结尾。 循环次数未知,应使用条件判断控制循环;循环 结构应使用“先判断、后执行”的结构;通常,采用 条件判断控制循环时,往往采用“先判断、后执行” 的循环结构