【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 ...
随机推荐
- Eclipse 打包运行maven项目
https://www.cnblogs.com/tangshengwei/p/6341462.html
- UFUN函数 UF_CFI函数(uc4504,uc4540,uc4514,uc4547,UF_CFI_ask_file_exist )
UF_initialize(); //指定本地数据文件的路径 char file_spec[]="D://Program Files//Siemens//NX 8.0//UGII//zyTO ...
- Python 06 Geany的基本使用2
原文:https://www.cnblogs.com/denny402/p/5096001.html 功能:打开图片 1.下载库 pip install matplotlib 2.编写代码,将代码粘贴 ...
- POJ 1436.Horizontally Visible Segments-线段树(区间更新、端点放大2倍)
水博客,水一水. Horizontally Visible Segments Time Limit: 5000MS Memory Limit: 65536K Total Submissions: ...
- CDH 版本 6.0.1 升级到 6.2.0 当前最新版本(CentOS 7.x)
前文「CDH CM版本 6.0.1 升级到 CM 6.2.0 当前最新版本(CentOS 7.x)」 承接上文,当我们完成 CM 6.2.0 的升级之后,我们已经相当于完成了80% minor 的升级 ...
- Linux基础及常用指令
1.Linux目录结构 bin(usr/bin,user/local/bin) #存放常用指令,如cp.cat.chown等 sbin(usr/sbin,user/local/sbin) #高权限指令 ...
- mysql 存储过程 REPEAT ... UNTIL ... END REPEAT
begin declare b int; declare use_no varchar(10); declare use_name varchar(400); decla ...
- MySQL各种类型实验
实验一:整数 -- 测试一 create database test;-- 新建数据库,如果已经有了就不需要再创建了 USE test;-- 打开数据库 drop table if exists te ...
- SSM项目实战 之 EasyUI
目录 EasyUI 简介 概述 使用EasyUI panel组件 简介 示例 JS形式及属性介绍 panel事件与方法 Window组件 概述 使用 行为 dialog 概述 使用 tabs组件 概述 ...
- 第06组 Beta冲刺(5/5)
队名:拾光组 组长博客链接 作业博客链接 团队项目情况 燃尽图(组内共享) 组长:宋奕 过去两天完成了哪些任务 继续维护后端代码 准备beta版本的答辩 GitHub签入记录 接下来的计划 整理任务, ...