单片机汇编语言
单片机指令集的汇编语言编程方法介绍

单片机指令集的汇编语言编程方法介绍汇编语言是一种低级语言,它直接与计算机硬件进行交互,被广泛应用于单片机编程中。
本文将介绍单片机指令集的汇编语言编程方法。
一、简介单片机指令集是特定型号单片机支持的操作指令的集合。
每个指令都对应着特定的功能,通过组合和调用这些指令,可以实现复杂的计算和控制任务。
二、基本指令1. 数据传送指令数据传送指令用于将数据从一个位置传送到另一个位置。
常见的指令有MOV(将源操作数传送到目的操作数)、LDR(将存储器位置的数据传送到寄存器)和STR(将寄存器中的数据传送到存储器位置)等。
2. 算术指令算术指令用于进行数学运算,包括加法、减法、乘法和除法等。
常见的指令有ADD(将两个操作数相加并将结果存储到目的操作数中)、SUB(将目的操作数减去源操作数并将结果存储到目的操作数中)等。
3. 逻辑指令逻辑指令用于进行逻辑运算,包括与、或、非和异或等。
常见的指令有AND(将两个操作数进行按位与运算并将结果存储到目的操作数中)、ORR(将两个操作数进行按位或运算并将结果存储到目的操作数中)等。
4. 控制指令控制指令用于控制程序的执行流程,包括无条件跳转、条件跳转和中断等。
常见的指令有B(无条件跳转到指定的地址执行)、BEQ (当条件满足时跳转到指定的地址执行)等。
三、编程方法1. 熟悉指令集编程前需要详细了解所使用的单片机的指令集,包括指令的功能、操作数的类型和寻址方式等。
只有深入了解指令集,才能灵活运用指令编写程序。
2. 设计算法在开始编程之前,需要分析问题,设计出解决问题的算法。
算法应考虑输入、处理和输出等方面,合理利用指令集中的指令实现算法的逻辑。
3. 编写汇编程序根据算法,以汇编语言的格式编写程序。
程序的编写过程需要遵循指令的语法规则和寻址方式,并注意程序的可读性和效率。
4. 调试和优化程序编写完成后,需要进行程序的调试和优化。
通过单步执行程序,观察和检查程序执行过程中的中间结果,确保程序能够正确地执行。
单片机汇编语言程序设计

单片机汇编语言程序设计在当今高科技时代,单片机有着广泛的应用领域,它是一种微型电脑系统,具有集成度高、功耗低等优点。
而单片机汇编语言程序设计则是单片机开发中最基础、最重要的一环。
本文将从基础概念、程序设计流程以及实例分析等方面,全面介绍单片机汇编语言程序设计。
一、基础概念1. 单片机单片机是一种集成度非常高的微型电脑系统,它由微处理器、内存、输入输出设备以及时钟电路等部分组成。
它的主要特点是片内集成度高,体积小,功耗低。
2. 汇编语言汇编语言是一种与机器语言一一对应的低级编程语言,它是用助记符、伪指令和机器指令等表示的,比机器语言更容易理解和编写。
3. 程序设计在单片机领域,程序设计是指利用汇编语言编写单片机程序的过程,目的是为了实现特定的功能。
程序设计需要包括程序编写、调试和优化等环节。
二、程序设计流程1. 确定需求在开始编写程序之前,首先需要明确需求。
根据需要实现的功能,确定程序设计的目标和要求。
2. 构思设计根据需求,进行程序的构思设计。
确定程序的结构,拟定算法和流程图,为后续的编码工作做好准备。
3. 编写代码在进行编写代码之前,需要先熟悉单片机的指令集和编程规范。
然后,根据构思设计的结果,使用汇编语言编写程序代码。
4. 调试测试编写完成代码后,需要进行调试测试。
通过单步执行、布点断点等方式,检查程序是否存在错误,是否能够正确运行。
5. 优化改进在经过测试后,根据实际情况进行优化改进。
可以通过优化算法、减少冗余代码等方式,提高程序的执行效率和稳定性。
6. 文档记录最后,需要对程序进行文档记录。
包括程序的说明、使用方法、注意事项等,方便后续的维护和升级。
三、实例分析以LED 点亮为例,演示单片机汇编语言程序设计的实际操作步骤。
1. 硬件连接将单片机与 LED 灯连接,以 STM32F103C8T6 开发板为例,连接方式如下:- 将 LED 的长脚连接至单片机的 GPIOA.0 引脚。
- 将 LED 的短脚连接至单片机的 GND 引脚。
单片机编程语言比较C语言vs汇编语言

单片机编程语言比较C语言vs汇编语言单片机编程语言比较:C语言 vs 汇编语言单片机是一种嵌入式系统的核心组成部分,它们通过编程语言来控制硬件设备的操作。
在单片机编程中,C语言和汇编语言是两种常用的编程语言。
本文将比较C语言和汇编语言在单片机编程中的优势和劣势。
一、C语言C语言是一种高级编程语言,它的语法结构更接近自然语言,容易理解和学习。
以下是C语言在单片机编程中的一些优势:1. 可移植性:C语言的代码可以在不同的单片机上进行移植,只需要对底层操作进行少量的修改。
这大大简化了程序的开发和维护工作。
2. 抽象性:C语言提供了丰富的库函数和高级结构,可以简化底层操作的复杂性。
通过使用函数和模块化编程思想,可以更快速地开发出稳定的单片机应用程序。
3. 易于阅读和维护:C语言的语法规则相对简单,代码的可读性强。
在程序规模庞大或者需要频繁修改的情况下,C语言的易读性可以提高代码的可维护性。
然而,C语言也存在一些劣势:1. 速度较慢:相对于汇编语言而言,C语言程序的执行速度较慢,因为C语言的代码通常需要编译成机器码才能执行。
2. 存储占用较多:C语言中的库函数和高级结构对内存的消耗较大,这可能对内存资源较为紧缺的单片机造成影响。
二、汇编语言汇编语言是一种低级编程语言,它直接操作硬件寄存器和指令,具有更高的执行效率。
以下是汇编语言在单片机编程中的一些优势:1. 执行速度快:汇编语言直接操作底层硬件,没有C语言的编译和解释过程,所以执行速度更快。
在对执行效率要求较高的应用中,使用汇编语言可以更好地控制时间和资源。
2. 存储占用较少:使用汇编语言可以减少对内存的消耗,因为它没有C语言中的库函数和高级结构。
然而,汇编语言也存在一些劣势:1. 学习曲线陡峭:汇编语言的语法和操作方式与底层硬件紧密相关,需要较长的学习时间和经验积累才能熟练掌握。
2. 不易维护:汇编语言的可读性较差,代码的维护和理解难度较大。
汇编语言中常常需要直接处理内存和寄存器,这要求程序员对硬件结构有深入的理解。
单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言单片机C51汇编语言单片机(C51)是指一种集成电路上只包含一个集中式控制器的微处理器,具有完整的CPU指令集、RAM、ROM、I/O接口等功能。
汇编语言是一种低级语言,是用于编写单片机指令的一种语言。
汇编语言能够直接操作单片机的寄存器和输入/输出端口,因此在嵌入式系统的开发中非常重要。
本文将介绍单片机C51的汇编语言编程。
一、了解单片机C51单片机C51是目前应用最广泛的一种单片机系列,广泛用于各种电子设备和嵌入式系统的开发。
C51指的是Intel公司推出的一种基于MCS-51架构的单片机。
该系列单片机具有较高的性能和低功耗的特点,可用于各种控制和通信应用。
二、汇编语言的基本概念汇编语言是一种低级语言,与机器语言紧密相关。
它使用助记符来代替机器指令的二进制表示,使程序的编写更加易读。
在单片机C51汇编语言中,每一条汇编指令都对应着特定的机器指令,可以直接在单片机上执行。
三、汇编语言的基本指令在单片机C51汇编语言中,有一些基本的指令用于控制程序的执行和操作寄存器。
以下是一些常用的指令:1. MOV指令:用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。
2. ADD指令:用于将两个操作数相加,并将结果存储到目的寄存器中。
3. SUB指令:用于将第一个操作数减去第二个操作数,并将结果存储到目的寄存器中。
4. JMP指令:用于无条件跳转到指定的地址。
5. JZ指令:用于在条件为零时跳转到指定的地址。
6. DJNZ指令:用于将指定寄存器的值减一,并根据结果进行跳转。
四、编写单片机C51汇编程序的步骤编写单片机C51汇编程序需要按照以下步骤进行:1. 确定程序的功能和目标。
2. 分析程序的控制流程和数据流程。
3. 设计算法和数据结构。
4. 编写汇编指令,实现程序的功能。
5. 调试程序,并进行测试。
六、实例演示以下是一个简单的单片机C51汇编程序的示例,用于实现两个数的相加,并将结果输出到LED灯上:org 0H ; 程序的起始地址为0mov a, 05H ; 将05H赋值给累加器mov b, 07H ; 将07H赋值给B寄存器add a, b ; 将A寄存器和B寄存器的值相加mov P1, a ; 将相加结果输出到P1口end ; 程序结束在这个例子中,首先将05H赋值给累加器A,然后将07H赋值给B寄存器,接着使用ADD指令将A和B的值相加,将结果存储到累加器A中,最后将累加器A的值输出到P1口。
单片机主要使用汇编语言

单片机主要使用汇编语言单片机(Microcontroller)是一种集成了微处理器、存储器和外设接口的微型计算机系统,常用于控制和监控等应用领域。
在单片机的编程中,汇编语言是一种重要的编程语言,它可以直接操作单片机的寄存器和硬件资源,实现精确而高效的控制。
一、汇编语言概述汇编语言是一种低级的编程语言,它与机器语言相近,使用助记符来表示指令和数据。
与高级语言相比,汇编语言对计算机硬件的控制更加直接。
汇编语言的学习曲线较陡,但一旦掌握,可以发挥出更强大的性能和灵活性。
二、单片机编程的优势1. 效率高:汇编语言充分发挥了单片机的性能,可以精确地控制硬件资源,提高程序的效率。
2. 资源少:相对于高级语言,汇编语言在存储空间和处理器方面要求较低,适用于资源受限的应用场景。
3. 灵活性强:汇编语言可直接操控寄存器和外设,可以按需定制功能,适应各种硬件需求。
4. 调试方便:由于汇编语言直接操作硬件,对于调试和排错非常方便,有助于提高开发效率。
三、汇编语言的基本结构汇编语言的基本单元是指令(Instruction),每条指令可包含操作码(Opcode)、操作数(Operand)和注释(Comment)。
操作码表示要执行的操作,操作数为操作码的参数,注释用于解释指令的作用和用途。
四、汇编语言的寄存器寄存器是单片机中用于存储和操作数据的重要硬件资源,通过它可以实现数据的传输、运算和控制。
常用的寄存器包括程序计数器(PC)、累加寄存器(ACC)、状态寄存器(SR)等。
在汇编语言中,使用寄存器可以提高程序的执行效率。
五、汇编语言的基本指令汇编语言提供了一系列的基本指令,可以用于实现算术运算、逻辑运算、条件判断、循环和数据传输等常见操作。
例如,MOV指令用于数据的传输,ADD指令用于整数的加法运算,CMP指令用于比较运算等。
六、汇编语言的开发环境为了编写和调试汇编语言程序,需要选择适合的开发环境。
常用的汇编语言开发工具有Keil C51、IAR Embedded Workbench等,它们提供了汇编编译器、调试器和仿真器等功能。
单片机汇编语言经典一百例

单片机汇编语言经典一百例汇编语言是一种底层的程序设计语言,是一种将汇编指令直接翻译成机器指令的语言。
在单片机编程中,掌握汇编语言是非常重要的,因为它可以充分发挥单片机的性能,并且提高程序的运行效率。
本文将介绍一百个经典的单片机汇编语言例子,帮助读者更好地理解汇编语言的使用。
1. 点亮LED灯```ORG 0x0000 ; 程序起始地址MOV P1, #0xAA ; P1口输出高电平,LED灯点亮END ; 程序结束```2. LED流水灯效果```ORG 0x0000 ; 程序起始地址MOV P1, #0x01 ; P1口输出低电平,第一个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x02 ; P1口输出低电平,第二个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x04 ; P1口输出低电平,第三个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x08 ; P1口输出低电平,第四个LED点亮CALL DELAY ; 调用延时函数…DELAY: ; 延时函数MOV R0, #100 ; 设置延时时间DELAY_LOOP:DJNZ R0, DELAY_LOOP ; 循环减一RET ; 返回END ; 程序结束```3. 数码管动态扫描显示```ORG 0x0000 ; 程序起始地址CLR P0.0 ; P0.0口输出低电平,选择第一个数码管MOV P2, #0x7E ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.1 ; P0.1口输出低电平,选择第二个数码管MOV P2, #0x30 ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.2 ; P0.2口输出低电平,选择第三个数码管MOV P2, #0x6D ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.3 ; P0.3口输出低电平,选择第四个数码管MOV P2, #0x79 ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数…DELAY: ; 延时函数MOV R0, #100 ; 设置延时时间DELAY_LOOP:DJNZ R0, DELAY_LOOP ; 循环减一RET ; 返回END ; 程序结束```...通过以上例子,我们可以看到单片机汇编语言的应用非常广泛,可以实现各种各样的功能。
第4章 单片机汇编语言程序设计

RO 20HBCMDH BCDL
SWAP A ORL A, #30H MOV 21H, A SJMP $
;BCDH数送A的低4位 21 0011
;完成转换 @R0 ;存数
H22HB0C001D0HBCD 01000L
END
回目录 上页 下页
方法1小结:
以上程序用了8条指令,15个内存字节,执行时间为9个 机器周期。
21 0011BCDH H22H0011BCDL
回目录 上页 下页
程序:
ORG 1000H
MOV R0, #22H ;R0 22H MOV @R0,#0 ; 22H 0 MOV A, 20H ;两个BCD数送A
A
B00C01D01H0BB0CC0D0DHL
XCHD A, @R0 ;BCDL数送22H ORL 22H, #30H ;完成转换
例4-7:设30H单元存放的是一元二次方程ax2+bx+c = 0
根的判别式△= b2 – 4ac的值。
试根据30H单元的值,编写程序,
判断方程根的三种情况。
在31H中存放“0”代表无实根,
存放“1”代表有相同的实根,
存放“2”代表两个不同的实根。
解:△为有符号数,有三种情况,这是一多重分支程序
即小于零,等于零、大于零。
R3
R2
回目录 上页 下页
程序:
ORG 1000H CLR C CLR A SUBB A, R0 MOV R2, A CLR A
SUBB A, R1 MOV R3 , A SJMP $ END
;CY 0
;A 0
;低字节求补
;送R2
;A清零 R3 0000
;高字节求补 0000
单片机教案汇编语言程序设计

单片机教案汇编语言程序设计一、引言单片机是一种小型集成电路芯片,具有独立完成特定任务的能力。
而汇编语言是一种低级程序设计语言,能够直接操作硬件资源。
本教案旨在介绍单片机的程序设计,重点讲解汇编语言的基本概念和编程技巧,帮助学习者掌握单片机的应用。
二、单片机基础知识在开始学习汇编语言程序设计之前,需要对单片机的基础知识有所了解。
主要包括单片机的结构、寄存器的作用、IO口的应用等内容。
通过对这些基础知识的学习,能够更好地理解汇编语言的工作原理和编程思路。
三、汇编语言概述汇编语言是一种使用助记符来表示机器指令的低级程序设计语言。
相对于其他高级语言,汇编语言更接近硬件层面,可直接操控单片机的寄存器和IO口。
本节将介绍汇编语言的基本概念、语法规则和常用指令集,帮助学习者熟悉汇编语言的编写方式。
四、单片机编程环境搭建在进行汇编语言程序设计前,需要搭建相应的开发环境。
常用的单片机开发工具包括Keil、IAR等。
本节将以Keil为例,介绍如何配置和使用开发工具,以及如何将程序下载到单片机中进行调试。
五、第一个汇编程序本节将以一个简单的LED闪烁程序为例,介绍如何使用汇编语言编写单片机程序。
通过对程序的分析和调试,学习者能够理解汇编语言的基本结构和编程过程,并且能够独立完成简单的单片机程序设计。
六、汇编语言编程技巧除了掌握基本的汇编语言知识外,还需要掌握一些编程技巧,以提高程序的效率和稳定性。
本节将介绍一些常用的汇编语言编程技巧,包括循环、条件判断、子程序调用等,帮助学习者编写更加复杂和实用的单片机程序。
七、实例分析本节将通过几个实例,分析并介绍实际应用中的单片机程序设计方法。
例如,如何控制电机的转动方向和速度、如何读取温湿度传感器的数据等。
通过这些实例的分析,学习者能够将所学的知识应用到实际项目中,并且能够更好地理解和解决实际问题。
八、实验设计在本教案的最后,将提供几个实验项目作为实践环节,帮助学习者巩固所学的知识和技能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以直接地址为目的操作数的指令( 3.3.3 以直接地址为目的操作数的指令(5条) direct, MOV direct,A direct, MOV direct,Rn direct1, MOV direct1,direct2 direct, MOV direct,@Ri direct, MOV direct,#data 这组指令功能是把源操作数指定 源操作数指定的内容送入由直接 这组指令功能是把源操作数指定的内容送入由直接 地址指出的片内存储单元。 地址指出的片内存储单元。 例: MOV 20H,A
20112011-9-25
9
如:JC
23
指令代码
程序存储区 1000H 1001H 1002H 40 23 30 … 47 45
当前PC
… 1024H 1025H
23H
1002H ALU 1025H
20112011-9-25
10
3.2.7 位寻址 Bit Addressing
对片内RAM的位寻址区和某些可位寻址的特殊功 对片内RAM的位寻址区和某些可位寻址的特殊功 RAM 和某些可位寻址 能寄存器进行位操作时的寻址方式。 能寄存器进行位操作时的寻址方式。 如: SETB CLR 27H.5位置 位置1 3DH; 将27H.5位置1 C ;Cy位清0 Cy位清0 位清
Register Addressing 对选定的工作寄存器R0~R7、累加器A 通用寄存器B 对选定的工作寄存器R0~R7、累加器A、通用寄存器B、 R0 地址寄存器DPTR中的数进行操作。 DPTR中的数进行操作 地址寄存器DPTR中的数进行操作。 A,R0; R0工作寄存器中的数据送到累加器 中去。 工作寄存器中的数据送到累加器A 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。
6
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
程序存储区 2040H 2041H 指令代码 … 20E0H 93 … … ALU 47 20E0H A 47 E0 DPH DPL 20 00
20112011-9-25
7
如:MOVC A,@A+PC 设A=E0H
程序存储区 2040H 2041H 83 … … 47 45 ALU 2121H
12
§3.3
29条 数据传送类指令(29条)
Data Transfer Instruction MCS助记符: MCS-51 助记符: 助记符: 助记符: MOV、MOVX、 MOV、MOVX、MOVC XCH、XCHD、 XCH、XCHD、SWAP PUSH、 PUSH、POP
除了目的操作数为ACC的指令影响奇偶标志P 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 ACC的指令影响奇偶标志 标志位。 标志位。
20112011-9-25 18
2.要读或写外部的RAM,当然也必须要知道RAM的地址, 2.要读或写外部的RAM,当然也必须要知道RAM的地址, 要读或写外部的RAM RAM的地址 在后两条指令中,地址是被直接放在DPTR中的。 DPTR中的 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri Ri( R0或R1)只是8位的寄存器, 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。 位地址由P2 来提供。 P2口 供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中 使用时应先将要读或写的地址送入DPTR 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 再用读写命令。 将外部RAM 100H单元中的内容送入外部RAM中 RAM中 单元中的内容送入外部RAM 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 单元中。 DPTR, MOV DPTR,#0100H A, MOVX A,@DPTR DPTR, MOV DPTR,#0200H @DPTR, MOVX @DPTR,A
MOV MOV MOV MOV MOV
20112011-9-25
20H,R1 20H,30H 20H,@R1 0A0H,#34H P2,#34H
15
3.3.4 以间接地址为目的操作数的指令(3条) Ri, ;A →(Ri) MOV @Ri,A Ri, ;(direct) →(Ri) MOV @Ri,direct Ri, ; data →(Ri) MOV @Ri,#data 功能:把源操作数指定的内容送入以R0 R1为地址 R0或 功能:把源操作数指定的内容送入以R0或R1为地址 指针的片内存储单元中。 指针的片内存储单元中。 @R0, 例: MOV @R0,A @R1, MOV @R1,20H MOV @R0,#34H @R0,
以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两 DPTR或PC为基址寄存器,累加器A为变址寄存器。 为基址寄存器 者内容相加,结果作为操作数的地址。 者内容相加,结果作为操作数的地址。 常用于查表操作。 常用于查表操作。 操作数在程 序存储器中 MCSMCS-51 MOVC A, @A+DPTR ;(A+DPTR) →A →PC, MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
20112011-9-25
16
十六位数的传递指令(1条) 3.3.5 十六位数的传递指令 MOV DPTR, DPTR,#data16 8051是一种8位机,这是唯一的一条16位 8051是一种8位机,这是唯一的一条16位立即数传递指 是一种 16 功能:将一个16位的立即数送入DPTR中去。 16位的立即数送入DPTR中去 令。功能:将一个16位的立即数送入DPTR中去。其中 位送入DPH DPH, 位送入DPL DPL。 高8位送入DPH,低8位送入DPL。 DPTR, 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 执行完了之后DPH中的值为12H,DPL中的值为34H。 DPH中的值为12H 中的值为34H 如果我们分别向DPH,DPL送数,则结果也一样。 如果我们分别向DPH,DPL送数,则结果也一样。 DPH 送数 如下面两条指令: 如下面两条指令: 则就相当于执行了
20112011-9-25
DPH, MOV DPH,#35H DPL,#12H。 MOV DPL,#12H。 DPTR,#3512H。 MOV DPTR,#3512H。
17
累加器A与片外RAM之间的数据传递类指令(4 RAM之间的数据传递类指令(4条 3.3.6 累加器A与片外RAM之间的数据传递类指令(4条) MOVX MOVX MOVX MOVX A,@Ri @Ri,A A,@DPTR @DPTR,A
片内RAM:@R0,@R1,SP 片内RAM:@R0,@R1,SP 寄存器间接寻址 片外RAM:@R0 片外RAM:@R0 ,@R1,@DPTR 程序存储器:@A+PC,@A+DPTR 程序存储器:@A+PC,@A+DPTR 变址寻址 相对寻址 位寻址
20112011-9-25
程序存储器256字节范围内:PC+ 程序存储器256字节范围内:PC+偏移量 256字节范围内:PC+偏移量 片内RAM的位寻址区(20H 2FH字节地址 RAM的位寻址区(20H~ 字节地址) 片内RAM的位寻址区(20H~2FH字节地址) 某些可位寻址的SFR 某些可位寻址的SFR
操作数在 片内RAM中 操作数在 片外RAM中 操作数在 片外RAM中
A, 如: MOV A,@R0 A, MOVX A,@R0 MOVX A,@DPTR A,
20112011-9-25
5
3.2.5
变址寻址(基址+变址) 变址寻址(基址+变址)
Base-Register-plus-Index-Register-Indirect Addressing
说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。
1
汇编语言格式: 汇编语言格式:
地址 始地址 0000 地址 0030 标号 0031 0032 0033 0034 0036 0038 003A C3 E6 37 08 DA FB 80 78 18 03 03 MAIN: CLR C LOOP: MOV INC A , @R0 @R1 R0 ; MAIN为程序 为程序 20 00 30 LJMP MAIN ORG 0030H ; 跳向主程序 ; 主程序起始 机器码 源程序 ORG 0000H 注释 ; 整个程序起
20112011-9-25
4
寄存器间接寻址 Register Indirect Addressing 3.2.4
把地址放在另外一个寄存器中, 把地址放在另外一个寄存器中,根据这个寄存器中的数值 决定该到哪个单元中取数据。 决定该到哪个单元中取数据。 R0,R1----8位地址,片内低128字节或片外 R0,R1----8位地址,片内低128字节或片外 字节或 DPTR----16位 片外64KB ----16 DPTR----16位,片外64KB MCSMCS-51
操作数在片内 RAM位地址区或 SFR某些位中
20112011-9-25
11
寻址方式涉及的存储器空间
寻址方式 立即寻址 直接寻址 寄存器寻址 寻址空间(操作数存放空间) 寻址空间(操作数存放空间) 程序存储器 片内RAM 128字节、 片内RAM低128字节、SFR RAM低 字节 工作寄存器R0 工作寄存器R0~R7,A,B,DPTR R0~