汇编语言程序设计基本汇编语言程序设计.pptx
《汇编语言程序设计基本汇编语言程序设计.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计基本汇编语言程序设计.pptx(72页珍藏版)》请在咨信网上搜索。
1、第5章基本汇编语言程序设计q5.1 汇编语言程序的设计步骤q5.2 顺序结构的程序设计q5.3 分支结构的程序设计q5.4 循环结构的程序设计q5.5 子程序设计第5章基本汇编语言程序设计q5.1 汇编语言程序的设计步骤q5.2 顺序结构的程序设计q5.3 分支结构的程序设计q5.4 循环结构的程序设计q5.5 子程序设计5.1 汇编语言程序的设计步骤n汇编语言程序设计的基本步骤n程序的基本结构5.1 汇编语言程序的设计步骤n一个良好的程序应该满足以下要求:(1)程序要结构化,简明、可读性好,便于调试。(2)执行速度快,程序代码效率高。(3)占用存储空间少。n 汇编语言程序设计的基本步骤5.1
2、 汇编语言程序的设计步骤n汇编语言程序设计的基本步骤:1.分析题意,确定数据结构和算法2.根据算法绘制程序流程图3.根据流程图编写程序4.调试程序n 汇编语言程序设计的基本步骤5.1 汇编语言程序的设计步骤例5.1 在100个字的无符号整数字中找出最大数。n 汇编语言程序设计的基本步骤5.1 汇编语言程序的设计步骤1.分析题意,确定数据结构和算法(1)初始化,建立一个数据指针指向数据区的首地址;(2)将第一个数存入寄存器(如AX)中;(3)调整数据指针,使其指向下一个数;(4)将数据指针所指的数与寄存器AX的内容相比较,如果该数较大,则将其存入AX,否则丢掉;(5)重复执行(3)、(4)两步,
3、直至将数组中的数据全部处理完。n 汇编语言程序设计的基本步骤5.1 汇编语言程序的设计步骤2.根据算法绘制程序流程图n 汇编语言程序设计的基本步骤5.1 汇编语言程序的设计步骤3.根据流程图编写程序DATA SEGMENT DATA SEGMENT ARRAY DW 100 DUPARRAY DW 100 DUP(?)DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:DATADS:DATASTART:START:MOV AXMOV AX,DATADATAMOV DSMOV DS,AXAXLEA S
4、ILEA SI,ARRAY ;ARRAY ;将将ARRAYARRAY的首地址送入数据指针的首地址送入数据指针SISIMOV CXMOV CX,99 ;99 ;设置循环次数设置循环次数MOV AXMOV AX,SISI ;将第一个数存入将第一个数存入AXAXNEXT:NEXT:ADD SIADD SI,2 ;2 ;修改数据指针指向下一个数据修改数据指针指向下一个数据CMP AXCMP AX,SISI ;两数比较两数比较JAE LOOP1 ;AXJAE LOOP1 ;AXSISI,转,转LOOP1LOOP1MOV AXMOV AX,SISI ;否则,将较大数存入否则,将较大数存入AXAXLOOP1
5、:DEC CXLOOP1:DEC CXJNZ NEXTJNZ NEXTMOV AHMOV AH,4CH4CHINT 21HINT 21HCODE ENDSCODE ENDSEND STARTEND STARTn 汇编语言程序设计的基本步骤5.1 汇编语言程序的设计步骤4.调试程序两个阶段:n静态检查n上机运行调试n 程序的基本结构5.1 汇编语言程序的设计步骤1.顺序结构2.分支结构3.循环结构n 程序的基本结构5.1 汇编语言程序的设计步骤1.顺序结构n 程序的基本结构5.1 汇编语言程序的设计步骤2.分支结构n 程序的基本结构5.1 汇编语言程序的设计步骤3.循环结构第5章基本汇编语言程序
6、设计q5.1 汇编语言程序的设计步骤q5.2 顺序结构的程序设计q5.3 分支结构的程序设计q5.4 循环结构的程序设计q5.5 子程序设计5.2 顺序结构的程序设计例5.2 将一字数据从数据段的某个单元传送到另一个单元。分析:因为8086.8088指令系统不允许在存储器与存储器之间直接传送数据,所以必须借助CPU内部的通用寄存器AX、BX、CX、DX等,先将存储单元中的字数据传送到寄存器,再将其由寄存器传送到存储器的另一个字单元。5.2 顺序结构的程序设计DATA SEGMENTFIRST DW 1234HSECOND DW?DATA ENDSCODE SEGMENTASSUME CS:CO
7、DE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,FIRSTMOV SECOND,AXMOV AH,4CHINT 21HCODE ENDSEND START5.2 顺序结构的程序设计例5.3 将键盘输入的小写字母用大写字母显示出来。分析:本题目涉及三个知识点:(1)输入:在8086.8088指令系统中,字符的输入是由DOS21H中断的01H子功能来实现的,命令序列如下:MOV AH,01HINT 21H其作用是从键盘接收一个字符并将该字符的ASCII码存入寄存器AL中。5.2 顺序结构的程序设计(2)输出:在8086.8088指令系统中,字符的输出是由DOS
8、21H中断的02H子功能来实现的,命令序列如下:MOV AH,02HINT 21H其作用是将寄存器DL中所存放的字符进行显示输出,故在执行该命令序列之前,应先将被输出字符的ASCII码存入DL中。(3)小写字母向大写字母的转换:将小写字母的ASCII码值减去20H即可得到对应大写字母的ASCII码值。5.2 顺序结构的程序设计CODE SEGMENTASSUME CS:CODESTART:MOV AH,01HINT 21HSUB AL,20HMOV DL,ALMOV AH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START第5章基本汇编语言程序设计q5.
9、1 汇编语言程序的设计步骤q5.2 顺序结构的程序设计q5.3 分支结构的程序设计q5.4 循环结构的程序设计q5.5 子程序设计5.3 分支结构的程序设计n双分支结构的程序设计n多分支程序设计n 双分支结构的程序设计5.3 分支结构的程序设计框架结构:先行指令JXX 标号1指令序列1JMP 标号2 ;转到出口标号1:指令序列2标号2:功能:JXX条件成立时转到标号1处执行指令序列2,否则执行指令序列1,然后跳转到标号2的程序出口处。n 双分支结构的程序设计5.3 分支结构的程序设计例5.4 比较两个带符号数的大小,把大数存入MAX单元。分析:比较两数可用CMP指令,而带符号数的比较结果可由标
10、志位SF、OF来确定,选用的转移指令应为JG、JL等。DATA SEGMENT DATA SEGMENT A DW 34A DW 34B DW 65B DW 65MAX DW?MAX DW?DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:DATADS:DATASTART:MOV AXSTART:MOV AX,DATADATAMOV DSMOV DS,AXAXMOV AXMOV AX,A AMOV BXMOV BX,B BCMP AXCMP AX,BXBXJL NEXTJL NEXTMOV MAX
11、MOV MAX,AXAXJMP EXITJMP EXITNEXT:MOV MAXNEXT:MOV MAX,BXBXEXIT:MOV AHEXIT:MOV AH,4CH4CHINT 21HINT 21HCODE ENDSCODE ENDSEND STARTEND START5.3 分支结构的程序设计n 双分支结构的程序设计5.3 分支结构的程序设计例5.5 比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示MATCH,若不相同则显示NO MATCH。分析:比较两个字符串可用指令REPE CMPSB,比较后如果ZF=1,则两个字符串完全相同,如果ZF=0,则两个字符串不
12、完全相同。字符串的输出是由DOS21H中断的09H子功能来实现的,该子功能要求将被输出的字符串存入数据段中,存储时以结束,输出时将其首地址存入DX寄存器。DATA SEGMENTDATA SEGMENTSTRING1 DB ABCDEFGSTRING1 DB ABCDEFGOUT1 DB MATCHOUT1 DB MATCHOUT2 DB NO MATCHOUT2 DB NO MATCHDATA ENDSDATA ENDSEXTRA SEGMENTEXTRA SEGMENTSTRING2 DBABCDEFGSTRING2 DBABCDEFGEXTRA ENDSEXTRA ENDSCODE SE
13、GMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:DATADS:DATA,ES:EXTRAES:EXTRASTART:MOV AXSTART:MOV AX,DATADATAMOV DSMOV DS,AXAXMOV AXMOV AX,EXTRAEXTRAMOV ESMOV ES,AXAXMOV CXMOV CX,7 ;7 ;字符串长度存入字符串长度存入CXCXLEA SILEA SI,STRING1;STRING1STRING1;STRING1的首地址存入的首地址存入SISILEA DILEA DI,ES:STRING2;STRING2ES:STR
14、ING2;STRING2的首地址存入的首地址存入DIDICLD;CLD;置方向标志置方向标志DF=0DF=0REPE CMPSB;REPE CMPSB;相同时重复比较相同时重复比较JNZ OUTPUT2;JNZ OUTPUT2;不匹配,转不匹配,转OUTPUT2OUTPUT2LEA DXLEA DX,OUT1;OUT1OUT1;OUT1首地址存入首地址存入DXDXMOV AHMOV AH,09H;09H;输出输出OUT1OUT1INT 21HINT 21HJMP EXIT;JMP EXIT;转转EXITEXIT,结束,结束OUTPUT2:LEA DXOUTPUT2:LEA DX,OUT2;OU
15、T2OUT2;OUT2首地址存入首地址存入DXDXMOV AHMOV AH,09H;09H;输出输出OUT2OUT2INT 21HINT 21HEXIT:MOV AHEXIT:MOV AH,4CH4CHINT 21HINT 21HCODE ENDSCODE ENDSEND STARTEND START5.3 分支结构的程序设计n 多分支序设计5.3 分支结构的程序设计例5.6 比较两个无符号整数A和B,若AB则输出“”,若AB则输出“B、AB和A=B,按照逻辑分解的方法,我们可先将其归并为两个条件:AB和AB和A=B,各分支均可用条件转移指令来实现。DATA SEGMENTDATA SEGME
16、NTA DW 34A DW 34B DW 56B DW 56DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:DATADS:DATASTART:MOV AXSTART:MOV AX,DATADATAMOV DSMOV DS,AXAXMOV AXMOV AX,A AMOV BXMOV BX,B BCMP AXCMP AX,BXBXJAE NEXT1JAE NEXT1MOV DLMOV DL,EXIT:MOV AHEXIT:MOV AH,02H02HINT 21HINT 21HMOV AHMOV AH
17、,4CH4CHINT 21HINT 21HCODE ENDSCODE ENDSEND STARTEND START5.3 分支结构的程序设计n 多分支序设计5.3 分支结构的程序设计例5.7 已知两个整数字节变量A和B,试编写完成下列操作的程序:(1)若两个数中只有一个是奇数,则将奇数存入ABUF单元,偶数存入BBUF单元中。(2)若两个数均为奇数,则两数分别加1,并存回原变量处。(3)若两个数均为偶数,则两变量不变。分析:在计算机中,数据的奇偶性取决于最低位的值,0为偶数,1为奇数。因此可采用位测试的办法来判断。首先判断A与B是否同种类型的数,不是同种类型,再判断B是否为偶数,由B的类型可确
18、定A的类型,再按要求(1)进行处理;同样,当A、B是同种类型时,也判断B是否为偶数,再按要求(2)或(3)进行处理。判断A、B两数是否同类,可使用XOR指令将两数异或,若结果的最低位为0,则两数同类。n 多分支程序设计5.3 分支结构的程序设计5.3 分支结构的程序设计DATA SEGMENTDATA SEGMENTABUF DB AABUF DB ABBUF DB BBBUF DB BDATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:DATADS:DATASTART:MOV AXSTART:MO
19、V AX,DATADATAMOV DSMOV DS,AXAXMOV ALMOV AL,ABUFABUFMOV BLMOV BL,BBUFBBUFXOR ALXOR AL,BLBLTEST ALTEST AL,01H ;01H ;测试是否同类测试是否同类JZ CLASS;JZ CLASS;是同类,转是同类,转CLASSCLASSTEST BLTEST BL,01H;01H;不是同类,测试不是同类,测试B B是否偶数是否偶数JZ EXIT;BJZ EXIT;B是偶数,满足要求(是偶数,满足要求(1 1),转),转EXITEXITXCHG BLXCHG BL,ABUF;BABUF;B不是偶数,按要求
20、(不是偶数,按要求(1 1),交换两数),交换两数MOV BBUFMOV BBUF,BLBLJMP EXIT;JMP EXIT;转转EXITEXITCLASS:TEST BLCLASS:TEST BL,01H;01H;同类时,测试同类时,测试B B是否偶数是否偶数JZ EXIT;BJZ EXIT;B是偶数,满足要求(是偶数,满足要求(3 3),转),转EXITEXITINC ABUF;BINC ABUF;B不是偶数,按要求(不是偶数,按要求(2 2),两数同时加),两数同时加1 1INC BBUFINC BBUFEXIT:MOV AHEXIT:MOV AH,4CH4CHINT 21HINT 2
21、1HCODE ENDSCODE ENDSEND STARTEND START第5章基本汇编语言程序设计q5.1 汇编语言程序的设计步骤q5.2 顺序结构的程序设计q5.3 分支结构的程序设计q5.4 循环结构的程序设计q5.5 子程序设计5.4 循环结构的程序设计n循环程序的结构n循环结构的程序设计方法n 循环程序的结构5.4 循环结构的程序设计n循环程序都可由如下三部分组成:1.设置循环的初始状态2.循环体3.循环控制部分n 循环程序的结构5.4 循环结构的程序设计1.设置循环的初始状态循环程序的初始状态,应该在进入循环体之前设置,其目的是保证循环体能够正常运行和结束,具体内容包括设置循环次
22、数的计数值或其他能使循环结束的条件的初值,以及为循环体正常工作而建立的初始状态等。n 循环程序的结构5.4 循环结构的程序设计2.循环体循环体是整个循环程序中需要重复执行的程序段,即循环工作的主体。它由循环的工作部分和修改部分组成。循环的工作部分是为完成程序功能而设计的主要程序段,循环的修改部分则是为保证循环体在执行有限次后能够正常结束而设置的程序段,一般是对循环控制参数进行修改,而该参数的变化通常是有规律的。n 循环程序的结构5.4 循环结构的程序设计3.循环控制部分每个循环程序必须选择一个循环控制条件来控制循环的运行和结束,而合理地选择这个控制条件就成为循环程序设计的关键问题。n 循环程序
23、的结构5.4 循环结构的程序设计(1)循环次数已知,用循环次数作为循环的控制条件MOV CX,N标号:LOOP 标号n 循环程序的结构5.4 循环结构的程序设计(2)循环次数已知,但也有可能使用其他特征或条件来使循环提前结束MOV CX,N标号:LOOPZ.LOOPNZ 标号n 循环程序的结构5.4 循环结构的程序设计(3)循环次数是未知的,这时就要根据具体情况找出控制循环结束的条件直到型循环:标号:影响条件标志位的指令JXX 标号 n 循环程序的结构5.4 循环结构的程序设计当型循环:标号2:影响条件标志位的指令JXX 标号1JMP 标号2标号1:n 循环程序的结构5.4 循环结构的程序设计
24、n设计循环程序的步骤:(1)分析问题,确定循环次数是已知的还是未知的,是否有提前结束循环的情况,从而决定选用哪一种循环最恰当;(2)根据循环变化的规律,确定适合于循环设计的工作部分;(3)考虑循环参数的修改部分,分析并确定参数的每次修改方法;(4)设置循环控制部分及循环参数的置初值部分,可根据循环程序控制方法的不同,来设置循环参数的初值。n 循环结构的程序设计方法5.4 循环结构的程序设计两种基本模式:n单循环结构n多重循环结构n 循环结构的程序设计方法5.4 循环结构的程序设计1.单循环结构2.多重循环结构n 循环结构的程序设计方法单循环结构5.4 循环结构的程序设计例5.8 编程计算10个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 基本
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。