ASM05 循环与分支程序设计.ppt
文本预览下载声明
例1 Data segment X dw 33 Y dw 47 Z dw 65 W dw ? Data ends Code segment assume cs:code assume ds:data Begin:mov ax,X add ax,Y adc ax,Z mov W,ax mov ah,4ch int 21h Code ends end Begin 例2 qvar dq 1234567887654321h mov al,byte ptr qvar[6] mov byte ptr qvar[7],al mov al,byte ptr qvar[5] mov byte ptr qvar[6],al mov al,byte ptr qvar[4] mov byte ptr qvar[5],al mov al,byte ptr qvar[3] mov byte ptr qvar[4],al 例2 64位数据左移8位的图示 初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制 特征值控制 地址边界控制 例5.3 计算1~100数字之和 .model small .stack 256 .data sum dw ? .code begin: mov ax,@data mov ds,ax xor ax,ax ;被加数AX清0 mov cx,100 again: add ax,cx ; loop again mov sum,ax ;将累加和送入指定单元 mov ah,4ch int 21h end begin 例5.5 大写字母改为小写字母 Begin: 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: mov ah,4ch int 21h 冒 泡 法 “冒泡法”是一种排序算法,不是最优的算法,但它易于理解和实现。 冒泡法从第一个元素开始,依次对相邻的两个元素进行比较,使前一个元素不大于后一个元素;将所有元素比较完之后,最大的元素排到了最后;然后,除掉最后一个元素之外的元素依上述方法再进行比较,得到次大的元素排在后面;如此重复,直至完成就实现元素从小到大的排序。 这是一个双重循环程序结构。外循环由于循环次数已知,可用loop指令实现;而内循环次数每次外循环后减少一次,我们用DX表示。内循环体比较两个元素大小,又是一个分支结构。 * 第五章作业 Page 193~195 5.1 5.4 5.7 5.11 5.16 5.19 5.24 5.25 汇编语言程序设计 第5章 循环与分支程序设计 Assembly Language Programming 编制汇编语言程序的步骤: (1) 分析题意,确定算法 (2) 根据算法画出程序框图 (3) 根据框图编写程序 (4) 上机调试程序(自己完成) * 顺序结构 循环结构 分支结构 子程序结构 复合结构:多种程序结构的组合 …… 程序结构: 顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构 分支程序根据条件是真或假决定执行与否。 判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志。 转移指令Jcc和JMP可以实现分支控制; 循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体。 循环指令和转移指令可以实现循环控制 顺序程序设计 mov al,byte ptr qvar[2] mov byte ptr qvar[3],al mov al,byte ptr qvar[1] mov byte ptr qvar[2],al mov al,byte ptr qvar[0] mov byte ptr qvar[1]
显示全部