找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2131|回复: 2
打印 上一主题 下一主题
收起左侧

汇编语言 逐条解释指令 求助大神啊,谢了

[复制链接]
跳转到指定楼层
楼主
1-逐条解释指令
2-说明整个程序功能


IMG_4264.JPG (58.17 KB, 下载次数: 49)

IMG_4264.JPG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2017-3-15 22:56 | 只看该作者
本帖最后由 angmall 于 2017-3-15 23:43 编辑

  1.                
  2.                 ;点亮P2口的多个LED灯闪烁
  3.         ;该程序是单片机学习中最简单最基础的,
  4.                 ;通过程序了解如何控制端口的高低电平
  5.         ORG 0000H        ;意思是该条指令从ROM的0000H单元开始存放,
  6.         LJMP MAIN         ;LJMP longjump简写
  7.         ORG 030H        ;意思是此指令从ROM的30H开始存放,该指令是为了绕开0003H,000BH,0013H,001BH.....等中断入口而设置.
  8. MAIN:                                ;主循环
  9.         MOV P2, #00H        ; P2口 赋初值

  10.         ACALL DELAY                ; 单片机ACALL是短调用子程序的意思。
  11.         MOV P2, #0FFH        ; 此方法使用bit位对单个端口赋值 换成二进制是1111 1111
  12.         ACALL DELAY
  13.         AJMP MAIN                ; 是无条件跳转指令之一,叫做绝对跳转。 AJMP的范围为正负2K单元。
  14. DELAY:                                ;   延时 523277个机器周期
  15.         MOV R5, #04H        ; 典型延时程序 523277个机器周期
  16. F3: MOV R6, #0FFH        ;
  17. F2: MOV R7, #0FFH        ;
  18. F1: DJNZ R7,F1                ; DJNZ是减一判断
  19.         DJNZ R6,F2                ;
  20.         DJNZ R5,F3                ;
  21.         RET
  22.         END
复制代码



;例如MOV指令,执行这条指令需要一个机器周期。DJNZ指令,执行这条指令需要2个机器周期。
;延时程序共有三层循环

;一层循环n:R7*2 = 255*2 = 510个机器周期  (DJNZ 2个机器周期)

;二层循环m:R6*(n+3) = 255*513 = 130815个机器周期 (DJNZ 2个机器周期 + R5赋值 1个机器周期 = 3个机器周期)

;三层循环: R5*(m+3) = 4*130818 = 523272个机器周期 (DJNZ 2个机器周期 + R6赋值 1个机器周期= 3个机器周期)

;循环外: 5个机器周期 子程序调用 2个机器周期 + 子程序返回 2个机器周期 + R7赋值 1个机器周期 = 5个机器周期

;延时总时间 = 三层循环 + 循环外 = 523272+5 = 523277个机器周期

;计算公式:延时时间=[(2*R7+3)*R6+3]*R5+5



ORG 0000H
LJMP MAIN  ;意思是该条指令从ROM的0000H单元开始存放,
ORG 0030H
MAIN:MOV .....  ;意思是此指令从ROM的30H开始存放,该指令是为了绕开0003H,000BH,0013H,001BH.....等中断入口而设置.
ORG指令属于伪指令,不控制程序执行,只是控制汇编过程,也就是说,ORG指令在汇编过程中,告诉紧随其后的指令存放的位置.所以在程序执行时,从0000H单元取出长转移指令LJMP MAIN后,自然会转移到主程序MAIN:MOV.......了.

评分

参与人数 1黑币 +100 收起 理由
admin + 100 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:171023 发表于 2017-3-16 08:07 来自手机 | 只看该作者
angmall 发表于 2017-3-15 22:56
;例如MOV指令,执行这条指令需要一个机器周期。DJNZ指令,执行这条指令需要2个机器周期。
;延时程序 ...

感谢大神
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表