微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机汇编基础

51单片机汇编基础

时间:11-13 来源:互联网 点击:

一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。

SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中

SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减,结果存在A中

SUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的内容与工作寄存器中的内容、连同借位位相减,结果存在A中

SUBB A,@Ri ;(A)-((Ri)) -(C)→(A) 累加器A中的内容与工作寄存器Ri指向的地址单元中的内容、连同借位位相减,结果存在A中

[4]. 乘法指令(1条)

这个指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。

MUL AB ;(A)×(B)→(A)和(B) 累加器A中的内容与寄存器B中的内容相乘,结果存在A、B中

[5]. 除法指令(1条)

这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示除法有溢出。

div AB ;(A)÷(B)→(A)和(B) 累加器A中的内容除以寄存器B中的内容,所得到的商存在累加器A,而余数存在寄存器B中。

[6]. 加1指令(5条)

这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式:

INC A ;(A)+1→(A) 累加器A中的内容加1,结果存在A中

INC data ;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中

INC @Ri ;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中

INC Rn ;(Rn)+1→(Rn)寄存器Rn的内容加1,结果送回原地址单元中

INC DPTR ;(DPTR)+1→(DPTR)数据指针的内容加1,结果送回数据指针中

在INC data这条指令中,如果直接地址是I/O,其功能是先读入I/O锁存器的内容,然后在CPU进行加1操作,再输出到I/O上,这就是“读—修改—写”操作。

[7]. 减1指令(4条)

这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,若原寄存器的内容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是I/O口锁存器时,“读—修改—写”操作与加1指令类似。

DEC A ;(A)-1→(A)累加器A中的内容减1,结果送回累加器A中

DEC data ;(data)-1→(data)直接地址单元中的内容减1,结果送回直接地址单元中

DEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址单元中的内容减1,结果送回原地址单元中

DEC Rn ;(Rn)-1→(Rn)寄存器Rn中的内容减1,结果送回寄存器Rn中

[8]. 十进制调整指令(1条)

在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。

DA A

MCS-51逻辑运算及移位指令

逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。

[1]. 循环移位指令(4条)

这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。

RL A ;累加器A中的内容左移一位

RR A ;累加器A中的内容右移一位

RLC A ;累加器A中的内容连同进位位CY左移一位

RRC A ;累加器A中的内容连同进位位CY右移一位

[2]. 累加器半字节交换指令(1条)

这条指令是将累加器中的内容高低半字节互换,这在上一节中内容已有介绍。

SWAP A ; 累加器中的内容高低半字节互换

[3]. 求反指令(1条)

这条指令将累加器中的内容按位取反。

CPL A ; 累加器中的内容按位取反

[4]. 清零指令(1条)

这条指令将累加器中的内容清0。

CLR A ; 0→(A),累加器中的内容清0

[5]. 逻辑与操作指令(6条)

这组指令的作用是将两个单元中的内容执行逻辑与操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

ANL A,data ;累加器A中的内

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top