1、CompanyLOGO电子工业出版社电子工业出版社第四章第四章第四章第四章 汇编程序设计汇编程序设计汇编程序设计汇编程序设计 主要内容主要内容主要内容主要内容1顺序程序设计顺序程序设计2 分支程序设计分支程序设计 3 循环程序设计循环程序设计 4 4程序设计方法程序设计方法1子程序设计子程序设计5模块化程序设计模块化程序设计 6 64.1 4.1 程序设计方法程序设计方法程序设计方法程序设计方法 (1 1)分析问题,确定算法。)分析问题,确定算法。(2 2)绘制流程图。)绘制流程图。(3 3)分配资源。)分配资源。(4 4)根据流程图编写程序。)根据流程图编写程序。(5 5)上机调试程序。)上
2、机调试程序。4.2 4.2 顺序程序设计顺序程序设计【例4-1】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生学号放在变量NO中,查表结果放在变量ENGLISH中。图图4-1 4-1 简单查简单查表程序表程序开始开始为为初始初始变变量和量和查询结查询结果分配果分配单单元元TAB表首地址表首地址bx(NO)al以以al内容内容为为关关键键字字查查表表查询结查询结果果english 结结束束汇编汇编源程序如下:源程序如下:.model small.model small.stack.stack.data ;.data ;为初始变量和查询结果分配单元为初始变量和查
3、询结果分配单元tab db 68,78,42,84,80,85,56,77,87,56tab db 68,78,42,84,80,85,56,77,87,56no db 6no db 6english db?english db?.code.code.startup.startup lea bx,tab ;bx lea bx,tab ;bx指向指向TABTAB表首地址表首地址 mov al,no ;mov al,no ;学号送学号送alal寄存器寄存器 dec al dec al xlat tab ;xlat tab ;用换码指令查表用换码指令查表 mov english,al ;mov en
4、glish,al ;结果保存在结果保存在englishenglish单元单元.exit 0 ;.exit 0 ;结束退出结束退出endend4.3 4.3 分支程序设计分支程序设计分支程序设计分支程序设计在程序中,当需要进行逻辑分支时,可用每在程序中,当需要进行逻辑分支时,可用每次分二支的方法来达到程序最终分多支的要次分二支的方法来达到程序最终分多支的要求,也可是用地址表的方法来达到分多支的求,也可是用地址表的方法来达到分多支的目的。分支程序的结构通常有三种形式:不目的。分支程序的结构通常有三种形式:不完全分支、完全分支和多分支,完全分支、完全分支和多分支,【例例4-44-4】设设数据数据X
5、X、Y Y均均为为字字节节型型变变量,量,编编写写计计算下面函数算下面函数值值的程序的程序 Y =Y =开始开始X0?X0?-1Y0Y1Y结结束束YNYN图图4-5 函数函数值计值计算流程算流程图图汇编源程序如下汇编源程序如下:.model small.model small.stack.stack.data.data x xdb -5db -5y ydb?db?.code.code.startup.startup cmp cmpx,0 x,0 jge jgecase1case1 ;当当x0 x0时,则转到时,则转到case1case1 mov movy,-1y,-1 ;x ;x0 0时时,-
6、1y,-1y jmp jmpdonedonecase1:case1:jg jgcase2case2 ;x ;x0 0时,则转到时,则转到case2case2 mov movy,0y,0 ;x=0 ;x=0时时,0y,0y jmp jmpdonedonecase2:case2:mov movy,1y,1 ;x ;x0 0时时,1y,1y done:done:.exit 0.exit 0 end end4.4 4.4 循环程序设计循环程序设计循环结构的程序通常由循环结构的程序通常由3 3个部分组成:个部分组成:循环初始部分循环初始部分为开始循环准备必要的条件,如循为开始循环准备必要的条件,如循环次
7、数、以及为循环体正常工作而建立的初始状态等。环次数、以及为循环体正常工作而建立的初始状态等。循环体部分循环体部分重复执行的程序代码,这是循环工作重复执行的程序代码,这是循环工作的主体,它由循环的工作部分及修改部分组成。循环的重的主体,它由循环的工作部分及修改部分组成。循环的重复部分是为完成程序功能而设计的主要程序段,循环的修复部分是为完成程序功能而设计的主要程序段,循环的修改部分则是为保证每改部分则是为保证每次重复时,参加执行的信息能发生次重复时,参加执行的信息能发生有规律的变化而建立的程序段。有规律的变化而建立的程序段。循环控制部分循环控制部分判断循环条件是否成立,决定是否判断循环条件是否成
8、立,决定是否继续循环。继续循环。图图4-7 两种典型循环结构两种典型循环结构满满足足循循环环条条件件?循环体循环体NYa.WHILE型循环结构型循环结构循环初始化循环初始化满满足足循循环环条条件件?循环体循环体NYb.DO_UNTIL型循环结型循环结构构循环初始化循环初始化 循环控制方式通常有以下循环控制方式通常有以下4 4种:种:计数控制计数控制事先已知循环次数,设循环一次加事先已知循环次数,设循环一次加/减减1 1。条件控制条件控制事先不知循环次数,根据条件真假控制循环。事先不知循环次数,根据条件真假控制循环。状态控制状态控制根据事先设置或是实时检测的状态来控制循环。根据事先设置或是实时检
9、测的状态来控制循环。逻辑尺控制逻辑尺控制当循环条件不规则时,可通过位串(逻辑尺)当循环条件不规则时,可通过位串(逻辑尺)来控制循环。来控制循环。4.5 4.5 子程序设计子程序设计子程序名子程序名 PROCPROCNEAR|FARNEAR|FAR 保护现场保护现场 子程序体子程序体 回复现场回复现场 RET RET子程序名子程序名 ENDP ENDP 例如实现回车、换行功能的子程序,过程定义如下:例如实现回车、换行功能的子程序,过程定义如下:subr procsubr proc push ax push ax ;保护现场;保护现场 push dx push dx mov dl,0dh ;mov
10、 dl,0dh ;回车控制字符回车控制字符0DH0DH mov ah,2 ;mov ah,2 ;int 21h ;int 21h ;执行回车功能执行回车功能 mov dl,0ah ;mov dl,0ah ;换行控制字符换行控制字符0AH0AH mov ah,2 ;mov ah,2 ;int 21h ;int 21h ;执行换行功能执行换行功能 pop dx pop dx ;恢复现场恢复现场 pop ax pop ax ret ret ;子程序返回;子程序返回subr endpsubr endp4.6 4.6 模块化程序设计模块化程序设计模块化程序设计的首要问题是合理地划分模块,这就要求程序设计
11、的首要问题是合理地划分模块,这就要求将一个复杂问题进行分解,确定功能模块和接口关系。模块将一个复杂问题进行分解,确定功能模块和接口关系。模块划分的一般原则如下:划分的一般原则如下:(1 1)模块功能相对独立。每个模块的功能要明确,大小)模块功能相对独立。每个模块的功能要明确,大小要适中,独立性要强,交换的接口信息要少,最好只有一个要适中,独立性要强,交换的接口信息要少,最好只有一个入口和一个出口。入口和一个出口。(2 2)模块间的关系要明确。各模块最好再分层,形成树型)模块间的关系要明确。各模块最好再分层,形成树型层次结构。即上层模块可调用下层模块,下层模块可返回上层次结构。即上层模块可调用下层模块,下层模块可返回上层模块,反之则不然。这就使得各层间不会构成循环。层模块,反之则不然。这就使得各层间不会构成循环。(3 3)程序中易变化的部分与不易变化的部分要分开,形成)程序中易变化的部分与不易变化的部分要分开,形成不同的模块,这样便于软件的升级。例如系统软件中把与不同的模块,这样便于软件的升级。例如系统软件中把与CPUCPU有关的部分分出来形成一个专门模块。有关的部分分出来形成一个专门模块。
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922