第4章 汇编语言程序设计ppt课件.ppt

第4章 汇编语言程序设计ppt课件.ppt

ID:59207216

大小:319.00 KB

页数:36页

时间:2020-09-26

第4章 汇编语言程序设计ppt课件.ppt_第1页
第4章 汇编语言程序设计ppt课件.ppt_第2页
第4章 汇编语言程序设计ppt课件.ppt_第3页
第4章 汇编语言程序设计ppt课件.ppt_第4页
第4章 汇编语言程序设计ppt课件.ppt_第5页
资源描述:

《第4章 汇编语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章汇编语言程序设计循环程序简单程序查表程序子程序分支程序4.1程序设计过程任务分析(硬件、软件系统分析)确定算法和工作步骤,程序总体设计和流程图绘制分配内存及端口,确定程序与数据区存放地址编制源程序仿真、调试程序固化程序编程技巧程序功能模块化(按功能分:显示、打印、输入、发送等)尽量采用循环结构和子程序(节省内存)多采用累加器来传递参数注意现场保护,即压入堆栈汇编语言的规范汇编语言源程序由以下两种指令构成汇编语句(指令语句)伪指令(指示性语句)汇编语句的格式:标号:操作码操作数;注释数据表示形式:二进制(B)、十六进制(H)、十进制(D或省

2、略)、ASCII码(以单引号标识)汇编语言程序编辑和汇编1.编辑(源程序,以.ASM扩展名存盘);2.汇编(手工或机器汇编);如:(MOVA,#88H;机器码74H,88H)又如:地址目标码源程序ORG1000H1000H747FMOVA,#7FH1002H7944MOVR1,#44HEND4.2顺序程序设计例:求多项式a2-b解:设a存放在R2中,b存放在R3中,结果存放在R6和R7中。程序如下:MOVA,R2MOVB,AMULAB;A*B=>BACLRCSUBBA,R3;带进位减MOVR7,A;存低8位MOVA,BSUBBA,#00H;高八

3、位减进位MOVR6,A;存高字节END4.3分支程序设计根据不同的条件转向不同的处理程序控制转移指令AJMP、LJMP、SJMP、JMPJZ、JNZ、CJNE、DJNZ位转移指令JC、JNC、JB、JNB、JBC举例:累加器A内有一个16进制ASCII字符,要求转换成一个16进制数存放于A。ASCII字符转换成16进制数规则:数字0~9:只需减30H字母A~F:减30H,再减7START0C(A)-30HA(A)<10?(A)-7AENDASCH:CLRCSUBBA,#30CJNEA,#10,$+3;比较JCAH10;<10,转移SUBB

4、A,#07;否则再减7AH10:RET散转程序—多分支程序散转程序是指通过修改某个参数后,程序可以有三个以上的流向,多用于键盘程序。常用的指令是JMP@A+DPTRDPTR+APCA中内容为8位无符号数16位地址数K=?分支程序0分支程序1分支程序n程序清单如下:JUMP1:MOVDPTR,#JPTAB1;跳转表首送数据指针MOVA,R7ADDA,R7;R72A(修正变址值)JNCNOAD;判有否进位INCDPH;有进位则加到高字节地址NOAD:JMP@A+DPTR;转向形成的散转地址人口JPTAB1:AJMPOPR0;直接转移地址表AJM

5、POPR1.AJMPOPRn例:根据R7的内容,转向各自对应的操作程序(R7=0,转入OPR0;R7=1,转入OPR1…R7=n,转入OPRn)4.4循环程序按某种控制规律重复执行的程序称为循环程序。循环程序有先执行后判断和先判断后执行两种基本结构:循环程序的结构置循环初值循环体修改控制变量,循环是否结束结果处理一、先执行后判断例50ms延时程序。若晶振频率为12MHz,则一个机器周期为1μs。执行一条DJNZ指令需要2个机器周期,即2μs。50ms=2us×125×200采用循环计数法实现延时,循环次数可以通过计算获得,并选择先执行后判断的循

6、环结构。编程:DEL:MOVR7,#200DEL1:MOVR6,#125DEL2:DJNZR6,DEL2DJNER7,DEL1RET实际上,该程序执行时间>50ms,因为没有考虑到除DJNZ指令之外的其它指令的执行时间。DEL:MOVR7,#200;1μsDEL1:MOVR6,#123;1μsNOP;1μsDEL2:DJNZR6,DEL2;2μs,计(2×123)μsDJNZR7,DEL1;2μsRET;2μs共计[1+(1+1+2×123+2)×200+2]μs,即50.003msMOVR0,#dataMOVDPTR,#bufferLOOP0

7、:MOVA,@R0CJNEA,#24H,LOOP1;判断是否为‘$’字符SJMPLOOP2;是‘$’字符,转结束LOOP1:MOVX@DPTR,A;不是‘$’字符,执行传送INCR0INCDPTRSJMPLOOP0;传送下一数据LOOP2:……二、先判断后执行例将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buffer的存储区域内,直到发现‘$’字符停止传送。由于循环次数事先不知道,但循环条件可以测试到。所以,采用先判断后执行的结构比较适宜。程序段如下:例:200名学生参加考试,成绩放在89C51外部RAMXDATA开始的

8、单元中,95~100分颁发A级证书,90~94分颁发B级证书,编一程序,统计获A、B级证书的人数。将结果存入内部RAM的两个单元。ORG0030HEG

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。