第六章循环与分支程序设讣 1)分析题意,确定算法。这一步是能否编制出高质量程序的关键,因此不 应该一拿到题目就急于写程序,而是应该仔细地分析和理解题意,找出合 理的算法及适当的数据结构。 2)根据算法画出程序框图。这一点对初学者特别重要,这样做可以减少 出错的可能性。画框图时可以从粗到细把算法逐步地具体化 3)根据框图编写程序。 4)上机调试程序。任何程序必须经过调试才能检查出你的设计思想是否 正确以及你的程序是否符合你的设汁思想。在调试程序的过程中应该善于 利用机器提供的调试工具(如 DEBUG)来进行工作,你会发现它会给你提 供很大的帮助
第六章第一章循环与分支程序设计 基础知识 1)分析题意,确定算法。这一步是能否编制出高质量程序的关键,因此不 应该一拿到题目就急于写程序,而是应该仔细地分析和理解题意,找出合 理的算法及适当的数据结构。 2)根据算法画出程序框图。这一点对初学者特别重要,这样做可以减少 出错的可能性。画框图时可以从粗到细把算法逐步地具体化。 3)根据框图编写程序。 4)上机调试程序。任何程序必须经过调试才能检查出你的设计思想是否 正确以及你的程序是否符合你的设汁思想。在调试程序的过程中应该善于 利用机器提供的调试工具(如DEBUG)来进行工作,你会发现它会给你提 供很大的帮助
概述 、汇编语言程序设计的基本方法 顺序、分支、循环程序和子程分析问题 序的设计是汇编语言程序设计的基 本内容。 寻找解决问题的 思路、方法、算法 在此基础上还要掌握汇编语言 程序设计的基本方法和技巧,包 「描述算法 括递归子程序设计、COM和EXE 格式程序的结构和特点、多模块 编写程序实现算法 程序设计方法等。 设计测试数据 和预期计算结果 程序设计的解题基本步骤如下: 上机调试程序
分析问题 寻找解决问题的 思路、方法、算法 描述算法 编写程序实现算法 设计测试数据 和预期计算结果 上机调试程序 程序设计的解题基本步骤如下: 顺序、分支、循环程序和子程 序的设计是汇编语言程序设计的基 本内容。 在此基础上还要掌握汇编语言 程序设计的基本方法和技巧 ,包 括递归子程序设计、COM和EXE 格式程序的结构和特点、多模块 程序设计方法等。 一、汇编语言程序设计的基本方法 概述
概述 程序的基本结构 顺序结构程序 2、分支结构程序 3、循环(重复)结构程序 顺序结构分支结构循环(重复)结构
概述 二、程序的基本结构 1、顺序结构程序 2、分支结构程序 3、循环(重复)结构程序 顺序结构 分支结构 循环(重复)结构
第一节顺序结构程序设计 顺序结构程序完全按指令书写的前后顺 序执行每一条指令,是最基本、最常见 的程序结构 特点 顺序性、结构简单,只适应于简单问题 的处理 8例1计算 例2移位
第一节 顺序结构程序设计 • 顺序结构程序完全按指令书写的前后顺 序执行每一条指令,是最基本、最常见 的程序结构 • 特点 顺序性、结构简单,只适应于简单问题 的处理 例1 计算 例2 移位
例:X+Y+zW code segment assume cs: code, stack segment para stack ss: stack, ds: datal dw 64h dup(?) start: mov ax, datal stack ends mov ds, ax datal segment mov aX,Ⅹ W add ax, Y XYZW adc ax, W moy W. ax dw 7 mov ah. 4ch W int 2lh datal ends code ends end start
例:X+Y+Z W stack segment para stack dw 64h dup(?) stack ends data1 segment X dw 5 Y dw 6 Z dw 7 W dw ? data1 ends code segment assume cs:code, ss:stack,ds:data1 start:mov ax,data1 mov ds,ax mov ax,X add ax,Y adc ax,Z mov W,ax mov ah,4ch int 21h code ends end start
data segment 例:64位数据移位「 var db2lh,43h,65h,87h,78h,56h,34h,12h data ends code segment assume cs: code, ds: data start: mov ax, data moy ds. ax mov al, var[6 图示 mov var[7, al mov al, var [5 moy var[6, al mov al, var[4 moy var[5, al mov al, var[3] mov var [4, al
data segment 例:64位数据移位 var db 21h,43h,65h,87h,78h,56h,34h,12h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov al, var[6] mov var[7],al mov al, var[5] mov var[6],al mov al, var[4] mov var[5],al mov al, var[3] mov var[4],al 图示
mov al, var[2] 例:64位数据移 mov var[3, al 位 mov al, varel moy var[2, al mov al, var[ol moy var[ll, al 图示 mov byte ptr var[o, 0 mov ah, 4ch int 21h code ends end start 1234567887654321h 移位后3456788765432100h
mov al, var[2] mov var[3],al mov al, var[1] mov var[2],al mov al, var[0] mov var[1],al mov byte ptr var[0],0 mov ah,4ch int 21h code ends end start 12 34 56 78 87 65 43 21h 移位后 34 56 78 87 65 43 21 00h 图示 例:64位数据移位
程序结束的方法 程序执行完毕,正常结束要返回DoS,有两种方法 (1)使用PSP中的“INT20H”指令,实现用户程 序结束,返回DOS 方法:①将用户程序设置成一个远过程 ②程序开始时,执行如下指令 PUSH DS MOV AX 0 PUSH AX ③用户程序结束时,用RET指令
程序结束的方法 程序执行完毕,正常结束要返回DOS,有两种方法 (1)使用PSP中的“INT 20H”指令,实现用户程 序结束,返回DOS 方法:①将用户程序设置成一个远过程 ②程序开始时,执行如下指令 PUSH DS MOV AX,0 PUSH AX ③用户程序结束时,用RET指令
程序结束的方法 (2)使用DOs功能调用的“INT21H”指令,实现 用户程序结束,返回Dos 方法:在程序结束前,使用如下指令 MOV AH, 4CH INT 21H 注意:一般情况下,使用第2种方法结束用户程序
程序结束的方法 (2)使用DOS功能调用的“INT 21H”指令,实现 用户程序结束,返回DOS 方法:在程序结束前,使用如下指令 MOV AH,4CH INT 21H 注意:一般情况下,使用第2种方法结束用户程序
第二节:循环结构 初始化 循环的初始状态 循环体 循环的工作部分 修改部分 及修改部分 控制条件 计数控制循环 条件控制循环 结束
第二节:循环结构 结束 初始化 循环的初始状态 循环体 循环的工作部分 及修改部分 计数控制循环 条件控制循环 修改部分 控制条件 Y N