855-第六节 汇编语言程序设计 讲课内容一、概述1. 编写汇编语言程序步...

上传人:仙*** 文档编号:244403246 上传时间:2024-10-04 格式:PPT 页数:37 大小:158KB
返回 下载 相关 举报
855-第六节 汇编语言程序设计 讲课内容一、概述1. 编写汇编语言程序步..._第1页
第1页 / 共37页
855-第六节 汇编语言程序设计 讲课内容一、概述1. 编写汇编语言程序步..._第2页
第2页 / 共37页
855-第六节 汇编语言程序设计 讲课内容一、概述1. 编写汇编语言程序步..._第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第六节 汇编语言程序设计,讲课内容,一、概述,1.编写汇编语言程序步骤,2.判断程序质量的标准,3.几种程序结构,二、汇编语言程序设计举例,例1 将寄存器,BX,中的内容以十六进制形式显示出来。,例2 将键盘输入的十进制数据串转换成其相应大小的数值,存放在,BX,寄存器中,。,复习内容:,p110p140,1,1、作业,3-16,3-20,2、,选择其中之一大作业,(1),、,实验四,任务1,作为家庭作业,在计算机上调通,,经过教师检查,签字。,(2)、阅读教课书中,P125 P132(3.8.1 3.8.4,节),的程序并写出总结(程序,内涵,)。,内容:,子程与主程的参数传送:,用寄存器传送 用定义的变量传送,,利用地址表传送 用堆栈传送,2,3,一、概述,1.,编写汇编语言程序步骤,2.,判断程序质量的标准,3.,几种程序结构,4,一.编写汇编语言程序步骤,分析实际问题,抽象描述问题的模型,确定解决模型的算法,按算法画出程序流程图,按流程图编写程序,上机调试,运行程序,5,2.判断程序质量的标准,程序的正确性,程序的可读性,程序的执行时间,程序所占内存大小,6,3几种程序结构,顺序结构,分支结构,循环结构,子程结构,7,顺序结构,8,两个分支,Y,N,、,CMP AL,BL,JG great,JMP exit,great:,exit:、,、,AL,BL,处理,AL,BL,处理,分支结构,9,三个分支,、,CMP AL,0,JG great,JL less,JMP exit,less:,JMP exit,great:,exit:,、,AL,=,0,处理,AL0,处理,AL,LIST_REG,;,在,DOS,下执行程序,0000 0000 00,FF 0BDF 0000 0912 0000 0000 0BDF 0BDF 0BEF 0BEF 0000 3202,D:,DEBUG,LIST_REG.EXE,;,利用,DEBUG,检测结果,-,R,;,显示当前寄存器内容,AX=,0000,BX=0000 CX=,007B,DX=0000 SP=,0000,BP=0000 SI=,0000,DI=0000,DS=,128E,ES=128E SS=,129E,CS=129E IP=,0000,NV UP EI PL NZ NA PO NC,129E:0000 53 PUSH BX,-,G,;,执行程序,0000,0000,007,B,0000,0000,0000,0000,0000,128E,128E,129E,129E,0000,7202,Program terminated normally,-,运行的结果与用,R,命令显示的结果相同,程序运行结果正确,26,例2,将键盘输入的十进制数据串转换成相应大小的十六进 制数值存放在,BX,寄存器中。,分析:,从键盘输入1234 (表示1234),用0,AH,功能输入,则缓冲区存放的内容为:,06,h,04,h,31,h,32,h,33,h,34,h,0Dh,num,问题:,要转换成1234 即 04,D2h,存放在,BX,中,怎么实现?,清,ASCII,码的高4位可得各数位大小值。,01,h,02,h,03,h,04,h,04,D2h,?,27,算法一:,数值大小=各位值权值之和,1234,D =,千位1000+百位100+十位10+个位,=11000+2100+310+4,=0000 0100 1101 0010,B,=04D2H,01,h,02,h,03,h,04,h,04,D2h,?,28,算法二:,数值大小=部分和10+下一位数值,1234,D=(010+1)10+2)10+3)10+4,=0000 0100 1101 0010B,=04D2H,部分和从0开始,循环次数等于输入的位数,01,h,02,h,03,h,04,h,04,D2h,?,29,data SEGMENT,string DB Input:,$,num DB 6,?,6 DUP(?),data ENDS,CODE SEGMENT,ASSUME CS:code,DS:data,start:MOV AX,data,MOV DS,AX,CALL input,CALL change,CALL list_,bx,MOV AH,4CH,INT 21H,开始,初始化,DS,的值,CALL input,显示输入提示,等待,从键盘输入十进制数据串,CALL change,将数据串转化为,相应的数值存放在,BX,中,返回,DOS,主程序流程图,CALL list_,bx,将,BX,内容以16 进制显示出来,30,input,子程序流程图,调用,09,功能,显示输入提示,调用,0,A,功能,等待从键盘输入数据,RET,返回,input PROC,LEA DX,string,MOV AH,09H,INT 21H,LEA DX,num,MOV AH,0AH,INT 21H,RET,input ENDP,06,04,31,32,33,34,0D,00,num,00,00,31,change,子程序流程图,(,BX),输入字符的数值大小,SI,数据串偏址,CX,数据串长度,AX,部分和初值0,DI,乘数10,Y,N,RET,返回,AX,部分和乘10,(,AX)(AX)+(BX),形成新的部分和,修改,SI,指针,,指向下一位输入,BX,转换结果,AX,CX CX-1,CX=0?,change PROC,LEA SI,num+2,MOV CL,num+1,MOV CH,0,MOV AX,0,MOV DI,10,next:,MUL DI,MOV BH,0,MOV BL,SI,AND BL,0FH,ADD AX,BX,INC SI,LOOP next,zero:MOV BX,AX,RET,change ENDP,06,04,31,32,33,34,0D,00,num,00,00,1234,D=,(,(,0,10,+1,),10,+2,),10,+3,),10,+4,32,显示字符个数,CH=4,循环移位次数,CL=4,BX,循环左移4位,将要显示的值移至低4位,保存在,DL,中,清,DL,的高4位,,只保留要显示位的值,DL DL+30H,完成数值09的,ASCII,码转换,Y,N,DLDL+07H,完成数值,AF,的,ASCII,码转换,用02功能显示,DL,中的字符,Y,N,RET,返回,DL,超出39,H?,CH CH-1,转换结束?,list_,bx,子程序流程图,list_,bx,PROC,MOV CH,4,MOV CL,4,next:,ROL BX,CL,MOV DL,BL,AND DL,0FH,ADD DL,30H,CMP DL,39H,JLE print,ADD DL,07H,print:MOV AH,2H,INT 21H,DEC CH,JNZ next,RET,;,子程返回,list_,bx,ENDP,code ENDS,END start,33,例2 程序存在的问题:,1,未处理输入非数字字符的情况,2,输入的十进制数范围为065535,3,当输入字符个数为0(直接回车)时,结果错误,4,未处理负数情况,5,结果的显示未换行,Input:1234,最后看到的是:,0,D42t:1234,34,编写子程序的注意事项:,注意子程中,PUSH、POP,应成对,,否则易造成死机。,data SEGMENT,string DB Hello,$,data ENDS,code SEGMENT,ASSUME CS:code,DS:data,start:MOV AX,data,MOV DS,AX,CALL,input,MOV AH,4CH,INT 21H,input PROC,PUSH AX,LEA DX,string,MOV AH,09H,INT 21H,RET,input ENDP,code ENDS,END start,执行,call,前,SS:SP,(AX),执行,call,后,SS:SP,(IP),执行,push,后,SS:SP,执行,ret,后,SS:SP,(IP),35,例,下面程序段,思考是否可以完成,AX CX,BXDX,CODE SEGMENT,ASSUME CS:code,start:MOV AX,data,MOV DS,AX,PUSH AX,PUSH BX,CALL sub,MOV AH,4CH,INT 21H,sub PROC,POP DX,POP CX,、,、,RET,sub ENDP,code ENDS,END start,如何用堆栈传送参数,,参看教材,或相关参考书。,push ax,前,SS:SP,(BX),push ax,后,SS:SP,(AX),push,bx,后,SS:SP,执行,ret,后,SS:SP,(IP),call sub,后,SS:SP,SS:SP,pop,dx,后,SS:SP,pop,cx,后,(DX),(CX),36,2.子程与主程的参数传送:(,p124p132),用寄存器传送,(例二中,list_,bx,子程序用,BX,寄存器传送参数,),用定义的变量传送,(例二,change,子程序用,变量,num+2,传送参数),3),利用地址表传送(自学),4),用堆栈传送(自学),37,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!