汇编语言8051程序设计简介
汇编语言是一种低级的程序设计语言,用于根据助记符来编写程序代码。尽管目前有许多高级语言的需求,汇编编程语言在许多应用程序中被广泛使用。它可以用于直接的硬件操作。也可以用来写8051编程代码与其他高级别语言相比,通过消耗更少的内存,有效地利用较少的时钟周期。
8051汇编语言编程
汇编语言是一种完全与硬件相关的程序设计语言。嵌入式设计人员在编写程序之前必须对特定处理器或控制器的硬件有足够的了解。汇编语言是由助记符开发的;因此,用户在修改程序时很难理解。
装配编程语言是由各种编译器开发的“keiluvison”最好适合单片机编程发展.米icrocontrollers或者处理器只能理解' 0或1 '形式的二进制语言;汇编器将汇编语言转换为二进制语言,然后将其存储在单片机内存执行特定任务。
8051单片机建筑
8051年单片机是基于CISC的哈佛架构它有32个I/O、计时器/计数器、串行通信和存储器等外围设备。bob的是什么网站的单片机需要一个程序来执行需要内存来保存和读取函数的操作。8051年单片机由RAM和ROM存储器组成来存储指令。
寄存器是系统的主要部分处理器和微控制器它包含在内存中,提供了一种更快的收集和存储数据的方法。8051汇编语言程序设计是基于内存寄存器的。如果我们想通过执行减法、加法等操作向处理器或控制器操作数据,我们不能直接在内存中完成,但它需要寄存器来处理和存储数据。微控制器包含几种类型的寄存器,可以根据它们的指令或在其中操作的内容进行分类。
汇编语言的8051单片机程序
汇编语言是由所有用于编写程序的元素组成的顺序.按照给定的规则以汇编语言编写编程。
汇编语言规则
- 汇编代码必须用大写字母编写
- 标签后面必须跟着冒号(label:)
- 所有符号和标签必须以字母开头
- 所有注释都是小写的
- 程序的最后一行必须是终端指令
汇编语言助记符以操作代码的形式存在,如MOV、ADD、JMP等,用于执行操作。
操作码:op-code是可以由CPU执行的单个指令。这里的op-code是mov指令。
操作数:操作数是可以被操作码操作的单个数据块。例如,乘法运算是由操作数乘以操作数来执行的。
语法:mul a,b;
汇编语言程序设计的要素:
- 汇编指令
- 指令集
- 寻址模式
汇编指令:
组装指令给中央处理器指令。8051年单片机由各种组装指令组成,以使控制单元的方向。最有用的指令是8051编程,例如:
- ORG
- DB
- 装备的
- 结束
ORG(起源):这个指令指示程序的开始。这用于在程序集期间设置寄存器地址。例如;ORG 0000h告诉编译器所有从地址0000h开始的后续代码。
语法:ORG 0000 h
DB(定义字节):define字节用于允许一串字节。例如,打印“EDGEFX”,其中每个字符由地址拍摄,最后用双引号直接打印DB的“字符串”。
语法:
ORG 0000 h
mov a,#00h
- - -
- - -
DB“EDGEFX”
equ(等同):等效指令用于使变量的地址相等。
语法:
注册装备的,09H.
------
------
MOV注册,# 2 h
结束:END指令用于指示程序的结束。
语法:
注册装备的,09H.
------
------
MOV注册,# 2 h
结束
寻址模式:
访问数据的方式称为寻址模式。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, # 30 h
ADD 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最终值存储在A//中
间接寻址模式:
在此寻址模式中,源或目的(或目的或源)必须为一个间接地址,但不是一个值。这种寻址模式支持指针概念。指针是一个变量,用来存储另一个变量的地址。这个指针概念只用于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表示代码内存//
MOCX A, @A+DPTR // X表示外部内存//
EX: 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 - >下面跳
- 如果不在下面则跳
- 进位跳跃
- jnc - >跳跃如果不携带
- 如果是零跳
- 如果不零
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
– – – – – – – –
– – – – – – – –
驱使着,标签
– – – – – – – –
– – – – – – – –
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 // 00000000/ 00000101=00000000//
2.语法:
mov a,#20h / 00100000 /
mov r0,#03h / 00000101 /
退火,R0
3.语法:
mov a,#20h / 00100000 /
mov r0,#03h / 00000101 /
XRL, 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一
RLC通过携带旋转:
在这种移位操作中,MSB移动到进位,进位变为LSB,所有位以逐位的方式向左移位。
语法:
MOV, # 27 h
RLC A.
基本嵌入式C程序:
的单片机每种操作系统的编程都是不同的。有许多操作系统例如Linux, Windows, RTOS等等。然而,RTOS在嵌入式系统开发中有几个优势。下面给出了一些汇编级编程示例。
LED闪烁使用8051单片机:
- 数字显示采用8051单片机7段显示
- 定时器/计数器的计算和程序使用8051单片机
- 使用8051的bob的是什么网站串行通信计算和程序单片机
LED程序与8051 Microcontrller
1.切换PORT1 led的WAP
org 0000h.
TOGLE:Mov p1, #01 //移动00000001到p1寄存器//
CALL DELAY //执行DELAY //
MOV A, P1 //移动p1价值蓄电池/ /
CPL A //补A值//
MOV P1, A //移动11111110到port1寄存器//
CALL DELAY //执行DELAY //
sjmp嘟嘟
DELAY: MOV R5, #10H //加载寄存器R5与10//
二:MOV R6, #200 //加载寄存器R6与200//
MOV R7, #200 //加载寄存器R7与200//
$ //将R7减为0
DJNZ R6, 1 //将R7递减至0 //
DJNZ R5, TWO //将R7减为0
RET //返回主程序//
结束
使用8051 M的定时器/计数器计算和程序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
驱使着延迟
ffh MOV P0, # 0
驱使着延迟
sjump回归
MOV R5, #50H //加载寄存器R5与50//
delay1:mov r6,#200 //加载寄存器R6,具有200 //
delay2:mov r7,#229 //加载寄存器R7,其中200 //
$ //将R7减为0
DJNZ R6, DELAY2//将R6递减至零
DJNZ R5, DELAY1//将R5递减至零
RET //返回主程序//
结束
3.WAP使用mode0计数250脉冲
语法:
org 0000h.
MOV TMOD, #50H //选择计数器//
MOV TH0, #15 //移动计数脉冲更高位//
Mov th1, # 9fh //移动计数脉冲,下位//
SET TR0 //ON the timer//
JNB $ //递减计数值至零//
CLR TF0 //清除计数器,标志位//
CLR TR0 //停止定时器
结束
基于8051 bob的是什么网站M的串行通信编程icrocontroller:
串行通信bob的是什么网站通常用于传输和接收数据。8051年单片机由UART/USART串行通信和信号的发送和接收组成bob的是什么网站Tx和Rx别针。UART通信按位串bob的是什么网站行传输数据。UART是一种半双工协议,传输和接收数据,但不是同时进行的。
1.将字符传送至超级终端
mov scon,#50h //设置串行通信//bob的是什么网站
MOV TMOD, #20H //选择定时器模式//
mov th1,#-3 //设置波特率//
SET TR1 //ON the timer//设置定时器
MOV SBUF, # ' S ' //将S发送到串行窗口//
JNB TI,$ //计时器的减少值,直到它为零//
//清除接收中断
CLR TR1 //清除定时器
2.WAP通过超级终端发送接收字符
mov scon,#50h //设置串行通信//bob的是什么网站
MOV TMOD, #20H //选择定时器模式//
MOV TH1, #-6 //设置波特率//
SET TR1 //on the timer//设置定时器
MOV SBUF, # ' S ' //将S发送到串行窗口//
JNB RI,$ //递减计时器,直到它为零//
//清除接收中断
MOV P0, SBUF //发送SBUF寄存器值到port0//
CLR TR1 //清除定时器
这完全是关于汇编语言的8051编程,简要介绍基于示例的程序。我们希望这对汇编语言的充分信息肯定有助于读者,我们期待他们在下面的评论部分中的宝贵意见。
先生,谢谢你分享这些重要信息。
太好了,对我这样的新人很有帮助。示例程序使所有的事情都很清楚
好
好