• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 循环程序设计

循环程序设计

作者:汇编爱好者 字体:[增加 减小] 来源:互联网 时间:2017-06-17

汇编爱好者通过本文主要向大家介绍了循环程序设计实验,汇编循环程序设计,循环程序设计实验报告,循环程序实验报告,c语言循环程序设计等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

强制 CPU 重复执行同一指令集合的一种程序结构,它可以使许多重复性工作的程序大为简化。
循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体,循环指令和转移指令可以实现循环控制;还可以采用 MASM 6.x 提供的循环控制伪指令实现
循环结构
.model small
.stack
.data
sum dw ?
.code
.startup
xor ax,ax ; 被加数 AX 清 0
mov cx,100
again: add ax,cx
; 从 100,99,...,2,1 倒序累加
loop again
mov sum,ax ; 将累加和送入指定单元
.exit 0
end

例 1 : 在内存 40000H 开始的顺序 30 个单元中存放着 8 位无符号数,若将它们的和放在 DX 中,其程序如下:  

MOV AX , 4000H

MOV DS , AX

MOV SI , 0000H

MOV CX , 30

XOR AX , AX

GOON : ADD AL , [SI]

ADC : AH , 00H

INC SI

DEC CX

JNZ GOON

MOV DX , AX

HLT

例 2 :在 DS 所决定的数据段,从偏移地址 BUFFER 开始顺序存放 100 个无符号的 16 位数,现欲编程序将 100 个字按大小顺序排列:

LEA DI , BUFFER

MOV BL , 99

NEXT0 :

MOV SI , DI

MOV CL , BL

NEXT3 :

MOV AX , [DI]

;第一个数 -->AX

ADD SI , 2

CMP AX , [SI]

;第一个数同第二个数比较

JNC NEXT5

;第一个数 第二个数,转 NEXT5

MOV DX , [SI]

;若第一个数 < 第二个数,第二个数 --> DX

MOV [DI] , DX

; DX--> 第一个位置

MOV [SI] , AX

NEXT5 :

DEC CL

JNZ NEXT3

; CL 0

INC DI

INC DI

DEC BL

JNZ NEXT0

HLT

例 3 . 求 1-100 的和
计数控制循环
, 循环次数固定
mov ah,1 ; 从键盘输入一个字符
int 21h
mov bl,al ;BL ← AL =字符的 ASCII 码
;DOS 功能会改变 AL 内容,故字符 ASCII 码存入 BL
mov ah,2
mov dl,':' ; 显示一个分号,用于分隔
int 21h
mov cx,8 ;CX ← 8 (循环次数)
again: shl bl,1 ; 左移进 CF ,从高位开始显示
mov dl,0 ;MOV 指令不改变 CF
adc dl,30h ;DL ← 0 + 30H + CF
;CF 若是 0 ,则 DL ← '0' ;若是 1 ,则 DL ← '1'
mov ah,2
int 21h ; 显示
loop again ;CX 减 1 ,如果 CX 未减至 0 ,则循环

例 4: 用二进制显示从键盘输入的一个字符的 ASCII 码
mov bx,offset string
again: mov al,[bx] ; 取一个字符
or al,al ; 是否为结尾符 0
jz done ; 是,退出循环
cmp al,'A' ; 是否为大写 A ~ Z
jb next
cmp al,'Z'
ja next
or al,20h
; 是,转换为小写字母(使 D5=1 )
mov [bx],al ; 仍保存在原位置
next: inc bx
jmp again ; 继续循环
done: .exit 0
例 5. 大小写
条件控制循环 , 利用标志退出
冒泡法
“冒泡法”是一种排序算法,不是最优的算法,但它易于理解和实现
冒泡法从第一个元素开始,依次对相邻的两个元素进行比较,使前一个元素不大于后一个元素;将所有元素比较完之后,最大的元素排到了最后;然后,除掉最后一个元素之外的元素依上述方法再进行比较,得到次大的元素排在后面;如此重复,直至完成就实现元素从小到大的排序
这需要一个双重循环程序结构
冒泡法的排序过程
比较遍数

序号 数 1 2 3 4
1 32 32 16 15 8
2 85 16 15 8 15
3 16 15 8 16 16
4 5 8 32 32 32
5 18 85 85 85 85
mov cx,count ;CX ←数组元素个数
dec cx ; 元素个数减 1 为外循环次数
outlp: mov dx,cx ;DX ←内循环次数
mov bx,offset array
inlp: mov al,[bx] ; 取前一个元素
cmp al,[bx+1] ; 与后一个元素比较
jna next
; 前一个不大于后一个元素,则不进行交换
xchg al,[bx+1] ; 否则,进行交换
mov [bx],al
next: inc
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 循环程序的设计
  • 循环程序设计

相关文章

  • 2017-06-28汇编源代码之CIH文件型病毒检测消除程序
  • 2017-06-28给程序加个图标
  • 2017-06-17无条件转移指令
  • 2017-06-28(汇编源代码 )PRINT FILE PROGRAM (打印文件)
  • 2017-06-28汇编教程:连接数据源
  • 2017-06-28汇编源码系列之inthand
  • 2017-06-28汇编与C语言的配合使用
  • 2017-06-178086指令系统
  • 2017-06-28汇编的任务状态段和控制门
  • 2017-06-28汇编源码系列之dossym

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 汇编教程:使用语句
    • 汇编源码系列之circle
    • 事件对象在多线程编程中的应用
    • 汇编源码系列之basmain
    • 字符数据
    • 汇编教程之处理键盘输入消息
    • 消息钩子使用教程
    • 汇编语言学习指南(三)
    • MASM-两个16位二进制数减法模拟
    • 汇编教程:虚拟设备驱动程序结构

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有