5汇编程序设计课件_第1页
5汇编程序设计课件_第2页
5汇编程序设计课件_第3页
5汇编程序设计课件_第4页
5汇编程序设计课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章汇编程序设计7/24/20231一.概述第五章汇编语言程序设计编写汇编语言程序一般步骤建模确定解决模型算法按算法画出程序流程框图§5.1汇编语言程序设计初步分析实际问题,抽象描述问题的模型按流程框图编写程序分配存储空间及工作单元上机调试,运行程序7/24/20232二.程序基本结构及设计第五章汇编语言程序设计§5.1汇编语言程序设计初步分支结构循环结构子程序结构顺序结构7/24/20233§5.2顺序程序结构设计开始框结束框执行框执行框结构:顺序结构主要用于简单程序或构成其它程序结构中的局部程序段。一个开始框,若干执行框,一个结束框。设计:列出算法步骤,安排相应指令。第五章汇编语言程序设计7/24/20234【例1】查表求X(0≤x≤15)的平方值。DATASEGMENTTABLESQDB0,1,4,9,16,25,36,49DB64,81,100,121,144,169,225XXDB?YYDB?DATAENDS数据段:思路建立0到15的平方值表查表(数据段)第五章汇编语言程序设计§5.2顺序程序结构7/24/20235【例1】查表求X(0≤x≤15)的平方值。代码段:CODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HCODEENDS

ENDBEGIN第五章汇编语言程序设计§5.2顺序程序结构7/24/20236【例1】查表求X(0≤x≤15)的平方值。代码段核心部分:MOVBX,OFFSETTABLESQ MOVAL,XX

MOVAH,0 ADDBX,AX MOVAL,[BX] MOVYY,ALXLAT第五章汇编语言程序设计§5.1顺序程序结构7/24/20237【例2】查表求指定学生的英语成绩。第五章汇编语言程序设计§5.1顺序程序结构.MODELSMALL.STACK.DATATABDB68H,78H,42H,84H,80HDB85H,56H,77H,87H,56HNODB6ENGLISHDB?.CODE7/24/20238【例2】查表求指定学生的英语成绩。第五章汇编语言程序设计§5.1顺序程序结构

START:MOVAX,@DATAMOVDS,AXLEABX,TABMOVAL,NODECALXLATMOVENGLISH,ALMOVAH,4CHINT21HENDSTART7/24/20239§5.3分支结构两种分支结构形式:多分支Y判定条件程序段1程序段2N条件1判定条件程序段2程序段n程序段1条件2条件n双分支双分支多分支第五章汇编语言程序设计§5.3分支程序结构7/24/202310§5.3分支结构设计:双分支情形利用条件转移指令产生两个分支程序设计包括:形成产生分支的条件测试条件按条件成立与否确定转移去向采用运算类指令采用条件转移类指令第五章汇编语言程序设计§5.3分支程序结构7/24/202311(-128X127)【例】符号函数。1,当X>0Y=0,当X=0-1,当X<0取数X≥0?X=0?Y=-1Y=1Y=0送存NYNYLOOP1RESULTLOOP2MOVAL,XX CMPAL,0JGELOOP1

MOVAL,0FFHJMPRESULTJELOOP2MOVAL,01HJMPRESULTMOVAL,00HMOVYY,AL

LOOP1:RESULT:LOOP2:流程框图第五章汇编语言程序设计§5.3分支程序结构7/24/202312§5.3分支结构设计:多分支情形有若干个条件,每个条件对应一组操作(一个程序段)关键问题:如何按条件对分支进行判断,从而依据不同的条件,转移到不同的入口去执行各自的程序段?解决办法:①多次用条件转移指令逐条件判断②跳转表地址跳转表指令跳转表在DS段建立在CS段建立第五章汇编语言程序设计§5.3分支程序结构7/24/202313【例】某工厂有8种产品的加工程序R0到R7分别存放在以SRB0,SBR1,…,SBR7为首地址的内存区域中。要求编写程序能根据目前要加工的产品编号自动转入该产品的加工程序。地址跳转表SBR0SBR1SBR2SBR7SBR0SBR1SBR7BASE(1)地址跳转表第五章汇编语言程序设计§5.3分支程序结构7/24/202314地址跳转表SBR0SBR1SBR2SBR7SBR0SBR1SBR7BASEBASEDWSBR0,SBR1,SBR2DATASEGMENTDATAENDSDWSBR3,SBR4,SBR5DWSBR6,SBR7BNDB?第五章汇编语言程序设计§5.3分支程序结构7/24/202315SBR0SBR1SBR2SBR7SBR0SBR1SBR7BASEBASEDWSBR0,SBR1,SBR2DATASEGMENTDATAENDSDWSBR3,SBR4,SBR5DWSBR6,SBR7BNDB?MOVAL,BN ADDAL,ALMOVBX,OFFSETBASEMOVAH,00H ADDBX,AX MOVAX,[BX]JMPAX讨论:关于转移地址的寻址方式关于段间转移的情况第五章汇编语言程序设计§5.3分支程序结构7/24/202316【例】某工厂有8种产品的加工程序R0到R7分别存放在以SRB0,SBR1,…,SBR7为首地址的内存区域中。要求编写程序能根据目前要加工的产品编号自动转入该产品的加工程序。指令跳转表(2)指令跳转表JMPSBR0JMPSBR1JMPSBR7BRAT第五章汇编语言程序设计§5.3分支程序结构7/24/202317JMPSBR0JMPSBR1JMPSBR7BRATMOVAL,BN MOVBL,ALADDAL,ALADDAL,BLMOVBX,OFFSETBRATMOVAH,00H ADDBX,AX JMPBXJMPSBR0JMPSBR1JMPSBR7BRAT:第五章汇编语言程序设计§5.3分支程序结构7/24/202318JMPSBR0JMPSBR1JMPSBR7BRATMOVAL,BN MOVBL,ALADDAL,ALADDAL,BLMOVBX,OFFSETBRATMOVAH,00H ADDBX,AX JMPBXJMPSBR0JMPSBR1JMPSBR7BRAT:第五章汇编语言程序设计§5.3分支程序结构7/24/2023193.循环结构循环程序一般由四部分组成:初始化为循环作准备工作:建立指针;设循环次数计数器;设置其它相关变量的初值循环体循环程序的核心部分修改部分修改相关操作数的地址,为下次循环作准备循环控制修改计数器,判断循环控制条件,决定是否继续循环第五章汇编语言程序设计§5.4循环程序结构7/24/2023203.循环结构循环程序的基本结构形式:①先执行后判断②先判断后执行(零次循环)(非零次循环)第五章汇编语言程序设计§5.4循环程序结构7/24/202321循环初始设置循环修改循环条件判断?Y循环体N循环初始设置循环体循环条件判断?Y循环修改N先判断后执行先执行后判断第五章汇编语言程序设计§5.4循环程序结构7/24/202322【例】计算MOVAX,0MOVBX,OFFSETTABLMOVCX,100ADDAX,[BX]INCBXINCBXDECCXJNZLOPMOV

YY,AX讨论:循环次数固定,宜用LOOP指令。第五章汇编语言程序设计§5.4循环程序结构7/24/202323【例】编程统计AX寄存器中“1”的个数。MOVCX,0ANDAX,AXJZSTPSALAX,1JNCLOPINCCXJMPLOP……LOP:STP:第五章汇编语言程序设计§5.4循环程序结构7/24/202324§5.5子程序采用子程序结构的好处:模块化设计,简化程序设计过程增加程序可读性,便于修改、调试缩短程序长度,节省空间子程序的结构形式子程序说明文件子程序的定义与调用DTOBPROCRETDTOBENDP第五章汇编语言程序设计§5.5子程序结构7/24/202325子程序设计中的问题:(1)寄存器及工作单元内容的保护和恢复(2)参数的传递寄存器存储器堆栈§5.5子程序第五章汇编语言程序设计§5.5子程序结构7/24/202326子程序设计中的问题:(3)子程序的嵌套与递归嵌套:子程序调用其它子程序。递归:在子程序嵌套的情况下,子程序的自身调用。(4)实例§5.5子程序第五章汇编语言程序设计§5.5子程序结构7/24/202327CALLACALL主程序ABRETRET调用调用返回返回………………CALLB子程序嵌套§5.5子程序第五章汇编语言程序设计§5.5子程序结构7/24/202328CALLACALLB主程序ABRETRET调用调用返回返回………………CALLB子程序递归调用§5.5子程序第五章汇编语言程序设计§5.5子程序结构7/24/202329【例】对两个数组分别求和。DATASEGMENT

ARY1DB100DUP(?)SUM1DW?ARY2DB100DUP(?)SUM2DW?DATAENDSSTACKSEGMENTPARASTACKSPAEDB100DUP(?)TOPEQULENGTHSPAESTACKENDS;堆栈段;数据段;数组1;数组1求和结果;数组2;数组2求和结果思路:求和子程序;主程序两次调用子程序。通过堆栈传递参数。第五章汇编语言程序设计§5.5子程序结构7/24/202330【例】对两个数组分别求和。MAINSEGMENTASSUMECS:MAIN,DS:DATA,SS:STACKSTR:MOVAX,DATAMOVDS,AX

MOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AX

MOVAH,4CHINT21HMAINENDS

ENDSTR主程序结构;DS初值;SS初值;SP初值;返回DOS第五章汇编语言程序设计§5.5子程序结构7/24/202331【例】对两个数组分别求和。主程序主体MOVAX,SIZEARY1PUSHAXMOVAX,OFFSETARY1PUSHAXCALLSUMMOVAX,SIZEARY2PUSHAXMOVAX,OFFSETARY2PUSHAXCALLSUM

;参数1(元素个数)入栈;参数2(数组首址)入栈第五章汇编语言程序设计§5.5子程序结构7/24/202332PROCE1SEGMENTASSUMECS:PROCE1,DS:DATAASSUMESS:STACKSUMPROCFARPUSHAXPUSHBXPUSHCXPUSHBP

MOVBP,SPPUSHFMOVCX,[BP+14]MOVBX,[BP+12]

【例】对两个数组分别求和。求和子程序MOVAX,0ADN:ADDAL,[BX]INCBXADCAH,0LOOPADNMOV[BX],AXPOPFPOPBPPOPCXPOPBXPOPAXRET4SUMENDPPROCE1ENDS

;保护现场;累加;恢复现场;取参数2;取参数1第五章汇编语言程序设计§5.5子程序结构7/24/202333【例】对两个数组分别求和。堆栈变化情况分析:MOVCX,[BP+14]MOVBX,[BP+12]

累加POPFPOPBPPOPCXPOPBXPOPAXRET4SUMENDPPROCE1ENDS

MOVAX,SIZEARY1PUSHAXMOVAX,OFFSETARY1PUSHAXCALLSUMSUMPROCFARPUSHAXPUSHBXPUSHCXPUSHBPMOVBP,SPPUSHF;参数1;参数2第五章汇编语言程序设计§5.5子程序结构7/24/202334【例】求n!。n(n-1)!(n>1)1(n=0/1)MAIN:MOVAX,3 CALLFACTX1:MOVBX,DX……;以n=3为例;n!结果主程序第五章汇编语言程序设计§5.5子程序结构n!=7/24/202335【例】求n!。主程序MAIN:MOVAX,3 CALLFACTX1:MOVBX,DX……子程序:FACTFACT:PROC CMPAL,0JNEIIA

MOVDX,1RETIIA:PUSHAXDECALCALLFACTX2:POPCXCALLMULT

X3:MOVDX,AXRETFACTENDP

子程序:MULTCL×DLAX第五章汇编语言程序设计§5.5子程序结构7/24/202336程序设计实例第五章汇编语言程序设计【例1】数制转换ASCII表示的十进制数二进制数(1)(2)ASCII表示的十六进制数二进制数二进制数ASCII表示的十进制数(3)7/24/202337【例】非压缩型十进制数转换为压缩型十进制数。0109H→1009H→19H思路:DAT1DW0109HDATASEGMENTDATAENDSMOVAX,DAT1 MOVCL,4

SALAH,CL

ORAL,AHMOVBYTEPTRDAT1,AL第五章汇编语言程序设计7/24/202338程序设计实例第五章汇编语言程序设计【例2】排序程序设计。N个字数据升序排序。【例3】在已排好序的数据表中查找关键字.(1)顺序查找.(2)对分查找.7/24/202339排序程序设计。(气泡排序法)排序规律:36-1790-8-80A0A1A2A3A4A4,A3A3,A236-17-8090-836-80-1790-8A2,A1

-8036-1790-8A1,A0

-8036-1790-8A0A1A2A3A4A4,A3A3,A2-8036-17-890-80-17

36-890A2,A136

90-80-8-17第一轮:依序两两比较,共n-1次,确定A0=min{A4~A0}第二轮:依序两两比较,共n-2次,确定A1=min{A4~A1}-8036-17-8907/24/20234036-1790-8-80A0A1A2A3A4A4,A3A3,A236-17-8090-836-80-1790-8A2,A1

-8036-1790-8A1,A036

90-80-8-17

-8036-1790-8A0A1A2A3A4A4,A3A3,A2-8036-17-890-80-17

36-890A2,A1-8036-17-890n个元素共比较n-1轮.外层循环第i轮:依序两两比较,共n-i次,确定Ai-1=min{A4~Ai-1}内层循环7/24/202341置外循环次数置表指针置内循环次数相邻比较,升序?交换表指针、内层次数修改内循环结束?外循环次数修改外循环结束?YYNNYNCHCLSIMOVCH,COUNT/2DECCHMOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论