历史上的今天
返回首页

历史上的今天

今天是:2025年04月20日(星期日)

正在发生

2021年04月20日 | 单片机的指令系统和寻址方式介绍

2021-04-20 来源:eefocus

1、MOVA,#20H


这条指令表示把20H这个数送入累加器A中(一个特殊功能寄存器)。


2、ADDA,70H


这条指令表示把累加器A中的内容(在上例中送入的#20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将结果保留在A中。这里MOV、ADD等称为操作码,而A、#20H、70H等均称为操作数。在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。因此,对于略懂英语的用户,掌握单片机指令的含意是较为方便的。操作数有多种表示法,如以上的#20H称为立即数,即20H就是真正的操作数。而70H是存贮器中某个单元的地址,在该单元中,放着操作数(比如说是3AH),ADDA,70H不是将70H和A中的内容相加,而是从存贮器70H单元中将3AH取出和A中的内容相加。由上可知,要找到实际操作数,有时就要转个弯,甚至转几个弯,这个过程称为寻址,MCS-51共有7种寻址方式,现介绍如下:


一、立即寻址:操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H。


二、寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名字来表示操作数的地址。例如MOVA,R0就属于寄存器寻址,即将R0寄存器的内容送到累加器A中。


三、直接寻址:操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADDA,70H中的70H。


四、寄存器间接寻址:操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。


如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。如MOVA,@R0。其它还有变址寻址、相对寻址、位寻址等,待以后再详细介绍。可能有人会问,在指令中直接给出实际操作数,不是简单、明了吗?为什么还要用其它几种寻址方式呢?这是因为在编制程序时很难一下子就给出操作数。如用单片机控制温度时,时时需要将给定的控制温度(如20℃)减去环境温度,而环境温度时时有变化,显然无法在程序指令中给出,只有通过一定方式,将其送入某个输入/输出口,再存放在某个寄存器中,这就必须用到寄存器寻址。又如要进行算术运算,要计算每班学员各科成绩的平均值,如果把每个学员的各科都编一个程序,在程序中直接给出该学员各科成绩,再求平均值,显然太麻烦。这里可以编一个求平均成绩的通用程序,把每位学员的成绩送入存贮器的各个单元中,这时可采取直接寻址,一个程序可供每个学员用,不是更方便吗?所以,寻址方式越多,编制程序就越方便、灵活,适用范围就越广。寻址有如找人,如被找的人有手机、BP机、座机电话等多种联系方式则就容易找到他,单片机也是如此,寻址方式越多,找操作数越方便,单片机的功能就越强。前面介绍51系列单片机的寻址方式时,常遇到单片机内部的一些寄存器、累加器A、通用寄存器R0~R7、数据指针DPTR和存贮器等。在以后介绍指令时,数据就要在这些寄存器、存贮器之间传送,或者进行运算。因此,编制程序就需熟悉单片机的内部结构。


8051单片机的内部总体结构其基本特性如下:


8位CPU、片内振荡器


4k字节ROM、128字节RAM


21个特殊功能寄存器


32根I/O线


可寻址的64k字节外部数据、程序存贮空间


2个16位定时器、计数器


中断结构:具有二个优先级、五个中断源


一个全双口串行口


位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。除128字节RAM、4k字节ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,余下的就是CPU的全部组成。把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031的框图,如果将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机的框图。


推荐阅读

史海拾趣

Dongguan Jingyue Electronics Co Ltd公司的发展小趣事

随着公司业务的不断扩大,Dongguan Jingyue Electronics Co Ltd面临着越来越复杂的供应链管理问题。为了降低成本、提高效率,公司决定对供应链进行优化。通过引入先进的供应链管理软件和系统,加强与供应商和物流公司的合作,公司成功实现了供应链的数字化和智能化管理,提高了整体运营效率。

高博(GBG)公司的发展小趣事

随着业务的不断拓展,谷峰公司开始实施全球化战略。公司在美国、欧洲、俄罗斯和东南亚等多个国家和地区设立了代表处和代理处,构建了覆盖全球的研发和销售网络。这一布局不仅使谷峰能够更快速地响应全球市场需求,还促进了其与国际知名企业的交流与合作,为公司的技术创新和产品升级提供了有力支持。

Amidon Associates Inc公司的发展小趣事

在半导体领域,技术创新是企业持续发展的关键。谷峰公司深知这一点,不断加大研发投入,致力于新技术的研发与应用。其中,SGT(Super Junction Technology)技术的成功研发,是谷峰发展历程中的一个重要里程碑。SGT技术以其低内阻、高效率的特点,成为高频应用的理想选择,极大地提升了谷峰产品的市场竞争力。此外,谷峰还推出了多款高性能的碳化硅MOSFET产品,进一步巩固了其在功率半导体领域的领先地位。

国兴(GOODSKY)公司的发展小趣事

品质是企业生存之本。谷峰公司始终将产品质量放在首位,建立了严格的质量控制体系,确保每一款产品的性能和质量都达到行业领先水平。同时,公司还注重品牌建设,通过参加国际展会、发布新产品、提供优质服务等方式,不断提升GOFORD品牌的知名度和美誉度。如今,GOFORD已成为电子行业可信赖的高可靠性功率器件供应商之一。

Burr-Brown公司的发展小趣事

Burr-Brown在音频领域取得了显著的成就。1957年,公司推出的Model 130成为世界上第一个固态运算放大器(op amp),这一技术在现代高级音频系统中仍占据核心地位。1982年,公司发布的16位单片数模转换器(DAC)更是彻底改变了音乐的播放和发行方式,使得音乐可以以高保真度进行复制,并方便地随身携带。Burr-Brown的技术成为优质音频的代名词,赢得了广泛的行业认可。

AZM [Arizona Microtek, Inc]公司的发展小趣事

在技术创新的基础上,AZM公司开始积极拓展市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立销售网络、开展合作伙伴关系等多种方式,逐步打开了国内外市场。同时,AZM公司注重品牌建设,通过提升产品质量、优化客户服务、加强品牌宣传等手段,逐渐树立了良好的品牌形象。

问答坊 | AI 解惑

benq台湾机构工程师的设计感受(一)

一切,从破坏开始……   家里的后院,洗衣机矩形的外壳被拆了下来,一把螺丝起子、一根铁槌,洗衣机机身内的片片块块散落一地, abcd、acdb、dacb、cdba……太多可能的排列组合,就算想破他的小脑袋瓜儿,也变不回原来的洗衣机……   明基桃 ...…

查看全部问答>

求助 毕业设计《基于单片机的计算器编程》

求助 毕业设计《基于单片机的计算器编程》  要求用MCS51单片机,protues仿真   急急急~~~…

查看全部问答>

WINCE 下创建网络链接---RasSetEntryProperties 如何设置参数 急!希望大侠们帮忙啊。。。分数不够还可以再加

RasSetEntryProperties  该函数有两个参数我不太懂得设置,一个是LPCTSTR lpszEntry 还有一个是LPBYTE lpbDeviceInfo; 1.lpszEntry  里面的那些参数应该如何设置? 2.lpbDeviceInfo 用传说中的typedef struct {    ...…

查看全部问答>

请问如何获得pci9054的注册号或者如何获得驱动WinDriver的注册号

用WinDriver作为PCI9054的驱动时,其中驱动程序中的这一部分: hWD = WD_Open();         if (hWD == INVALID_HANDLE_VALUE)         {的?                 ...…

查看全部问答>

wince菜鸟级问题....麻烦大家看看....

因为最近装了win7 ,与pb4.2不兼容,所以没办法,只能用虚拟机装这些软件,但是装了pb4.2后运行时。黑屏....所以evc都不用装了....运行也是黑屏....请问怎么解决,我看了网上很多解决的帖子,都没用,请问大家还会是哪方面的问题...跟虚拟机设置有 ...…

查看全部问答>

怎样读取RSSI才能使RSSI的读取正确而又不影响正常的数据接收呢?

我现在在用CC1020做一个数传模块,接收数据时需要读取RSSI的值,接收数据是在外部中断中进行的. 问题是:我在接收数据的时候读取的RSSI的值是不对的,不符合数据手册上的正常值;有时由于读取RSSI的值正常的接收数据也发生了错误. 请教我该怎样读取RSS ...…

查看全部问答>

关于温度芯片TSIC506的读取

有人用过这个温度传感器芯片没?它用得是占空比编码方式,单线传输,不知道有人做过类似的读取数据程序没有…

查看全部问答>

pwm问题

我对lm3s6965例程里的pwm例程把PD1改PE1,结果PE1输出低电平,而没改之前PD1输出对应的是喇叭,高电平有效,一下是原厂提供的程序 #include \"inc/hw_memmap.h\" #include \"inc/hw_types.h\" #include \"driverlib/debug.h\" #include \"drive ...…

查看全部问答>

2812中断优先级机制

      dsp的中断优先级的修改可以由头文件DSP281x_SWPrioritizedIsrLevels.h定义PIE组的优先级和组内的优先级,源文件.c文件中的中断程序对IER和PIEIERx进行了赋值,以此屏蔽优先级低的中断。     & ...…

查看全部问答>

stm32库里面是否有sd模式读写sd卡的库?

stm32库里面是否有sd模式读写sd卡的库?…

查看全部问答>