IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机指令汇集,分类,以及典型指令案例分析 -> 正文阅读

[嵌入式]51单片机指令汇集,分类,以及典型指令案例分析

1,指令汇集?(个人总结)

?典型示例代码:

//*************************************************************
//名称:两位双字节进制数相乘
// (R7)(R6)=(R7)*2^8+(R6)
//(R5)(R4)=(R5)*2^8+(R4)
//(R7)(R6)*(R5)(R4)=(R7)*(R5)*2^16+(R7)*(R4)*2^8+(R6)*(R5)*2^8+(R6)*(R4)
//***************************************************************
DATA1   EQU   35H  //用于暂存可能进位 
DATA2   EQU    36H
TEST       EQU    37H
ORG 0000H
AJMP MAIN
ORG 0030H
MOV 30H,#00H  ;0-7
MOV 31H,#00H  ;8-15
MOV 32H,#00H  ;16-23
MOV 33H,#00H  ;24-31
MAIN:
      .............
MULTIPLY:
             CLR C
             MOV R1,30H  //用于间接寻址
             MOV A,  R6
             MOV A,  R4
             MUL  AB
             MOV @R1,  A   //7-0已存好  ????MOV 30H,  A
             MOV  DATA1,  B  //(R4)*(R6)暂存计算的15-8位
             MOV A,  R7
             MOV B,  R4
             MUL   AB
             ADD A ,DATA1  //此时15-8位相加可能有溢出进位
             MOV  DATA1,  A  //加完在暂存
             MOV  DATA2,  B //暂存23-16位
             MOV A,  DATA2
             ADDC A,  #00H  
             MOV   DATA2,  A  //一系列的步骤就是回应在15-8中有相加的进位端,暂存23-16
             MOV A,  R6
             MOV B,  R5
             MUL  AB
             ADD  A, DATA1  //仍然是15-8的加法
             INC R1
             MOV @R1, A  //15-8已存放?????MOV  31H, A
             MOV A, DATA2  //23-16位上个
             ADDC A,  B
             MOV DATA2, A  // 再暂存23-16
             MOV  TEST,00H
PICK:     JNC NEXT  //因为CY也就是C的值是根据ADD或ADDC变化而变化,只要没进位就清零
              MOV TEST,01H       //这也导致了不能出现两个情况的数相加,而下面又有个相加的
NEXT:
             MOV A,  R7
             MOV  B,  R5
             MUL   AB            //(R7)(R5)
             ADD A,  DATA2  //上个加法可能进位,现判断是否进位23-16
             INC R1
             MOV @R1,  A   //已存放23-16????MOV 32H,  A
             MOV A  ,B
             ADDC A,  #00H //先进位,后面相加的
             ADDC  A, TEST
             INC R1
             MOV  @R1,  A // 已存放31-24位?????MOV  33H,  A
             RET
//*************************************************************
//名称:8位2进制数转换BCD码
//何为BCD码:就是把一个数转换成@#¥
//其中@为0-9但是要用4位二进制数表示(在51情况)这里BCD1存放百位
//其中#为0-9但是要用4位二进制数表示(在51情况)这里BCD0 高四位存放十位
//其中¥为0-9但是要用4位二进制数表示(在51情况)这里BCD0低四位存放个位
//转换思想:把8位二进制数看成一个十进制处理
//***************************************************************
8BIT    EQU  40H
BCD0  EQU  41H
BCD1  EQU  42H
BCD2  EQU  43H
TRANSFORM:
          MOV  A, 40H
          MOV  B, #100
          DIV    AB
          MOV BCD2,  A
          MOV  A,  B
          MOV  B,  #10
          DIV    AB    ///计算完了之后,A为0000 xxxx   B为 0000  xxxx
          SWAP A   ;因为A为十位,所以要移到高四位
          ADD   A,  B
          MOV  BCD0  ,A
        RET

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:22:14  更:2021-08-03 11:24:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:57:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码