汇编语言8051编程简介

汇编语言是一种低级编程语言,用于根据助记符编写程序代码。尽管目前有许多需要的高级语言,但汇编编程语言在许多应用程序中被广泛使用。它可以用于直接的硬件操作。它也被用来写8051编程代码与其他高级别语言相比,通过消耗更少的内存,有效地利用较少的时钟周期。

8051汇编语言编程
8051编程

8051汇编语言编程

汇编语言是一种完全硬件相关的编程语言。在编写程序之前,嵌入式设计人员必须对特定处理器或控制器的硬件具有足够的知识。汇编语言是由助记符开发的;因此,用户无法轻易理解修改程序。


8051汇编语言编程
8051汇编语言编程

装配编程语言是由各种编译器开发的keiluvison最好适合单片机编程开发。米icrocontrollers或者处理器只能理解' 0或1 '形式的二进制语言;汇编程序将汇编语言转换为二进制语言,然后将其存储在单片机内存执行特定任务。

8051单片机建筑

8051年单片机是个基于CISC的哈佛架构它有外设,如32 I/O,计时器/计数器,串行通信和内存。bob的是什么网站的单片机需要一个程序执行需要保存和读取功能的内存的操作。8051年单片机由RAM和ROM存储器组成来存储指令。

8051微控制器Arctitecuture.
8051单片机建筑

寄存器是计算机的主要组成部分处理器和微控制器其中包含在内存中,提供更快的收集和存储数据的方法。8051汇编语言编程基于内存寄存器。如果我们希望通过执行减法,添加等来将数据操作到处理器或控制器,我们不能直接在内存中执行此操作,但它需要寄存器来处理和存储数据。微控制器包含几种类型的寄存器,可以根据其在它们中操作的指令或内容进行分类。

8051单片机程序汇编语言

汇编语言由所有用于编写程序的元素组成顺序。遵循给定的规则用汇编语言编写程序。


汇编语言规则

  • 汇编代码必须用大写字母编写
  • 标签后面必须有一个冒号(label:)
  • 所有的符号和标签都必须以字母开头
  • 所有的注释都是小写的
  • 程序的最后一行必须是终端指令

汇编语言助记符以操作码的形式出现,如MOV、ADD、JMP等,用于执行操作。

操作码:op-code是可以由CPU执行的单个指令。这里的op-code是mov指令。

操作数:操作数是可由OP-Code操作的单一数据。示例,乘法操作由乘以操作数的操作数执行。

语法:mul a,b;

汇编语言编程的元素:

  • 汇编指令
  • 指令系统
  • 寻址模式

汇编指令:

组装指令给CPU指令。8051年单片机由各种组装指令组成,以使控制单元的方向。最有用的指令是8051编程,例如:

  • ORG
  • DB
  • 结束

ORG(起源):该指令指示程序的开始。这是在程序集期间用来设置寄存器地址的。例如;ORG 0000h告诉编译器所有从地址0000h开始的后续代码。

语法:ORG 0000 h

DB(定义字节):定义字节用于允许一个字节串。例如,打印“EDGEFX”,其中每个字符都是由地址,最后打印的“字符串”由DB直接双引号。

语法:

ORG 0000 h

mov a,#00h
- - -
- - -
DB“EDGEFX”

装备(等效):等效指令用于等同于变量的地址。

语法:

注册,09H.
- - -
- - -
MOV注册,#2h

结束:END指令用于指示程序的结束。

语法:

注册,09H.

- - -
- - -
MOV注册,#2h
结束

寻址模式:

访问数据的方式称为寻址模式。CPU可以通过使用寻址模式以不同方式访问数据。8051年单片机包括五种寻址模式,例如:

  • 立即寻址模式
  • 注册寻址模式
  • 直接寻址模式
  • 间接寻址模式
  • 基索引寻址方式

立即寻址模式:

在这种寻址模式下,源必须是可以接下来的值,而是必须是SFR寄存器,通用寄存器和地址。它用于立即将值存储在存储器寄存器中。

语法:

MOV A, #20h //A是一个累加器寄存器,20存储在A//中
MOV R0.,#15 // R0是一个通用寄存器;15存储在R0寄存器中
mov p0,#07h // p0是sfr寄存器; 07存储在p0 //中
MOV 20 h,#05h // 20h是寄存器的地址;05存储在20h //中

前:

MOV R0, # 1
MOV R0, #20 //R0 < -R0(15] +20,最终值存储在R0 //中

寄存器寻址模式:

在这种寻址模式下,源和目标必须是寄存器,而不是通用寄存器。所以数据不会在通用银行注册

语法:

MOV A、B;// A是SFR寄存器,B是通用寄存器//
MOV R0, R1 //无效指令,GPR到GPR不可能//

前:

MOV R0, # 02 h
mov a,#30h
添加R0,A // R0 <-R0 + A,最终值存储在R0寄存器//中

直接寻址模式

在这种寻址模式下,源或目的(或源和目的)必须是地址,而不是值。

语法:

MOV一,20h // 20h是一个地址;a是注册//
mov 00h,07h //两者都是GPS寄存器//的解决方案

前:

MOV 07 h,#01H.
mov a,#08h
添加A.,07h //A< -A +07h最终值存储在//中

间接寻址模式:

在此寻址模式下,源或目的(或目的或源)必须是一个间接地址,但不是值。此寻址模式支持指针概念。指针是用于存储其他变量的地址的变量。该指针概念仅用于R0和R1寄存器。

语法:

MOVR0, #01h //01值存储在R0寄存器中,R0地址是08h//
MOV R1, #08h//R1是指针变量R0 //的地址(08h)
MOV 20 h,@R1 //01的值存储在GP寄存器的20h地址中//

间接寻址模式
间接寻址模式

基索引寻址模式:

这种寻址模式用于从外部存储器或ROM存储器。所有寻址模式都不能从代码内存读取数据。代码必须读遍DPTR寄存器。DPTR用于指向代码或外部内存中的数据。

语法:

MOVC A, @A+DPTR //C表示代码内存//
@A+DPTR // X表示外部内存//
例如:MOV A, #00H //00H存储在A寄存器//
MOV DPTR,#0500H // DPTR点0500H地址在内存//
MOVC A,@ A + DPTR //发送值寄存器//
MOV P0,A //发送到PO注册器//的日期

指令集:

指令集是控制器或处理器的结构,它向控制器提供命令,引导控制器处理数据。指令集由指令、本机数据类型、寻址模式、中断寄存器、异常处理和内存体系结构组成。的8051.单片机可以遵循CISC指令与哈佛架构。在8051编程的情况下,不同类型的CISC指令包括:

  • 数据传输指令集
  • 顺序指令集
  • 算术指令集
  • 分支一建筑
  • 循环Instrcution集
  • 条件指令集
  • 无条件的指令集
  • 逻辑指令集
  • 布尔指令集

算术指令集:

算术指令执行基本操作,例如:

  • 加成
  • 乘法
  • 减法

加成:

ORG 0000 h
MOV R0, #03H //将值3移动到寄存器R0//
MOV A,#05H //将值5移动到累加器A //
加一个,00H //adda.值的R0值,并存储结果在一个//
结束

乘法:

ORG 0000 h
MOV R0, #03H //将值3移动到寄存器R0//
MOV A,#05H //将值5移动到累加器A //
MUL A,03H //乘以结果存储在累加器A //中
结束

减法:

ORG 0000 h
mov r0,#03h //将值3移动到注册r0 //
MOV A,#05H //将值5移动到累加器A //
SUBB A, 03H //结果值存储在累加器A //
结束

部门:

ORG 0000 h
mov r0,#03h //将值3移动到注册r0 //
MOV A,#15H //将值5移动到累加器A //
div a,03h //最终值存储在累加器A //中
结束

有条件的说明

CPU通过检查单位状态或字节状态来基于条件执行指令。8051年单片机由各种有条件指示组成:

  • JB - >下面跳
  • JNB - >如果不低于
  • 如果进位,>跳
  • jnc - >跳跃如果携带
  • JZ - >如果为零跳转
  • jnz - >跳跃如果
有条件的说明
有条件的说明

1.语法:

简森-巴顿P1.0,标签
– – – – – – – –
– – – – – – – –
标签:––––––––
– – – – – – – –
结束

2.语法:

JNB P1.0、标签
– – – – – – – –
– – – – – – – –
标签:––––––––
– – – – – – – –
结束

3.语法:

JC、标签
– – – – – – – –
– – – – – – – –
标签:––––––––
– – – – – – – –
结束

4.语法:

JNC,标签
– – – – – – – –
– – – – – – – –
标签:––––––––
– – – – – – – –
结束
5.语法:

JZ,标签
– – – – – – – –
– – – – – – – –
标签:––––––––
– – – – – – – –
结束

6.语法:

JNZ、标签
– – – – – – – –
– – – – – – – –
标签:––––––––
– – – – – – – –
结束

调用和跳转指令:

呼叫和跳转指令用于避免程序的代码复制。如果某些特定代码在程序中不同的不同地方使用不止一次的代码,请提及具体的名字那时码我们可以在程序的任何地方使用这个名字而不用每次都输入一个代码。这减少了程序的复杂性。8051编程由调用和跳转指令组成,如LCALL、SJMP。

  • LCALL
  • 一个电话
  • SJMP
  • LJMP.

1.语法:

ORG 0000 h
– – – – – – – –
– – – – – – – –
acall,label.
– – – – – – – –
– – – – – – – –
SJMP停止
标签:––––––––
– – – – – – – –
– – – – – – – –
受潮湿腐烂
停止:NOP

2.语法:

ORG 0000 h
– – – – – – – –
– – – – – – – –
LCALL、标签
– – – – – – – –
– – – – – – – –
SJMP停止
标签:––––––––
– – – – – – – –
– – – – – – – –
受潮湿腐烂
停止:NOP

调用和跳转指令
调用和跳转指令

循环指令:

每次执行自增和自减操作时,循环指令都用于重复该块。8051年单片机包含两种类型的循环指令:

  • 如果不相等,比较和跳转
  • DJNZ - >如果不是零,则是递减和跳变

1.语法:

CJNE
MOV, # 00 h
MOV B, # 10 h
标签:公司一个
- - - - - - -
- - - - - - -
CJNE,标签

2.语法:

DJNE

mov r0,#10h
标签:- - - - - - -
- - - - - - -
DJNE R0、标签
- - - - - - -
- - - - - - -
结束

逻辑指令集:

8051单片机指令集提供了和、或、异或、测试、非和布尔逻辑指令,用于根据程序的需要设置和清除比特。

逻辑指令集
逻辑指令集

1.语法:

mov a,#20h / 00100000 /
mov r0,#03h / 00000101 /
ORL A, R0 // 001000000 /00000101=00000000//

2.语法:

mov a,#20h / 00100000 /
mov r0,#03h / 00000101 /
退火,R0

3.语法:

mov a,#20h / 00100000 /
mov r0,#03h / 00000101 /
XRL A,R0

移动运营商

移位运算符用于有效地发送和接收数据。8051年单片机由四个移位操作符组成:

  • rr - >旋转右转
  • RRC - >通过携带旋转
  • rl - >旋转左
  • RLC - >通过携带左转

旋转右(RR):

在该移位操作中,MSB变为LSB,并且所有位均向右侧逐行移动。

语法:

MOV, # 25 h
RR一

旋转左(RL):

在该移位操作中,MSB变为LSB,并且所有位均匀地向左侧逐次移动。

语法:

MOV, # 25 h
RL A.

RRC通过进位右旋转:

在移位操作中,LSB移动到进位,进位变为MSB,所有的位都逐位向右侧移位。

语法:

MOV, # 27 h
RRC A.

RLC通过进位左旋:

在这个移位操作中,MSB移动到进位,进位变成LSB,所有的位都在一个位的位置上向左移动。

语法:

MOV, # 27 h
RLC A.

基本嵌入式C程序:

单片机每一种操作系统的编程都是不同的。有许多操作系统如Linux、Windows、RTOS等。然而,RTOS对于嵌入式系统开发有几个优势。下面给出了一些汇编级编程示例。

使用8051,LED闪烁单片机:

  • 数字显示采用8051单片机7段显示
  • 计时器/计数器的计算和程序使用8051单片机
  • 使用8051的bob的是什么网站串行通信计算和程序单片机

8051米的LED程序Icrocontrler.

1.WAP来切换PORT1指示灯

org 0000h.
TOGLE:MOV P1, #01 //移动00000001到p1寄存器//
调用DELAY //执行DELAY //
MOV A, P1 //移动P1值蓄电池/ /
CPL A //补充值//
MOV P1, A //将11111110移到port1寄存器//
调用DELAY //执行DELAY //
sjmp嘟嘟
延迟:mov r5,#10h //加载寄存器R5,10 //
2: MOV R6, #200 //加载寄存器R6与200//
一个:MOV R7, #200 //加载寄存器R7与200//
$ //递减R7,直到R7为零//
DJNZ R6,一个//递减R7,直到它为零//
对R7进行减量,直到R7为0
RET //返回主程序//
结束

计时器/计数器计算和程序使用8051米iCrocontroller.:

延迟是应用软件开发的重要因素之一。的计时器和柜台硬件组件是单片机,在许多应用中使用计数脉冲来提供精确的时间延迟。B这些任务都是通过软件技术来实现的。

1. WAP计算500us延时。

MOV TMOD, #10H //通过寄存器选择计时器模式//
mov th1,#0feh //将延迟时间置于较高位//
mov tl1,#32h //在低位//中存储延迟时间
JNB TF1,$ //减少计时器的值,直到它为零//
CLR TF1 //清除定时器标志钻头//
CLR TR1 //关闭定时器//

2.WAP来切换led与我们5证券交易委员会延迟

org 0000h.
返回:mov po,#00h
驱使着延迟
mov p0,#0ffh
驱使着延迟
sjump回归
延迟:MOV R5, #50H //加载寄存器R5 50//
delay1:mov r6,#200 //加载寄存器R6,具有200 //
delay2:mov r7,#229 //加载寄存器R7,其中200 //
$ //递减R7,直到R7为零//
djnz r6,delay2 //递减r6直到它为零//
DJNZ R5, DELAY1//递减R5直到它是零//
RET //返回主程序//
结束

3.WAP使用mode0 coun0计数250个脉冲

语法:

org 0000h.
MOV TMOD, #50H //选择计数器//
MOV TH0, #15 //移动计数脉冲更高位//
MOV TH1, #9FH //移动计数脉冲,下位//
在计时器上设置TR0 //
JNB $ //减少计数值直到零//
CLR TF0 //清除计数器,标志钻头//
CLR TR0 //停止定时器//
结束

使用8051米bob的是什么网站的串行通信编程iCrocontroller.:

串行通信bob的是什么网站通常用于传输和接收数据。8051年单片机由UART/USART串行通信组成,信号由UART发送和接bob的是什么网站收Tx和Rx别针。UART通信按位串bob的是什么网站行传输数据。UART是一种半双工协议,它传输和接收数据,但不是同时传输。

1.WAP,将字符传输到超级终端

MOV SCON, #50H //设置串口通讯//bob的是什么网站
mov tmod,#20h //选择计时器模式//
mov th1,#-3 //设置波特率//
在计时器上设置TR1 //
将SBUF,#'s'//传输到串行窗口//
JNB TI,$ //计时器的减少值,直到它为零//
CLR RI //清除接收中断//
CLR TR1 //清除定时器

2.WAP通过超级终端发送接收字符

MOV SCON, #50H //设置串口通讯//bob的是什么网站
mov tmod,#20h //选择计时器模式//
mov th1,#-6 //设置波特率//
在计时器上设置TR1 //
将SBUF,#'s'//传输到串行窗口//
$ //定时器的衰减值,直到它是零//
CLR RI //清除接收中断//
MOV P0,SBUF //将SBUF寄存器值发送到port0 //
CLR TR1 //清除定时器

这完全是关于汇编语言的8051编程,简要介绍基于示例的程序。我们希望这对汇编语言的充分信息肯定有助于读者,我们期待他们在下面的评论部分中的宝贵意见。

4评论

  1. 特的库马尔 说:

    先生,谢谢你分享这些重要的信息。

  2. 默罕默德克 说:

    很好,对我这样的新人来说很有帮助。示例程序使所有的事情都变得清晰

添加评论