您好,欢迎访问全国教育考试教材网
商品分类

8051指令集和汇编语言编程

MOV(Move):传送内部数据寄存器RAM和特殊功能寄存器SFR的数据; (没有MOV Rn、Rn等寻址方式)

MOVC(Move Code)读取程序存储器数据表的数据传输; (只有两项:MOVC A,@A+DPTR 和MOVC A,@A+PC)

MOVX(MoveExternalRAM)数据传输到外部RAM;

XCH(Exchange)字节交换;

XCHD(Exchange low-order Digit)低半字节交换;

PUSH (Push into Stack) 压入堆栈;

POP(Pop from Stack)从堆栈中弹出;

2. 算术运算

ADD(加法)加法;

ADDC(Add with Carry)带进位加法;

SUBB(Subtract with Borrow)带借位减法;

DA(Decimal Adjust)添加BCD压缩码后进行小数调整;

INC(Increment)自增; (有INC DPTR指令)

DEC(Decrement)递减; (没有DEC DPTR指令)

MUL(Multiplication,乘法)乘法; (乘积的高8位放在B中,低8位放在A中)

DIV(Division,除法)除法; (商放在A中,余数放在B中)

3.逻辑运算类

ANL(AND 逻辑) 按位与

ORL(或逻辑)按位或;

XRL(Exclusive-OR Logic) 按位异或;

CLR(清除) 清除;

CPL(补语)否定;

以下5条指令的操作数只能是A。

RL A(Rotate left) 向左旋转;

8051指令集和汇编语言编程

RLC A(Rotate Left through the Carry flag)带进位左移;

RR A(Rotate Right) 向右旋转;

RRC A(Rotate Right through the Carry flag)带进位右移;

SWAP A(交换)将低4位与高4位交换;

4. 控制传输类

ACALL(Absolute subroutine Call)子程序绝对调用;

LCALL(Long subroutine Call)子程序长调用;

RET(Return from subroutine)子程序返回;

RETI(Return from Interruption)中断服务子程序返回;

SJMP(Short Jump)短转;

AJMP(Absolute Jump)绝对转移;

LJMP(跳远)长距离转移;

CJNE(Compare Jump if Not Equal)如果比较不相等则转移;

DJNZ(Decrement Jump if Not Zero)减1后不为0则转移;

(为什么INTEL不让字节指令和位指令保持一致呢?)

JZ (Jump if Zero) 如果A的结果为0,则转移;

JNZ (Jump if Not Zero) 如果结果不为0则转移;

JC(进位标志置位则跳转) 如果C 为1,则转移;

JNC(如果不进位则跳转)如果C为0则转移;

如果JB(Jump if the Bit is set)位为1,则传输;

如果JNB(如果位未设置则跳转)位为0,则跳转;

JBC(Jump if the Bit is set and Clear the bit)如果该位为1则跳转并清除该位;

NOP(无操作)无操作;

5. 位操作指令

8051指令集和汇编语言编程

CLR(清零)位清零;

SETB(设置位)设置为1

汇编语言由指令和伪指令组成。下面给出常用的伪指令

8条常用伪指令

1. ORG 16位地址;

该指令用在原程序或数据块的开头,表示该语句后目标程序或数据块存放的起始地址。

2、【标签:】DB字节数据项表;

将条目表中的字节数据存储到从标签开始的连续字节单元中。例如:SEG:DB 88H、100、“7”、“C”

3、【标签:】DW双字节数据项表;

定义一个16位地址表。 16位地址将低位字节存储在低位地址中,将高位字节存储在高位地址中。

例如:TAB:DW 1234H、7BH

4.名称EQU表达式或名称=表达式;

使用AND 为表达式赋值或命名字符串。然后该名称可以用作程序地址、数据地址或立即地址。该名称必须是以一个字母开头的字母数字字符串。

例如:COUNT=10 或SPACE EQU 10H。名称DATA 直接字节地址;

为8 位内部RAM 单元命名。该名称必须是以一个字母开头的字母数字字符串。同一单位可以有多个名称。

例如:错误数据80H

6.名称XDATA直接字节地址;

为8 位外部RAM 命名。名称规范与DATA 伪指令相同。

例如:IO_PORT XDATA 0CF04H

7、命名BIT位命令;

为可位寻址的位单元命名。规格与DATA指令相同。

例如:SWT 位30H

用户评论


入骨相思

哇,8051指令集和汇编语言编程,这可是老古董了,现在还能找到愿意学习的人吗?感觉好厉害啊。

    有10位网友表示赞同!


苏莫晨

8051指令集,简直就是嵌入式开发的基石,汇编语言编程更是考验人的耐心和细心,我学习了半年才有点感觉。

    有8位网友表示赞同!


﹏櫻之舞﹏

刚入门嵌入式开发,看到这个标题感觉有点迷茫,8051指令集和汇编语言编程真的那么难吗?

    有18位网友表示赞同!


烟雨离殇

8051指令集和汇编语言编程,对于我们这些老程序员来说,那是青春的记忆啊!现在的小年轻可能都不太了解了吧。

    有14位网友表示赞同!


恰十年

学习了汇编语言编程,感觉对计算机底层有了更深的理解,8051指令集的应用也很广泛,对以后的学习帮助很大。

    有10位网友表示赞同!


生命一旅程

8051指令集和汇编语言编程,虽然有点过时,但基础知识和编程思维还是很有价值的,建议初学者可以学一下。

    有12位网友表示赞同!


嗯咯

汇编语言编程太繁琐了,每次写代码都感觉头大,比起C语言和C++来说,真的没有优势啊。

    有10位网友表示赞同!


揉乱头发

8051指令集和汇编语言编程,虽然门槛高,但一旦掌握,对于嵌入式开发来说,简直是得心应手。

    有15位网友表示赞同!


泪湿青衫

感觉8051指令集和汇编语言编程对硬件的理解要求很高,如果不是特别需要,现在学这个有点浪费时间。

    有13位网友表示赞同!


ˉ夨落旳尐孩。

汇编语言编程真的很考验人的逻辑思维,我花了很长时间才适应这种编程方式,但确实学到了很多东西。

    有20位网友表示赞同!


ok绷遮不住我颓废的伤あ

8051指令集和汇编语言编程,虽然老,但经典永不过时,对那些对嵌入式开发有兴趣的人来说,还是值得一学的。

    有12位网友表示赞同!


泡泡龙

我更喜欢C语言和C++,感觉汇编语言编程太麻烦了,8051指令集也太难记了,现在学习的人越来越少吧。

    有13位网友表示赞同!


孤自凉丶

8051指令集和汇编语言编程,对于我们这些有志于深入研究硬件的程序员来说,是不可或缺的基础。

    有6位网友表示赞同!


不相忘

学习了汇编语言编程,感觉自己的编程能力提升了不少,8051指令集的应用也让我对嵌入式系统有了更深的认识。

    有12位网友表示赞同!


肆忌

8051指令集和汇编语言编程,虽然有点古老,但作为入门级的学习内容,我觉得还是很有价值的。

    有16位网友表示赞同!


不识爱人心

汇编语言编程,尤其是8051指令集,真的需要耐心和毅力,但学成之后,那种成就感是无法言表的。

    有9位网友表示赞同!


孤独症

现在嵌入式开发的主流是C语言和C++,感觉8051指令集和汇编语言编程快要被淘汰了,有点遗憾。

    有13位网友表示赞同!


关于道别

8051指令集和汇编语言编程,虽然有点难度,但作为计算机科学的基础,我觉得每个程序员都应该了解一下。

    有11位网友表示赞同!


早不爱了

学习了汇编语言编程,对计算机硬件有了更深的理解,8051指令集的应用也让我对嵌入式系统有了全新的认识。

    有10位网友表示赞同!