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. CF1172E Nauuo and ODT LCT

    自己独立想出来的,超级开心 一开始想的是对于每一个点分别算这个点对答案的贡献. 但是呢,我们发现由于每一条路径的贡献是该路径颜色种类数,而每个颜色可能出现多次,所以这样就特别不好算贡献. 那么,还是上 ...

  2. learning java 文件锁

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...

  3. Xamarin.IOS/Mac开发中遇到的问题

    虚拟机中安装的mac系统无法识别iphone 今天在 Xamarin.iOS 应用的免费预配 时,进行到 5.插入要在其中部署应用的 iOS 设备. 在第8选择iphone设备时,发现iphone并没 ...

  4. CF1172E Nauuo and ODT

    CF1172E Nauuo and ODT 神仙题orz 要算所有路径的不同颜色之和,多次修改,每次修改后询问. 对每种颜色\(c\)计算多少条路径包含了这个颜色,不好算所以算多少条路径不包含这个颜色 ...

  5. JavaScript高级程序编程(二)

    JavaScript 基本概念 1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScr ...

  6. Java int 与 Integer 区别

    学习借鉴(其实搬了别人的好多)和自己的理解,可能会有较多错误,如有疑问联系我呀. int  是基本数据类型, Integer 是引用类型,也就是一个对象. int 储存的是数值,Integer 储存的 ...

  7. 怎么在浏览器设置cookie

    document.cookie="jwt=xxxxxx" 遇到了一个bug 开了代理没有办法做图片上传

  8. 日期时间格式的工具DateUtils整理

    关于一些时间工具的处理 * 描述:此类用于取得当前日期相对应的月初,月末,季初,季末,年初,年末,返回值均为String字符串 * 1.得到当前日期 today() * 2.得到当前月份月初 this ...

  9. 什么是Java内存模型

    转载 : https://www.jianshu.com/p/bf158fbb2432 在知识星球中,有个小伙伴提了一个问题: 有一个关于JVM名词定义的问题,说”JVM内存模型“,有人会说是关于JV ...

  10. Invalid bound statement (not found) 错误原因

    对我来说,错误的原因是因为没有配置:mybatis.mapperLocations=classpath:mybatis/mapper/*Mapper.xmlmybatis.config-locatio ...