【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于则跳转)

posted @ 2019-08-23 22:33  Eash、  阅读(535)  评论(0编辑  收藏  举报