第4章_4+循环+子程序+DOS中断调用(X)

时间:2025-04-10

微机教程

第四章 汇编语言程序设计

汇编语言程序设计概述 汇编语言基本语法 汇编语言程序设计 BIOS及DOS功能调用 汇编语言程序设计实例

微机教程

循环结构程序设计 循环程序概述在程序中重复执行相同功能的一段代码,可用循环程序实现。循环程序 通常由五部分组成: 初始化部分——为程序操作、地址指针、循环计数、结束条件等设 置初始值。循环工作部分——循环程序主体,完成基本操作。 循 环 体

循环修改部分——修改循环工作部分的变量,为重复操作做准备。循环控制部分——修改计数器或判断循环结束条件,决定是否终止循环。

循环结束部分——循环终止后,对循环结果的处理部分。

微机教程

循环结构程序设计 循环程序基本结构起 始

起 始

起 始

初始化 循环工作循环修改未完

初始化 循环控制未完 完

初始化

循环修改循环控制完

循环工作 终 止 循环修改

未完

循环控 制完

循环工作

终 止

终 止

先执行后判断

先判断后执行

微机教程

循环结构程序设计 循环控制方式计数循环——重复次数已知,用计数值控制循环的开始与终止。

条件控制循环——重复次数未知或不确定,需找出循环控制的条件。

【例】 编写程序计算C=1+2+3+4+……+100解: 已知循环次数,采用计数循环控制。程序段如下:

MOVMOV MOV LOP: ADD INC

CX,100BX,1 AX,0 AX,BX BX

;确定循环计数器值;确定循环初值 ;和的初值

LOOP LOP

;循环控制

微机教程

计数循环的常见方法: LOOP 短标号

MOVL: …… ……

CX,N

LOOP L 减1循环 MOV L: …… CX,N L: 加1循环 MOV …… CX,-N

DECJNZ

CXL

INCJNZ

CXL

微机教程

【例】 将一个字符串拷贝到另一个存储区中,直到拷贝到字符“$”结束。解:无法确定循环次数,采用条件循环控制。程序段如下: MOV MOV SI,OFFSET ORGSTRIN DI,OFFSET DESSTRIN ;读源串地址 ;读目的串地址

LOP: MOVMOV INC

AL,[SI][DI],AL SI ;循环修改

INCCMP JNZ

DIAL,‘$’ LOP ;循环控制

微机教程

循环结构程序设计 多重循环循环体中又有循环称多重循环。在多重循环程序设计时,应分别考虑每 重循环的控制条件。通常内层循环要受外层循环的控制。【例】 在首地址为Addr的存储单元中有 N个数,编程序将此N个数按照从 小到大的次序排列。 解:采用冒泡排序法,从第一个数开始依次对相邻的两个数进行比较,如 果次序正确则不做任何操作,如果次序不正确则将此两个数交换位置。

微机教程

开 始

ACX←外循环次数 CX←CX-1

DI←最后一个数的地址 BX←0取BX位置上的数到AL 小于

N

CX==0?Y

与后一数比较 大于

结 束

交换两数位置

BX←BX+1 N

是否为最后的

数 ?Y

A

微机教程

DATA

SEGMENT Addr DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,N DEC CX LOOPl: MOV DI,CX ;设置外循环次数 MOV BX,0 ;设置内循环条件 LOOP2: MOV AL,Addr[BX] CMP AL,Addr[BX+1] JL CONT XCHG AL,Addr[BX+1] ;让大的数向地址高处移动 MOV Addr[BX],AL CONT: INC BX CMP BX,DI ;内循环判断 JB LOOP2 LOOP LOOP1 ;外循环控制条件 MOV AH,4CH INT 21H CODE ENDS END START

微机教程

【例】统计AX中 1 的个数。

起 始AX←3578H CL←0

MOV MOV L: OR JZ SHL

AX,3578H CL,0 AX,AX ;判断AX是否为0 EXIT AX,1 ;AX=0结束 ;最高位进CF

AX==0? N AX<< 1 N

Y

JNCINC JMP EXIT: INT

LCL L 20H

终 止

CF==1?Y CL←CL+1

微机教程

【例】BUF中有N个有符号数,分离其中的正负数,分别送入BUF1和BUF2中DATA SEGMENT BUF DB 12H, 34H, -56H, -98H, 096H, 68H, 56H, 80H N=$-BUF INC BX BUF1 DB N DUP(0) JMP CC BUF2 DB N DUP(?) BB: MOV [DI],AL DATA ENDS INC DI CODE SEGMENT CC: LOOP AA;DEC CX ASSUME CS:CODE,DS:DATA ;JNZ AA START: MOV DX,DATA MOV AH,4CH MOV DS,AX INT 21H LEA SI,BUF CODE ENDS LEA DI,BUF1 END START LEA BX,BUF2 MOV CX,N AA: MOV AL,[SI] (1)若DW定义BUF怎样修改? INC SI CMP AL,0 (2)能改为条件控制循环吗? JGE BB MOV [BX],AL

微机教程

子程序设计程序设计过程中常常把多次引用的相同程序段编成一个独立的程序段,当 需要执行这个程序段时,用调用指令(CALL)调用该程序段即可。具有这 种独立功能的程序段称为过程或子程序。

子程序适用范围适合编成子程序的程序有两种: ① 程序需要反复使用,这类程序编写成子程序可避免重复编写程序,并可 以节省存储空间。 ② 程序具有通用性,这类程序大家都要用到,如键盘管理程序、磁盘读写 程序、标准函数程序等,编成子程序后便于功能共享。

微机教程

子程序设计 子程序的结构子程序必须有一个名称,方便其他程序调用;子程序出口是一条返回指令 RET。 过程名 过程类型

NAME PROC NEAR (FAR) PUSH AX 现场保护 PUSH BX…… …… …… POP POP ……

程序部分

BX AX

现场恢复

RET NAME ENDP

必须用RET结束

微机教程

子程序设计 子程序的调用和返回主程序调用子程序通过CALL指令来实现,子程序执行结束后,通过RET 指令返回主程序,转到主程序中CALL指令的下一 …… 此处隐藏:2449字,全部文档内容请下载后查看。喜欢就下载吧 ……

第4章_4+循环+子程序+DOS中断调用(X).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219