资源描述:
《第7课汇编语言程序设计基础ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一节、汇编语言概述第二节、汇编语言程序结构与语句格式第三节、伪指令语句第三章汇编语言程序设计基础第四节、汇编语言程序的运行第五节、汇编语言程序设计第五节汇编语言程序设计一、概述二、常用DOS功能调用三、汇编语言程序设计技术及举例四、子程序设计与参数传递技术一﹑概述1、汇编语言程序设计步骤①建立数学模型;②确定算法;③画流程图;④分配内存工作单元和寄存器;⑤编制程序和静态检查;⑥调试程序。2、评判程序质量的标准早期程序判断标准:程序执行时间短、占内存少,语句精炼和构思巧妙。现代程序(结构化程序)要求:①采用逐步求精的方法开发程序;②采用模块化程序结构;每个模块都由基本结构顺
2、序组成。(顺序、分支、循环)③具有“良结构”;(三种基本程序,一个入口和一个出口,无死循环和死语句。)④要加注释,增加程序的可读性。二、常用DOS功能调用1、字符串输入(0AH)功能:从键盘读入一个字符串存入缓冲区,同时显示字符串,用回车键结束字符串输入入口参数:DS:DX指向输入缓冲区首址。第一字节缓冲区的长度,第二字节实际输入的字符数,第三字节开始保存输入的字符串.例BUFFERDB40,0,40DUP(?);调用方式:MOVAH,0AHMOVDX,OFFSETBUFFERINT21H出口参数:实际输入的字符数保存在缓冲区第三字节。2、显示一字符(02H)功能:显示DL
3、中的字符。入口参数:DL=待显示字符的ASCII码出口参数:无例:显示字母‘A’MOVAH,2MOVDL,'A'INT21H3、显示字符串(09H)功能:将以“$”字符结尾的字符串输出到显示器入口参数:将以DS:DX指向内存以“$”结尾的字符串的首地址,出口参数:无调用方式:LEADX,待显示字符串首偏移地址MOVAH,09HINT21H4、返回DOS(4CH)功能:结束正在执行的程序,返回操作系统入口参数:AH=4CH,放入功能号4C到AH例:MOVAH,4CHINT21H5.打印输出(5号调用)格式:MOVDL,待打印字符的ASCII码MOVAH,5INT21H功能:将
4、DL寄存器中的字符送打印机打印。6、键盘输入并显示(01H)功能:从键盘输入一个字符,将其ASCII码保存在AL中,并将该字符显示在屏幕上。入口参数:无调用方式:MOVAH,1INT21H出口参数:输入字符的ASCII码被存放在AL中。(一)结构化程序设计三、汇编语言程序设计技术及举例1、顺序结构程序设计2、分支结构程序设计3、循环结构1、顺序结构程序设计顺序结构程序(直线程序):执行始终按照语句出现的先后顺序进行。[例1]求两个数的平均值。这两个数分别放在A单元和B单元中,而平均值放在C单元中。(A、B单元均为8位)开始结束(AL)/2CA+B(AL)DATASEGM
5、ENTADB63HBDB13HCDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AX;初始化数据段MOVAL,A;第一个数送入ALADDAL,B;两个数相加,结果→ALMOVAH,00HADCAH,00H;带进位加法SHRAX,01H;除2→ALMOVC,AL;结果送入C单元MOVAX,4C00HINT21H;返回DOSCODEENDSENDBEGIN[例2]把非压缩的十进制数DAT1转换为压缩的十进制数DOSSEG.MODELSMALL.STACK200H.DATADAT1DW0506H.C
6、ODESTART:MOVAX,@DATAMOVDS,AXMOVAX,DAT1MOVCL,4SALAH,CLROLAX,CLROLAL,CLMOVBYTEPTRDAT1,ALMOVAH,4CHINT21HENDSTART[例3]对两个8字节无符号数求和,这两个数分别用变量D1和D2表示。将两数之和的最高位进位放在AL中,两数之和的其它位按从高到低顺序依次放在SI、BX、CX、DX中。程序如下:DATASEGMENTD1DB12H,34H,56H,78H,9AH,0ABH,0BCH,0CDHD2DB0CDH,0BCH,0ABH,9AH,78H,56H,34H,12HDATAEN
7、DSCODESEGMENTASSUMECS:CODE,DS:DATABG:MOVAX,DATAMOVDS,AX;给DS赋段值LEADI,D1;将D1表示的偏移地址送DIMOVDX,WORDPTR[DI];取第1操作数到寄存器中MOVCX,WORDPTR[DI+2];取第2操作数到寄存器中MOVBX,WORDPTR[DI+4];取第3操作数到寄存器中MOVSI,WORDPTR[DI+6];取第4操作数到寄存器中LEADI,D2;将D2表示的偏移地址送DIADDDX,WORDPTR[DI];第1操作数相加ADCCX,W