欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    微机原理汇编语言程序设计.ppt

    • 资源ID:6161629       资源大小:331.49KB        全文页数:54页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理汇编语言程序设计.ppt

    微机原理及应用,MCS-51单片机,第七章 汇编语言程序设计,程序设计语言简介程序设计的步骤和方法转移指令和分支程序循环程序子程序及其调用程序设计举例,机器语言计算机唯一能够识别和执行的语言汇编语言“符号语言”,用指令助记符代表机器语言指令高级语言面向算法、过程、对象,类似自然语言,可移植性好,须经解释或翻译后才能被执行,程序设计语言简介,汇编,机器语言目标程序,汇编语言源程序,程序设计的步骤和方法,程序设计的步骤程序设计的方法常用伪指令汇编语言格式,程序设计的步骤,分析课题,确定算法和思路根据算法和思路画出流程图根据流程图编写程序上机调试,排除错误,流程图图例,起止框处理框判断框连线,程序设计的方法,结构化设计模块化设计开发方法自底向上开发先底层开发自顶向下开发先顶层开发混合方法,常用伪指令,定义:仅向汇编程序发出的,并仅由汇编程序在汇编程序中识别和执行的一种汇编控制命令,它本身在目标程序中不产生机器码。汇编起始伪指令:ORG汇编结束伪指令:END定义字节伪指令:DB定义字伪指令:DW定义位伪指令:BIT赋值伪指令:EQU,汇编起始伪指令,格式:ORG 功能:指定汇编源程序编译成机器语言程序 的起始地址例如:ORG 0000H ljmp 0100H ORG 0100H Start:mov A,#5Ah sjmp$END,汇编结束伪指令,格式:END 起始地址功能:停止汇编示例:ORG 0000H ljmp 0100H ORG 0100H Start:mov A,#5Ah sjmp$END mov A,#0A5h,定义字节伪指令,格式:DB 功能:把项或项表的数值存入从标号开始的连续单元,其中项或项表可以是一个字节、数或以引号括起来的字符串。ORG 1000HDat:DB 11h,22h,A,”BCD”END,定义字伪指令,格式:DW 功能:把项或项表的数值存入从标号开始的连续单元,其中项或项表是一个字(两字节)。ORG 1000HDat:DW 1122h,3344h END,定义位伪指令,格式:BIT 功能:定义位变量地址U BIT 20H.0V BIT 20H.1W BIT 20H.2X BIT 20H.3Y BIT 20H.4Z BIT 20H.5Q BIT 20H.6,赋值伪指令,格式:EQU 功能:定义符号变量值 X EQU 05H Y EQU 06H,汇编语言格式,指令格式:标号:助记符 参数,参数;注释伪指令格式:名字 定义符 参数,参数;注释,参数类型,常数:01010101B;12D,12;0F1H,59H67Q;A,a操作数:A,B,DPTR表达式mov A,#(12H-03H),转移指令和分支程序,控制转移类指令无条件转移指令条件转移指令比较转移指令循环转移指令分支程序用cjne实现三分支用 jmp A+DPTR 实现多分支,无条件转移指令,绝对无条件转移指令长转移指令短转移指令间接转移指令,格式:ajmp addr11;功能:无条件转向指令中提供的11位地址。转移范围:2K,PC1511不变例:ajmp Start,绝对无条件转移指令,a10a9a800001,a7a6 a0,长转移指令,格式:ljmp addr16;(PC)addr16功能:无条件转向指令中提供的16位地址。三字节指令,后两个字节为转移的目 标地址.转移范围:64K例:ljmp Start,短转移指令,格式:sjmp rel;(PC)(PC)+2,(PC)(PC)+rel功能:相对转向指令,rel 为一字节补码形式的相对偏移量.转移范围:-128+127例:sjmp Loop sjmp$,间接转移指令(散转),格式:jmp A+DPTR;(PC)(A)+(DPTR)功能:根据A与DPTR的内容转移,转移的 目标地址可变.例:mov DPTR,JMP_TBL jmp A+DPTRJMP_TBL:ajmp Lable1 ajmp Lable2.,条件转移指令,判零转移指令判位变量转移指令判位变量并清零转移指令判布尔累加器C转移指令,判零转移指令,格式:jz rel;rel:8位相对偏移量功能:(PC)(PC)+2,IF(A)=0 THEN(PC)(PC)+rel ELSE go on格式:jnz rel;rel:8位相对偏移量功能:(PC)(PC)+2,IF(A)0 THEN(PC)(PC)+rel ELSE go on,判位变量转移指令,格式:jb bit,rel;rel:8位相对偏移量功能:(PC)(PC)+3,IF(bit)=1 THEN(PC)(PC)+rel ELSE go on格式:jnb bit,rel;rel:8位相对偏移量功能:(PC)(PC)+3,IF(bit)=0 THEN(PC)(PC)+rel ELSE go on,判位变量并清零转移指令,格式:jbc bit,rel;rel:8位相对偏移量功能:(PC)(PC)+3,IF(bit)=1 THEN(PC)(PC)+rel and(bit)=0 ELSE go on,判布尔累加器C转移指令,格式:jc rel;rel:8位相对偏移量功能:(PC)(PC)+2,IF(C)=1 THEN(PC)(PC)+rel ELSE go on格式:jnc rel;rel:8位相对偏移量功能:(PC)(PC)+2,IF(C)=0 THEN(PC)(PC)+rel ELSE go on,比较转移指令,格式:cjne(目的字节),(源字节),rel功能:目的字节与源字节比较,不相等则转移,同时,若目的字节源字节则(C)=0;若目的字节源字节则(C)=1。相等则继续执行。cjne A,direct,rel;cjne A,#date,rel;cjne Rn,#date,rel;cjne Ri,#date,rel,循环转移指令,格式:djnz Rn,rel;rel:8位相对偏移量功能:(PC)(PC)+2,(Rn)(Rn)-1 IF(Rn)0 THEN(PC)(PC)+rel ELSE go on格式:djnz direct,rel;rel:8位相对偏移量功能:(PC)(PC)+3,IF(direct)0 THEN(PC)(PC)+rel ELSE go on,用cjne实现三分支,cjne R0,#0,MP1 mov R1,#0 sjmp MP3MP1:mov A,R0 jnb ACC.7,MP2 mov R1,#0FFh sjmp MP3MP2:mov R1,#01hMP3:sjmp$,y=,R0 x,R1y,用 jmp A+DPTR 实现多分支,KeyB5:mov DPTR,#JMPTBL clr C subb A,#0Ah rl A JMP A+DPTRJMPTBL:ajmp AAA ajmp BBB ajmp CCC ajmp DDD,循环程序,循环程序结构单循环程序例1:多字节求和例2:内部数据区清零多重循环程序例3:50ms延时程序,循环程序结构,循环初始化:循环控制变量的初始化、数据变量的初始化循环工作部分:循环主体,重复执行的计算循环控制部分:循环变量的修改、终止控制,例1:多字节求和,ORG 0000HSUM:mov R3,#0 mov R4,#0 mov R0,#50H mov R2,#5Loop:mov A,R4 add A,R0 mov A,R4 inc R0 clr A addc A,R3,mov R3,A djnz R2,Loop sjmp$END,例2:内部数据区清零,ORG 0000HZero:mov R0,#30H mov R7,#10 mov A,#00HLoop:mov R0,A inc R0 djnz R7,Loop sjmp$END,例3:50ms延时程序,Delay:mov R7,#200Del1:mov R6,#123 nopDel2:djnz R6,Del2 djnz R7,Del1 sjmp$,;1us;1us;1us;2us;2us,子程序及其调用,子程序调用与返回指令子程序设计方法子程序的调用过程与子程序嵌套调用过程中的参数传递通过寄存器传递通过堆栈传递通过数据指针(DPTR)传递,子程序调用与返回指令,绝对调用指令acall addr11;(PC)(PC)+2,(SP)(SP)+1(SP)(PC07),(SP)(SP)+1,(SP)(PC815),(PC010)addr11,(PC1115)不变lcall addr16返回指令ret;(PC815)(SP),(SP)(SP)-1(PC07)(SP),(SP)(SP)-1举例:,子程序调用与返回指令举例,ORG 0000HStart:mov A,#0 acall Sub1 mov A,#0 lcall Sub2 sjmp,Sub1:inc A retSub2:dec A ret END,子程序设计方法,格式:;子程序名;子程序功能:;入口参数:;出口参数:;占用资源:子程序名:.,子程序的调用过程与子程序嵌套,主程序要使用子程序时通过call 指令子程序执行完后通过ret 指令返回防止自然进入子程序和自然退出子程序子程序嵌套,通过寄存器传递,方法简单、参数有限例:ORG 0000HMain:mov R0,#40h mov R7,#10H lcall Zero sjmp$,;子程序名:Zero;功能:对内部数据区清零;入口参数:R0内部数据区;R7内部数据区长度;出口参数:无;占用资源:A,R0,R7Zero:clr ALoop:mov R0,A inc R0 djnz,R7,Loop ret,通过堆栈传递,ORG 0000HMain:mov 70H,#40h mov 71H,#10H push 70h push 71h lcall Zero sjmp$,;子程序名:Zero;功能:对内部数据区清零;入口参数:70内部数据区地址;71h内部数据区长度;出口参数:无;占用资源:A,R0,R7,70h,71hZero:pop DPH pop DPL pop 07h;R7 pop 00h;R0 clr ALoop:mov R0,A inc R0 djnz,R7,Loop push DPL push DPH ret,通过数据指针(DPTR)传递,将待传递参数紧跟在调用指令之后 ORG 0000HMain:nop acall PrintDB:”THIS IS AN EXAMPLE”DB:0AH,0DH,00HNext:nop sjmp$END,Print:pop DPH pop DPLPPP1:mov A,#00h movc A,A+DPTR inc DPTR jz PPPEndPPP2:mov P1,A sjmp PPP1PPPEnd:jmp A+DPTR,程序设计举例,算术运算程序 多字节加法 多字节BCD码减法逻辑运算程序 数据的拼装 ASCII码二进制查表程序 以PC为指针 以DPTR为指针散转程序 转移指令表 地址偏移量表 转向地址表,多字节加法,2F 5B A7 C3 H(43 42 41 40)H+14 DF 35 B8 H(53 52 51 50)H ORG 0000HJia:mov R0,#40h mov R1,#50h mov R2,#4 clr CJia1:mov A,R1 addc A,R0 mov R0,A inc R0,inc R1 djnz R2,Jia1 mov F0,C sjmp$END,多字节BCD码减法,99 88 77 66 H(43 42 41 40)H-44 55 66 77 H(53 52 51 50)H ORG 0000HJia:mov R0,#40h mov R1,#50h mov R2,#4 clr CJia1:mov A,#9Ah subb A,R1 add A,R0 mov R0,A,inc R0 inc R1 djnz R2,Jia1 mov F0,C sjmp$END,数据的拼装,x7x6x5x4x3x2x1x0(20H)y7y6y5y4y3y2y1y0(21H)y2y0y0 x4x3x2x1x0(30H)ORG 0000HStart:mov 30h,20h anl 30h,#00011111b mov A,21h swap A rl A anl A,#11100000b orl 30h,A sjmp$END,ASCII码二进制,ORG 0000HAtoH:mov A,#A clr C subb A,#30h cjne A,#0Ah,NEQ sjmp BIGNEQ:jc AENDBIG:subb A,#07hAEND:sjmp$END,ORG 0000HHtoA:mov A,#0Bh add A,#90h da A addc A,#40h da A sjmp$END,以PC为指针查表程序,TB1:mov A,R2 add A,R2 mov R3,A add A,#06H movc A,A+PC xch A,R3 add A,#03H movc A,A+PC mov R4,A sjmp$,TAB1:DW 1520,3721,4264 DW7850,3483,32657 DW 883,9943,1000 DW 4051,6785,8931 DW 4468,5871 DW 13284,27808 END,以DPTR为指针查表程序,LTB2:mov DPTR,#TAB2 mov A,R3 clr C rlc A mov R3,A xch A,R2 rlc A xch R2,A add A,DPL mov DPL,A mov A,DPH addc A,R2 mov DPH,A,clr A movc A,A+DPTR mov R2,A clr A inc DPTR movc A,A+DPTR mov R3,A retTAB2:DW.,使用转移指令表的散转程序,ORG 0000H mov R2,#2Main:mov DPTR,#TAJ1 mov A,R2 add A,R2 jnc NADD inc DPTRNADD:jmp A+DPTRTBJ1:ajmp PRG0 ajmp PRG1 ajmp PRG2 ajmp PRG3 sjmp$,PRG0:mov A,#0 sjmp HaltPRG1:mov A,#1 sjmp HaltPRG2:mov A,#2 sjmp HaltPRG3:mov A,#3Halt:sjmp$END,使用地址偏移量表的散转程序,JMP3:mov R2,#2 mov DPTR,#TBJ3 movc A,A+DPTR jmp A+DPTRTBJ3:DB PRG0-TBJ3 DB PRG1-TBJ3 DB PRG2-TBJ3 DB PRG3-TBJ3 DB PRG4-TBJ3 DB PRG5-TBJ3,PRG0:mov R0,#0 sjmp HaltPRG1:mov R0,#1 sjmp HaltPRG2:mov R0,#2 sjmp HaltPRG3:mov R0,#3 sjmp HaltPRG4:mov R0,#4 sjmp HaltPRG5:mov R0,#5Halt:sjmp$,使用转向地址表的散转程序,JMP4:mov R2,#1 mov DPTR,#TBL4 mov A,R2 add A,R2 jnc NADD inc DPHNADD:mov R3,A movc A,A+DPTR xch A,R3 inc A movc A,A+DPTR mov DPL,A mov DPH,R3,clr A jmp A+DPTRTBL4:DW PRG0 DW PRG1 DW PRG2 DW PRG3PRG0:mov R0,#0 sjmp HaltPRG1:mov R0,#1 sjmp HaltPRG2:mov R0,#2 sjmp HaltPRG3:mov R0,#3Halt:sjmp$,

    注意事项

    本文(微机原理汇编语言程序设计.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开