清华大学出版社 TSINGHUA UNIVERSITY PRESS 第5章循环与分支程序设计 循环程序设计 分支程序设计
• 循环程序设计 • 分支程序设计 第5章 循环与分支程序设计
清华大学出版社 TSINGHUA UNIVERSITY PRESS 程序结构 顺序结构 循环结构 分支结构子程序结构 复合结构:多种程序结构的组合
分支结构 子程序结构 程序结构: 复合结构:多种程序结构的组合 … 顺序结构 循环结构
清华大学出版社 TSINGHUA UNIVERSITY PRESS 编制汇编语言程序的步骤: (1)分析题意,确定算法 (2)根据算法画出程序框图 (3)根据框图编写程序 (4)上机调试程序
编制汇编语言程序的步骤: (1) 分析题意,确定算法 (2) 根据算法画出程序框图 (3) 根据框图编写程序 (4) 上机调试程序
清华大学出版社 TSINGHUA UNIVERSITY PRESS 1.循环程序设计 初始化 初始化 控制条件 循环体 循环体 控制条件 DO-WHILE结构 DO-UNTIL结构
1. 循环程序设计 DO-WHILE 结构 DO-UNTIL 结构 控制条件 初始化 循环体 Y N 控制条件 初始化 循环体 Y N
清华大学出版社 TSINGHUA UNIVERSITY PRESS 初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制 特征值控制 地址边界控制
初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制 特征值控制 地址边界控制
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:把BX中的二进制数以十六进制的形式显示在屏幕上 BX 2
BX 1 2 3 4 例:把 BX 中的二进制数以十六进制的形式显示在屏幕上
清华大学出版社 TSINGHUA UNIVERSITY PRESS mov ch 4 rotate: mov cl, 4 rol bx cl moy al bl and al ofh add al 30h '0N'9 ASCII 30HN39H cmp al, 3ah J1 printit add al 7h A'~’F’ ASCII41H~46H printit:r mov dl, al moy ah. 2 int 2]h dec ch nz rotate
…… mov ch, 4 rotate: mov cl, 4 rol bx, cl mov al, bl and al, 0fh add al, 30h ; ’0’~’9’ ASCII 30H~39H cmp al, 3ah jl printit add al, 7h ; ’A’~’F’ ASCII 41H~46H printit: mov dl, al mov ah, 2 int 21h dec ch jnz rotate ……
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:从键盘接收十进制数并存入BX 125 mov bx 0 313235 newchar: mov ah 1 ;键盘输入 int 21h sub al 30h exit 0退出 cmp a J9 exit >9退出 cbw xchg ax,bx(0×10)+1)×10+2)×10+51 mov CX, 10 mul Cx xchg ax, bx add bx ax mp newchar exit
…… mov bx, 0 newchar: mov ah, 1 ;键盘输入 int 21h sub al, 30h jl exit ; 9退出 cbw xchg ax, bx mov cx, 10 mul cx xchg ax, bx add bx, ax jmp newchar exit: …… 例:从键盘接收十进制数并存入 BX ( ( 0×10)+1 )×10+2 )×10+5 1 2 5 31 32 35
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:从键盘接收十六进制数并存入BX a mov bx. 0 316166 newchar: mov ah 1 ;键盘输入 int 21h sub al 30h J exit ;·f'退出 add to: mov cl 4 sh bx. cl moy ah, 0 (0×16)+1)×16+0a)×16+0f add bx, ax ]mp newchar exit
…… mov bx, 0 newchar: mov ah, 1 ;键盘输入 int 21h sub al, 30h jl exit ; ’f’退出 add_to: mov cl, 4 shl bx, cl mov ah, 0 add bx, ax jmp newchar exit: …… 例:从键盘接收十六进制数并存入 BX 1 a f 31 61 66 ((0×16)+1) × 16+0a) × 16+0f
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:将正数n插入一个已整序的正数字数组 dw array_head dw3,5,15,23,37,4952,65,78,99 array_end dw 105 dw 32 X一 mov ax h array_-head> mov array_head -2, Offffh 5 mov si. 0 15 compare. 23 cmp array_end [si], ax 37 le insert 49 mov bx, array_end [si] 52 mov array_end [si +2], bx 65 sub si.2 78 jmp short compare 99 insert: array._end-)105 mov array_end [si +2], ax 32
x dw ? array_head dw 3,5,15,23,37,49,52,65,78,99 array_end dw 105 n dw 32 例:将正数 n 插入一个已整序的正数字数组 …… 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 …… 3 5 15 23 37 49 52 65 78 99 105 32 -1 array_head→ array_end→ n → x →