循环程序设计

上机实验07 循环程序设计

 

知识提要:

本节主要对循环结构的组成及其设计方法加以介绍,其知识要点有:

1、循环程序的基本结构通常由3部分组成

    1. 初始化部分

建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.

    1. 循环体

循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。

①循环工作部分:完成程序功能的主要程序段,用于执行程序的实际任务;

②修改部分:对循环参数进行修改,并为下一次循环做准备;

③循环控制部分:判断循环结束条件是否满足。通常判断循环结束方法:

  1. 用计数控制循环;循环是否进行了预定的次数。
  2. 用条件控制循环。循环终止条件是否满足。

3)结束处理处理部分

     主要是对循环的结果进行处理。也可没有此部分。

2、循环控制指令:

指令格式

执行操作

循环结束条件

LOOP标号

CX=CX-1;若CX=0,则循环

CX=0

LOOPNZ/LOOPNE 标号

CX=CX-1;若CX=0且ZF=0,则循环

CX=0或ZF=0

LOOPZ/LOOPE标号

CX=CX-1;若CX=0且ZF=1,则循环

CX=0或ZF=1

JCXZ 标号

仅测试(CX)=0,若是,则转移到目标地址,否则就顺序执行

 

3、循环控制可以分为:计数循环和条件循环。作为计数循环,一般是指循环次数是已知的情况,在程序设计的的循环时,先应将循环次数送入计数器CX中进行计数,在循环体中使用LOOP等循环指令。当然,也可以通过其他方式来进行,如cx←cx-1,jnz 等结合实现。

 

一、实验要求和目的

    1.了解汇编语言循环程序设计的基本流程;

    2.熟悉汇编语言循环基本指令的使用方法;

    3.掌握利用汇编语言的循环指令完成循环程序设计方法。

二、软硬件环境

    1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;

    2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。

三、实验涉及的主要知识单元

熟练使用循环指令和跳转等指令来实现循环,理解循环体结构中的初始化部分、循环体、结束部分。能结合前面分支结构相关的知识点,完成对循环结构的理解和掌握。

同时对循环结构中地址指针的设置,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX)和数据寄存器(AX/DX)初值的设置方法等。

循环程序设计示例:

设VARY中有一组8位的符号数,编程统计其中 正数、负数、零的个数,分别存 VM、VN、VK变量中。

分析:设定此数组的元素匀为字节数据,则数组VARY中的数据个数用CNT  EQU  $-VARY求出,则循环次数为CNT次。在程序中,要将CNT的值送入CX中。将数组VARY中元素挨个与0比较,利用状态标志寄存器中的ZF位求出零的个数,利用SF位求出正、负数的个数。

具体程序设计sy07_1.ASM:

stack segment para  stack

   dw  20H dup(0)

stack ends

data segment

   vary  db 23h,78h,56h,0abh,00h,0cdh,59h,14h,98h,0efh,00h,0c0h

cnt equ $-vary

vm  db ?

vn  db ?

vk db ?

data ends

code segment

   assume cs:code,ds:data,ss:stack

start: mov ax,data

mov ds,ax

mov bx,0

mov dl,0

lea si,vary

mov cx,cnt

lop1:

cmp byte ptr[si],0

je zero

js lop2

inc bh

jmp  next

lop2:

inc bl

jmp next

    zero:

           inc dl

    next:

           inc si

loop lop1

mov vm,bh

mov vn,bl

mov vk,dl

mov ah,4ch

int 21h

code ends

end start

四、实验内容与步骤

1、实验内容

(1)单步运行调试上面程序sy07_1.ASM,  给程序的语句加上注释;

(2)编写程序,计算数组ARRAY中各数的和(参看书上P364例10-1)。程序保存为sy07_2.ASM;

(3)编写程序,统计字符串STRING中大写字母的个数(参看书上P366例10-2)。程序保存为sy07_3.ASM;

 

五、实验要求与提示

1、实验要求

    编写好程序好,单步运行一下,观察各语句运行的情况,掌握各比较指令、循环指令、跳转指令的功能和用法。

2、实验提示

(1)计算字符串长度中字符串应以$结尾;

(2)要用计数控制,则应知道循环次数,用CNT EQU $-ARRAY来进行;若数据类型是字,则循环次数还应除以2。

 

3、作业提交

把完成后的sy07_1.ASM、sy07_2.ASM、sy07_3.ASM提交。

1.实验截图

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务