单片机学习(二)

  • 单片机入门知识

学习内容:

提示:寻址方式与指令

例如:

  1. Rn与Ri
  2. 各寻址方式的区别
  3. 常见指令
  4. 伪指令

寻址方式:

1.Rn与Ri:

Rn:当前工作寄存器R0~R7中的一个(n=0,1,…,7)
Ri:当前工作寄存器R0~R1中的一个(i=0,1) 由于Ri可以间接寻址,所以常用作保存地址:@Ri

2.寻址方式:

【标号:】 助记符 【操作数】
1.立即寻址:指令直接给出所需的操作数,这种操作数称为立即数(就是将#后的立即数送给存储器)
2.直接寻址:指令直接给出操作数地址的寻址方式称为直接寻址
例:MOV A,30H
3.寄存器寻址:即寄存器中存放的就是所需操作数
例:MOV A,R0 (R0中存放的就是所需操作数)
4.寄存器间接寻址:以寄存器存放的内容为操作数地址,将该地址存放的内容作为操作数。
例:MOV A,@R0
(R0)=20H
(20H)=53
以R0存放地址20H为地址,将20H内的内容53送到A
5.变址寻址:将程序储存器中的内容读取到累加器A
MOVC A,@A+DPTR或MOVC A,@A+PC
6.相对寻址:用于实现程序的相对转移
例: JMP 61H
7.位寻址:位寻址属于直接地址,但地址为位地址
位地址就是低128字节20~2FH中的128位+SFR中是8的倍数的寄存器占用的位
例:MOV C,20H (这里的20H是位地址;20-2FH对应00~7FH位地址,SFR中部分寄存器对应80-FF位地址)

指令:

3.常见指令

(堆栈指令):
PUSH;(SP)+1
POP;(SP)-1

(交换指令):
XCH;
例:XCH A.Rn(将A和Rn的内容交换)
XCHD;
例:XCHD A,Rn(将A低半字节和Rn低半字节交换)
SWAP;
例:SWAP A(将A中高低半字节内容交换)

(加法)
ADD;(不带进位加法)
ADDC;(带进位加法)

(减法)
SUBB;(带进位减法)

(乘法)
MUL;
例:MUL AB (乘积高八位放在B,第八位放在A,乘积大于FFH,OV置1,CY总是0)

(除法)
DIV;
例:DIV Y AB (商放在A,余数放在B,若B为0,OV=1,CY总是0)

INC;(数据指针内容+1)

(逻辑运算指令);与C语言不同,汇编逻辑运算是按位运算,而不是得出真假
与:ANL
或:ORL
异或:XRL
CLR(内容清0)
CPL(按位取反)
RL(循环向左移1位)
RR(循环向右移1位)
RLC(循环向左移1位,包含进位C)
RRC(循环向右移1位,包含进位C)

(条件转移指令)
JZ(等于0则转移,否则顺序执行)
JNZ(不等于0则转移,否则顺序执行)
JC(进位CY=1则转移,否则顺序执行)
JNC(进位CY不等于1则转移,否则顺序执行)
JB(位bit=1则转移,否则顺序执行)
JNB(位bit不等于1则转移,否则顺序执行)
CJNE
例:CJNE A,#data(若A中内容不等于data则转移,否则顺序执行)
DJNZ
例:DJNZ Rn,rel(将Rn内容-1后,若不等于0则转移,否则顺序执行)

伪指令

ORG(汇编程序当前的工作位置)
END(一个文件程序的结束标志)
DB(后面接数据,将其直接写入连续的ROM单元)
例如:ORG 0100H
DB: 01H,02H,03H,07H
(将01H存放在0100H ROM单元,02H存放在0101H ROM单元…)
字符名 BIT 位地址
符号名 EQU 数值
(定义符,相当于C语言的define;BIT是将位地址赋给字符名,EQU是给符号名赋值)
#HIGH/#LOW
(#HIGH取16位二进制数值高字节,#LOW取16位二进制数值低字节)
例:MOV TH0,#HIGH(5000)
MOV TL0,#LOW(5000)
5000的16进制为1388H,将13H送给TH0,88H送给TL0

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️梅花十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值