【HC89S003F4开发板】 10汇编指令
HC89S003F4开发板汇编指令
一、数据传递类指令
MOV、MOVC、MOVX
- 1、MOV,用于片内数据存储器中的数据传递指令中。
- 2、MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数据传送;
- 3、MOV就是移动的意思,C就是Code,代码的意思,X就是eXternal,外部的意思 MOVC就是读代码存储器,MOVX就是读写外部存储器,即外部RAM ;
- 4、MOVC是读取ROM中的数据,只能读不能写(一般来说主要是用来读取常量或常量表) MOVX是读写外部扩展的RAM和扩展的IO口,可以读也可以写。
MOVX A,@RI
MOVX @RI,A
MOVX A,@DPTR
MOVX @DPTR, A
MOVC A,@A+DPTR
PUSH、POP
进出栈,栈是FILO(first in last out),先进后出
也就是把寄存器里的数据临时保存一下,相当与一个仓库。
需要注意,使用命令时,确认栈的位置,保证不溢出、不覆盖变量。
XCH、XCHD
XCH 交换双方的全部 8 位数。
XCHD 交换双方的低 4 位数。
二、算术运算类指令
INC、DEC、MUL、DIV
inc a 相当于 add a,1
dec a 相当于 sub a,1
优点 速度比sub或add指令快,占用空间小
这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF进位标志位。
mul 累加器ACC*寄存器b,保存在ACC
DIV 累加器ACC/寄存器b,保存在ACC
在c库里还有16位乘除的方法
EXTRN CODE (?C?IMUL) ;公式R4R5*R6R7,保存在R6R7,调库16字节
EXTRN CODE (?C?UIDIV) ;无符号,公式R4R5/R6R7,商保存在R6R7,余数在R4R5
EXTRN CODE (?C?SIDIV) ;有符号,公式R4R5/R6R7,商保存在R6R7,余数在R4R5
LCALL ?C?IMUL ;跳转3字节
ADD、ADDC、SUBB
ADD A, R0 相当于A=A+R0
ADDC A, R0 相当于A=A+R0+Cy
SUBB A, R0 相当于A=A-R0-Cy,如果A小于R0,则Cy置位
三、逻辑运算类指令
ANL、ORL、XRL
与、或、异或
RL、RLC、RR、RRC
RL左移,RR右移,C带进/借位
SWAP
高四位和低四位交换
四、控制转移类指令
SJMP、AJMP、LJMP
无条件转移
SJMP -126—+129范围内转移
AJMP 2k范围内转移
LJMP 64K范围内转移
RET、RETI
RETI 是中断返回指令
RET 是子程序返回指令
ACALL、LCALL
转移到子程序,子程序执行后配合RET、RETI返回
CJNE、DJNZ、JNZ、JZ
CJNE 比较两值,不相等转移
DJNZ 减 1,不为 0 则转移
JNZ Jump if Not Zero 累加器为 1 则转移
JZ Jump if Zero 累加器为 0 则转移
五、布尔指令
JC、JNC、JB、JNB、JBC
JC Jump if Cy (有进位、即Cy=1,则跳转)
JNC Jump if Not Cy (有进位、即Cy=0,则跳转)
JBC Jump if Bit and Clear
JB Jump if Bit (为1则跳转)
JNB Jump if Not Bit (为0于则跳转)
【HC89S003F4开发板】 10汇编指令的更多相关文章
- 【HC89S003F4开发板】 8c转义成汇编工程
HC89S003F4开发板建立汇编工程 选择编译文件 @选用开发板闪灯例程,将例程删除多余的注释,后面生成的文件会更直观. #define ALLOCATE_EXTERN #include " ...
- 【HC89S003F4开发板】 7ASM&C混合编程
HC89S003F4开发板ASM&C混合编程 一.前言 在配套资料里有实现ASM&C混合编程的说明文档,这里来实现这个功能. 二.实现ASM&C混合编程 1.打开 Keil 工 ...
- 【HC89S003F4开发板】9ASM写定时器1
HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...
- 【HC89S003F4开发板】 2调度器
HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...
- 【HC89S003F4开发板】 4端口消抖
HC89S003F4开发板端口消抖 一.前言 看到资料里有中断消抖的例子,因为以前项目里有遇到高频干扰频繁退出休眠的情况,所以好奇用这个配置能不能解决. 二.对demo进行修改 @实现效果 P01设置 ...
- 【HC89S003F4开发板】 6crc校验
HC89S003F4开发板crc校验 前言 第一次用有带crc的mcu 使用资料自带的demo @实现效果 通过PC向MCU发送5个8位数据,MCU返回CRC校验值 void main() { /** ...
- 【HC89S003F4开发板】 3串口调试
HC89S003F4开发板串口调试 使用资料自带的demo 主程序 /************************************系统初始化************************ ...
- 【HC89S003F4开发板】 1环境搭建
HC89S003F4开发板环境搭建 一.概述 芯圣电子做活动,一个开发板只用一块钱,买过来玩玩.︿( ̄︶ ̄)︿ 全套资料可以在论坛或qq群里下载.总之先安装个环境先. 二.安装Keil C51 作为增 ...
- 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 : -- AR ...
随机推荐
- BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解
挺神的一道题 ~ 由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数. 然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 ...
- learning scala someElements
The Scala collections library provides specialised implementations for Sets of fewer than 5 values ( ...
- 原生js打地鼠
我们要做的是一个打地鼠的游戏,只用原生js 1.导入需要的图片 2.编写页面css样式demo.css *{ margin:0; padding:0; } .game{ position: relat ...
- Vigil 发送多人邮件通知的处理
Vigil 默认是只能发送单人邮件,但是我们有需要发送多个的场景. 解决方法: 大家使用一样的账户登陆 使用邮件组 修改下源码 为了学习下Vigil 的构建,以及原理,我简单通过修改源码的方式(目前支 ...
- circus docker image web 运行异常问题的解决
经过查看官方文档,因为我使用的是python 较高版本,存在兼容问题,解决方法 修改基础镜像版本 代码如下: FROM python:2.7-slim-stretch LABEL AUTHOR=&qu ...
- Redis BGSAVE因为内存不足 fork 失败导致目标 Redis 无法访问的问题
中秋的时候正在外面愉快的在外卖喝着咖啡玩电脑......突发 redis 报警从 sentry 应用端曝出的错误 MISCONF Redis is configured to save RDB sna ...
- mysql 获取数学成绩最高以及最低的同学
mysql> select * from test; +----+----------+-------+-----------+ | id | name | score | subject | ...
- 【POJ1573】Robot Motion
题目传送门 本题知识点:模拟 本题的题意也很简单. 给出一个矩阵,矩阵里面有着东南西北(上下左右)的指示,当机器人走到上面时则会按照指示前进.机器人每次都从最上面一行的某一列进入. 需要判断的是机器人 ...
- spring 整合 servlet
目的:记录spring整合 servlet过程demo.(企业实际开发中可能很少用到),融会贯通. 前言:在学习spring 过程(核心 ioc,aop,插一句 学了spring 才对这个有深刻概念, ...
- 刷题记录:2018HCTF&admin
目录 刷题记录:2018HCTF&admin 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:2018HCTF&admin 一.前言 经过一个暑假的学习,算是正经一条web狗 ...