资源描述:
《微机CH4 汇编语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、汇编语言程序设计第四章4.0概述4.1汇编语言程序格式4.2MASM中的表达式4.3伪指令语句4.4程序设计方法4.5DOS系统功能调用4.4程序设计方法一、汇编语言源程序设计基本步骤1、明确任务,确定算法。2、画流程图。3、分配存储空间及工作单元分析需要定义的段、变量、变量类型、长度;规划各寄存器的使用等4、编写源程序(.ASM)、汇编(.OBJ)、连接(.EXE)。5、程序调试。主要采用DEBUG来调试。开始执行框判断二、基本程序结构顺序结构分支结构循环结构子程序结构DATASEGMENT………DATAENDSC
2、ODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX……………MOVAH,4CHINT21HCODEENDSENDSTART……………顺序结构分支结构循环结构子程序结构顺序结构顺序结构分支结构循环结构子程序结构两个分支YN三个分支YYNN顺序结构分支结构循环结构子程序结构循环初始设置循环体循环条件判断?YNYN循环初始设置循环体循环条件判断?顺序结构分支结构循环结构子程序结构codeSEGMENT…begin:…CALLsub1…CALLsub2…MOVAH,
3、4CHINT21Hsub1PROC…RETsub1ENDPsub2PROC…RETsub2ENDPcodeENDSENDbegin1、顺序结构例1:已知当前数据段中有一个十进制数字0~9的七段代码表,其数值依次为40H、79H、24H、30H、19H、12H、02H、78H、00H、18H。要求用XLAT指令将十进制数57转换成相应的七段代码值,存到BX寄存器中,编写完整的汇编源程序。分析:先求5的七段代码值,再求数字7的;需定义数据段、七段代码表:TAB,字节变量;关键指令XLAT,表偏移地址放BX,原数字放入AL
4、;三、程序举例源程序清单:DATASEGMENTTABDB40H,79H,24H,30HDB19H,12H,02H,78HDB00H,18HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX(转右)MOVAH,4CH;返回DOSINT21HCODEENDSENDSTARTMOVBX,OFFSETTABMOVAL,5XLATMOVAH,ALMOVAL,7XLATMOVBX,AX2、分支结构程序根据不同条件选择不同处理方法三、程序举例例2:求内
5、存中数X的绝对值,并送回原处2.根据以上分析画出流程框图3.根据流程图确定所用寄存器,并编写源程序;需定义数据段、变量X、使用寄存器AL1.分析:XX-0X0X<0
6、X
7、=程序框图及清单:开始从内存取数X0?对X求负并回送结束YNDATASEGMENTXDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;MOVDS,AX将数据段段地址送入DSMOVAL,[X]CMPAL,00H;与0比较JGERETURNNEGAL;求负MOV[X],AL;回送结
8、果RETURN:MOVAH,4CH;返回DOSINT21HCODEENDSENDSTART;结束源程序3、循环结构两种形式:1)“先执行,后判断”:进入循环后至少要执行一次循环体,再判断循环是否结束。---用于循环次数固定的程序(简单)(掌握)2)“先判断,后执行”:进入循环后,先判断循环结束条件,再决定是否执行循环体,可能循环体一次也不执行。---用于循环次数不确定的程序三、程序举例(a)“先执行,后判断”结构(b)“先判断,后执行”结构初始化部分入口循环体修改参数出口循环条件?YN初始化部分入口循环体修改参数出口
9、YN循环条件?两种循环结构都包括四部分:1)初始化---设置计数值、地址指针2)循环体---循环部分的核心:循环的全部执行指令3)修改参数---改地址指针,为下次循环做准备4)循环控制---修改计数值,进行判断(LOOP)例3:将附加段起始地址为DA1的100个字节的存储区内容清0。DATASEGMENTDA1DB100DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,ES:DATASTART:MOVAX,DATAMOVES,AX(转右边)MOVAH,4CH;返回DOSINT21HCODE
10、ENDSENDSTART读程序:分析程序执行过程、功能及特点MOVAL,00HMOVCX,0064HLEABX,DA1;初始化LP:MOVES:[BX],AL;循环体INCBX;修改参数LOOPLP;循环控制例4:编程在一串给定个数的数据区BUFF中寻找最小数,结果存放至MIN单元中!(循环+分支结构)DATASEGMENTBUFFDB42H,