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汇编指令的更多相关文章

  1. 【HC89S003F4开发板】 8c转义成汇编工程

    HC89S003F4开发板建立汇编工程 选择编译文件 @选用开发板闪灯例程,将例程删除多余的注释,后面生成的文件会更直观. #define ALLOCATE_EXTERN #include " ...

  2. 【HC89S003F4开发板】 7ASM&C混合编程

    HC89S003F4开发板ASM&C混合编程 一.前言 在配套资料里有实现ASM&C混合编程的说明文档,这里来实现这个功能. 二.实现ASM&C混合编程 1.打开 Keil 工 ...

  3. 【HC89S003F4开发板】9ASM写定时器1

    HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...

  4. 【HC89S003F4开发板】 2调度器

    HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...

  5. 【HC89S003F4开发板】 4端口消抖

    HC89S003F4开发板端口消抖 一.前言 看到资料里有中断消抖的例子,因为以前项目里有遇到高频干扰频繁退出休眠的情况,所以好奇用这个配置能不能解决. 二.对demo进行修改 @实现效果 P01设置 ...

  6. 【HC89S003F4开发板】 6crc校验

    HC89S003F4开发板crc校验 前言 第一次用有带crc的mcu 使用资料自带的demo @实现效果 通过PC向MCU发送5个8位数据,MCU返回CRC校验值 void main() { /** ...

  7. 【HC89S003F4开发板】 3串口调试

    HC89S003F4开发板串口调试 使用资料自带的demo 主程序 /************************************系统初始化************************ ...

  8. 【HC89S003F4开发板】 1环境搭建

    HC89S003F4开发板环境搭建 一.概述 芯圣电子做活动,一个开发板只用一块钱,买过来玩玩.︿( ̄︶ ̄)︿ 全套资料可以在论坛或qq群里下载.总之先安装个环境先. 二.安装Keil C51 作为增 ...

  9. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 :  -- AR ...

随机推荐

  1. 检查cgroup v2 是否安装

    cgroup 当前包含了v1, 以及v2 版本,v2 版本相比v1 在目录组织上更加清晰,管理更加方便,很多 时候我们可能需要检查我们安装的内核当前内核版本是否支持cgroup v2 文章内容来自 h ...

  2. install_config

    #! /bin/bash REPO='10.10.238.114:4507' zabbix='10.10.238.110' osmaster=`cat /etc/redhat-release |awk ...

  3. 市场细分(Market Segmentation)

    什么是市场细分? 市场细分其实就是把拥有共同特征的人分在一起.这些共同特征可以是:喜欢喝某个牌子的红酒,飞机总是做头等舱,习惯用windows系统等等. 市场细分有什么用? 1,不同细分市场的需求存在 ...

  4. LOJ6102「2017 山东二轮集训 Day1」第三题 【min-max容斥,反演】

    题目描述:输入一个大小为\(n\)的集合\(S\),求\(\text{lcm}_{k\in S}f_k\),其中\(f_k\)是第$$个Fibonacci数. 数据范围:\(n\le 5\times ...

  5. c++中二叉树的先序中序后序遍历

    c++中二叉树的先(前)序.中序.后序遍历 讲解版 首先先看一个遍历的定义(源自度娘): 所谓遍历(Traversal),是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问.访问结点所做的 ...

  6. Python常用模块大全

    Python常用模块大全 os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.c ...

  7. 查询优化 In Oracle

    Cost-based query transformation in Oracle Enhanced Subquery Optimizations in Oracle Cost-based query ...

  8. SubQuery优化

    https://zhuanlan.zhihu.com/p/60380557 子查询,分两种情况, 对于在From中的,称为‘derived table’,这种场景比较简单 对于在select,wher ...

  9. Oracle 优化SQL

    https://www.cnblogs.com/ios9/p/8012611.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2 ...

  10. Oracle定时任务执行存储过程备份日志记录表

    写在前面 需求 1.备份系统日志表T_S_LOG, 按照操作时间字段OPERATETIME, 将每天的日志增量备份到另一张表. 思路 1.创建一张数据结构完全相同的表T_S_LOG_BAK作为备份表 ...