教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

第五章循环与分支程序设计

来源:网络收集 时间:2026-07-15
导读: 江西理工大学大一汇编课件! 第5章 循环与分支程序设计程序结构:顺序结构 循环结构 分支结构 子程序结构 …… 复合结构:多种程序结构的组合 江西理工大学大一汇编课件! 编制汇编语言程序的步骤:(1) (2) (3) (4) 分析题意,确定算法 根据算法画出程序框图

江西理工大学大一汇编课件!

第5章 循环与分支程序设计程序结构:顺序结构 循环结构

分支结构

子程序结构

……

复合结构:多种程序结构的组合

江西理工大学大一汇编课件!

编制汇编语言程序的步骤:(1) (2) (3) (4) 分析题意,确定算法 根据算法画出程序框图 根据框图编写程序 上机调试程序

三种模式: 1)DOS操作系统下的实模式; 2)80286开始的保护模式; 3)从80386开始的虚86模式。2

江西理工大学大一汇编课件!

5.1循环程序设计开 始

初始化

循环的初始状态

循环体

循环的工作部分及修改部分

N

控制条件

Y结 束

计数控制 特征值控制 地址边界控制

(1)DO-UNTIL结构3

江西理工大学大一汇编课件!

DO_WHILE结构开 始

初始 化

控制条件

Y

N循环体 结 束

(2) DO_WHILE结构 当循环次数有可能等于0的时候,应当用WHILE结构4

江西理工大学大一汇编课件!

5.1.2循环程序设计方法例5.1 把BX中的二进制数以十六进制的形式显示在屏幕上。BX1

23

4

循环左移4位5

江西理工大学大一汇编课件!

开始 初始化循环次数

BX循环左移4位最左边的4位转换为ASCII ASCII是A~F

Y加7 显示一个字符 循环次数=0

N

N

Y结束

江西理工大学大一汇编课件!

mov ch, 4 rotate: mov cl, 4 rol bx, cl mov al, bl and al, 0fh add al, 30h cmp al, 3ah jl printit add al, 7h printit: mov dl, al mov ah, 2 int 21h dec ch jnz rotate ret

指定返 回地址

Prognam segment Main proc far assume cs:prognam Start: push ds sub ax,ax push ax

;’0’-’9’ ASCII 30H-39H ;’A’-’F’ ASCII 41H-46H

Main endp Prognam ends end7

江西理工大学大一汇编课件!

例5.4 将正数n插入一个已整序的字数组的正确位置。Datarea segment x dw ? array_head dw 3,5,15,23,37,49,52,65,78,99 array_end dw 105 n dw 32 Datarea ends Prognam segment 确定返回地址 Main proc far Assume cs:prognam, ds:datarea Start: Push ds 不要这三句 Sub ax,ax 话报的错 Push ax Mov ax,datarea 不要这两句 话报的错 Mov ds,ax 段首地址8

江西理工大学大一汇编课件!

mov ax, n mov array_head-2, 0ffffh mov si, 0 compare: cmp array_end[si], ax jle insert mov bx, array_end[si] mov array_end[si+2], bx sub si, 2 jmp short compare insert: mov array_end[si+2], ax ret 返回到DOS操作 Main endp…9

江西理工大学大一汇编课件!

例5.5 设有数组x(x1, … , x10)和y(y1, … , y10),编程计算 z1=x1 + y1 z2=x2 + y2

z3=x3 - y3z4=x4 - y4 z5=x5 - y5 z6=x6 + y6 z7=x7 - y7 逻辑尺:0 0 1 1 0 1 1 1 0 0 标志位为1: 减法 标志位为0: 加法

z8=x8 - y8z9=x9 + y9 z10=x10 + y1010

江西理工大学大一汇编课件!

x y z logic_rule

dw dw dw dw

x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 00dch

mov bx, 0 mov cx, 10 mov dx, logic_rule next: mov ax, x[bx] shr dx, 1 jc subtract add ax, y[bx] jmp short result subtract: sub ax, y[bx] result: mov z[bx], ax add bx, 2 loop next

; 向前引用

江西理工大学大一汇编课件!

例5.7 将首地址为a的字数组从大到小排序(起泡算法,多重循 环) a 100,30,78,99,15,-1,66,54,189,256 mov cx, 10 ;CX←数组元素个数 dec cx ;元素个数减1为外循环次数 loop1: mov di, cx ;di保留外循环次数 mov bx, 0 loop2: mov ax, a[

bx] ;取前一个元素 cmp ax, a[bx+2] ;与后一个元素比较 jge continue ;前一个大于或等于后一个元素,则不进行交换 xchg ax, a[bx+2] ;否则,进行交换 mov a[bx], ax continue: add bx, 2 ;下一对元素 loop loop2 ;内循环尾 mov cx, di 12 loop loop1 ;外循环尾 dw

江西理工大学大一汇编课件!

5.2分支程序设计(1)CASE结构 (2)IF-THEN-ELSE结构

?

case 1 case 2

case n

Y

N

(3)地址跳跃表法 值与地址有对应关系的表13

江西理工大学大一汇编课件!

例5.10 根据AL寄存器中哪一位为1(从低位到高位)把程序 转移到8个不同的程序分支去 。(寄存器间接寻址)branch_table dw routine1 cmp al, 0 je continue Lea bx,branch_table shr al, 1 ;逻辑右移 jnb not_yet ;jnb=jnc jmp word ptr [bx];段内间接转移

dw routine2dw routine3 dw routine4 dw routine5 dw routine6 dw routine7 dw routine8

L:

not_yet :add jmp continue: routine1: routine2: bx, type branch_table L …… …… 14 ……

江西理工大学大一汇编课件!

(寄存器相对寻址)cmp al, 0 je continue mov si, 0 L: shr al, 1 ;逻辑右移 jnb add1 ;jnb=jnc jmp branch_table[si] ;段内间接转移 add1: add si, type branch_table jmp L continue: …… routine1: …… routine2: …… ……15

江西理工大学大一汇编课件!

(基址变址寻址)

cmp al, 0 je continue lea bx, branch_table mov si, 7* type branch_table mov cx, 8 L: shl al, 1 ;逻辑左移 jnb sub1 ;jnb=jnc jmp word ptr [bx][si] ;段内间接转移 sub1: sub si, type branch_table loop L continue: …… routine1: …… routine2: …… ……

…… 此处隐藏:1414字,全部文档内容请下载后查看。喜欢就下载吧 ……
第五章循环与分支程序设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1336345.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)