汇编语言程序设计基本汇编语言程序设计课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言程序设计基本汇编语言程序设计课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 基本 课件
- 资源描述:
-
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个
展开阅读全文