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. c++ socket发送数据时,sendData = char * string 导致的乱码问题

    解决方法:将string 通过copy函数复制到某个char[] 1. string res =“xxx”; char arr[100]; int len = res.copy(arr, 100); ...

  2. 洛谷 P1508 Likecloud-吃、吃、吃 题解

    P1508 Likecloud-吃.吃.吃 题目背景 问世间,青春期为何物? 答曰:"甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!" 题目描述 正处在某一特定时期之中的李大水牛由于消化 ...

  3. CF1237C2 【Balanced Removals (Harder)】

    这么妙的题怎么没人发题解啊 首先这是三维的,我们可以对其进行降维打击 先考虑一维怎么做? 我们可以对其该维坐标进行排序,按照顺序输出,可能会多余一个 那拓展到二维呢? 我们可以把它转化成一维,分成很多 ...

  4. 1、kafka概述

    一.关于消息队列 消息队列是一种应用间的通信方式,消息就是是指在应用之间传送的数据,它也是进程通信的一种重要的方式. 1.消息队列的基本架构 producer:消息生产者. broker:消息处理中心 ...

  5. .bat批处理命令之设置关机倒计时脚本

    @ECHO off REM 不显示后续命令行及当前命令行 TITLE Shutdown countdown REM 设置脚本标题 COLOR 0A REM 设置脚本 背景色为黑色 前景色为淡绿色 :s ...

  6. [转]Windows内存堆内容整理总结

    在系统安全研究中,堆,是一个极其重要的内存区域以及研究的热点.堆,区别于栈区.全局数据区以及代码区,它的主要作用是允许程序在运行时动态地申请某个大小的内存空间.本文将从宏观到微观,简单梳理总结一下Wi ...

  7. Deep Reinforcement Learning with Iterative Shift for Visual Tracking

    Deep Reinforcement Learning with Iterative Shift for Visual Tracking 2019-07-30 14:55:31 Paper: http ...

  8. docker本地化异常:/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

    docker中经常设置不了 环境变量$LC_ALL,  导致报很多奇怪的编码错误: /bin/sh: warning: setlocale: LC_ALL: cannot change locale ...

  9. Sword libcurl库CURLE_COULDNT_CONNECT错误

    CURL: CURLE_COULDNT_CONNECT问题分析 测试环境描述在使用libcurl写http客户端进行压力测试的时候会遇到curl_easy_perform()返回CURLE_COULD ...

  10. CefSharp在高DPI的屏幕上出现黑边(winform)

    目录 问题现象 解决办法 1.将cefsharp的gpu设置为无效,(后遗症,h5动画会出现卡顿现象,慎用) 2.将屏幕的DPI置为96(缩放比例为100%)(后遗症,不可能每个电脑都去配置) 3.支 ...