前言

对于汇编语言寻址方式的理解,寻址方式是指令中提供操作数的方式,可以是操作数本身,也可以是操作数存放的地址。指令格式:
操作符 目的操作数,源操作数 ;注释
目的操作数说的是你要把什么东西放进来,就像是一个袋子一样,而源操作数是具体的东西
寻址方式是对于目的操作数和源操作数相对来说的,各有不同。
由于有不同存储器,我们进行访问存储器的时候,需要不同的指令进行访问,主要对于内部RAM和特殊功能寄存器SFR(MOV指令)、外部RAM(MOVX指令)、程序存储器ROM(MOVC指令)。值得注意一点的是内部RAM和SFR是统一编址的。
寻址方式有七种,分别是立即寻址、直接寻址、寄存器寻址、寄存器间接寻址(主要针对于外部RAM,其次是内部RAM)、变址寻址(针对于ROM,内部和外部都是)、相对寻址、位寻址。下面分别讲述:

对于内部RAM各个区的理解


如上图所示,00H-7FH是内部RAM的位地址范围
1)00H-1FH为寄存器区,分为四组,使用哪组由PSW里的RS1和RS0共同决定,编号是0123.
2)20H-2FH是可位寻址区.
3)20H-7FH也可以作为通用RAM区
4)20H-7FH也可以作为堆栈区,指针SP指向字节地址07H.

1、立即寻址

**定义:**直接给出了操作数的寻址方式,特征就是加个#号,(如8位的#data,#12H)或者(16位的#data16,#2022H)
指令演示
MOV A,#12H;这里对于源操作数就是立即寻址
MOV DPTR,#2022H;同上,但是这是对于16位的立即数
它是对于,内部的RAM和特殊功能寄存器的操作,如A,B,DPTR这种功能寄存器他们都有自己的地址,如A的是E0H,B的是F0H,一般特殊功能寄存器都使用直接寻址

2、直接寻址

定义:指令中直接给出了操作数的地址,包括1)内部RAM,在指令中直接给出地址,就不用加#号了;2)特殊功能寄存器的名字,但是,除了这几个A,B,DPTR,R0,R1,R2,R3,R4,R5,R6,R7(Rn,n=0-7),其他的都是直接寻址方式。
值得注意的是B如果不是作为乘除法的话,也是直接寻址,A要想作为直接寻址的话必须变为ACC。
指令演示:
MOV A,12H;这里对于源操作数是直接寻址
MOV P0,#45H;这里对于目的操作数就是直接寻址
它是对于,内部RAM和特殊功能寄存器的寻址,内部ROM是直接给出的地址,特殊功能寄存器除了那几个,全是直接寻址。

3、寄存器寻址

定义:以寄存器的内容为操作数的寻址方式,是上面直接寻址不可以用的那几个,A,B,DPTR,R0,R1,R2,R3,R4,R5,R6,R7(Rn,n=0-7),其他的寄存器都是直接寻址。
特例就是A和B两个使用的需要注意,A直接用就是寄存器寻址,B要在乘除法中使用才是寄存器寻址,不然就是直接寻址。
指令演示
MOV A,R0;这里对于目的操作数和源操作数都是寄存器寻址
MUL AB;这里AB都是寄存器寻址,这里是乘法,所以B也是寄存器寻址
特例
MOV B,R0;目的操作数是B,B在这里没有用到乘除法,所以是直接寻址,而不是寄存器寻址
PUSH ACC;这里A变为了ACC,说明了A是直接寻址
它是对于内部RAM和特殊功能寄存器的寻址,内部RAM的话就是R0-R7,剩下的A,B,DPTR就是特殊功能寄存器。

4、寄存器间接寻址

定义:以寄存器的内容为操作数的寻址方式,加@,只有这四个**@A,@B,@R0,@R1可以。
指令演示:
对于外部的RAM只有四条指令
两条读指令和两条写指令(RAM可读和写)
MOVX A,@Ri;读指令,对于源操作数就是寄存器间址,Ri代表R0和R1
MOVX A,@DPTR;读指令,DPTR间址,同上
MOVX @Ri,A;写指令,同上
MOVX @DPTR,A;写指令,同上
对于内部的RAM,用到了Ri来作为间址,例如
MOV @R0,A;这里对于目的操作数是寄存器间址,@R0
MOV @R1,A;这里对于目的操作数是寄存器间址,@R1

5、变址寻址

**定义:**这里以DPTR或者PC中内容加上A累加器内容之和。
指令演示:
这里只能对于,程序存储器ROM操作,不管是内部还是外部只有两条指令ROM(只可以读操作)
MOVC A,@A+DPTR;这里对于源操作数就是变址寻址
MOVC A,@A+PC;同上

6、相对寻址

定义:以计数器PC的内容为基础,加上指令给出的一字节补码数形成新的PC值的方式,主要用于程序分支的转移。
基本上这个用的很少。

7、位寻址

定义:对位地址的内容作位操作方式称为位寻址。位地址范围是00H-7FH,注意区分位地址不是可位寻址区20H-2FH。
指令演示:
由于只有内部RAM和特殊功能寄存器的部分单元有位地址,所以位地址只能对有位地址的这两个空间进行寻址操作。位寻址也是一种直接寻址方式,但是说位寻址更加的正确,因为直接寻址给出的的地址是字节地址,而位寻址给出的是位地址。
MOV C,32H;这里C作为进位标志位CY,该指令将32H位地址内容送给CY
MOV A,32H;将字节地址为32H单元的内容送到累加器A
所以要看是位地址还是字节地址需要看另一个操作数的类型,一般对有C的话,都是位寻址,说位寻址更加的正确。

总结

学会看目的操作数和源操作数的寻址方式,以及理解对于各个存储器的寻址方式,以及指令是怎么样操作的。

10分钟学会汇编语言的寻址方式相关推荐

  1. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    原文:UWP开发入门(十九)--10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支 ...

  2. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  3. 百度贴吧自动发帖_引流网赚之百度贴吧引流窍门:实操引流教程百度贴吧零成本自动顶帖+10分钟学会豆瓣顶帖引流...

    引流网赚之百度贴吧窍门:实操引流教程<百度贴吧零成本自动顶帖>+<10分钟学会豆瓣顶帖引流> 关于百度贴吧的引流方式有很多,像常见的关键词排名引流,比如,百度贴吧引流效果好不好 ...

  4. NiosII软处理器快速入门- 10分钟学会NiosII(1)

    http://hi.baidu.com/hieda/blog/item/7f69080e9efb80ce7bcbe13d.html Nios简单介绍: Nios II是一个用户可配置的通用RISC嵌入 ...

  5. 手机版python3h如何自制游戏_Python 飞机大战|10 分钟学会用 python 写游戏

    Python 飞机大战|10 分钟学会用 python 写游戏 2018 年 python 语言大火, 这把火看趋势已然延续到了 2019 年! 除了在科学计算领域 python 有用武之地之外, 在 ...

  6. #今日论文推荐#1小时学会走路,10分钟学会翻身,世界模型让新生机器狗掌握多项技能

    #今日论文推荐#1小时学会走路,10分钟学会翻身,世界模型让新生机器狗掌握多项技能 人类宝宝在出生后的第1年里,就会逐渐掌握协调能力,学习坐.立.翻滚和爬行. 那么机器人呢? 机器人能完成多复杂的任务 ...

  7. 惠普服务器win10安装系统教程,惠普笔记本U盘装Win10系统图文教程 10分钟学会重装系统...

    U盘装系统,是电脑爱好者"老生常谈"的一个话题,在"电脑百事网"能找到许多类似的教程文章,不过今天的教程与往期有些不一样,首先是制作启动U盘,选用了一些更安全的 ...

  8. 最完整的WordPress建站教程,新手10分钟学会建站

    假如你是一个菜鸟,也能从0开始,10分钟学会搭建(wordpress,Dede,Discuz!..)网站. 网站=域名+空间和数据库+网站程序+模板 1准备材料 [域名] 网址就相当于家的住址,记住和 ...

  9. pulsar 容量_[Pulsar系列] 10分钟学会Pulsar消息系统概念

    Apache Pulsar Pulsar是一个支持多租户的.高性能的服务与服务之间消息通讯的解决方案,最初由雅虎开发,现在由Apache软件基金会管理. Pulsar在Yahoo的生产环境运行了三年多 ...

最新文章

  1. python做一个考试系统_请用 Python 语言编写一个简易的系统登录程序。
  2. laravel mysql rand_laravel如何从mysql数据库中随机抽取n条数据(高性能) - Laravel学习网...
  3. JavaScript window.setTimeout() 的详细用法
  4. OpenCV中VideoWriter输出视频文件为空或6KB解决方法(java)
  5. Map的putAll方法踩坑实记(对象深拷贝浅拷贝)
  6. html页面退出用什么函数,离开网页弹窗函数onbeforeunload与onunload
  7. maya中英文对比_maya中英文对照表
  8. 文件不能自动求和_Excel求和公式函数的使用方法教程
  9. 用好SVG格式 让网站速度提升起来
  10. 如何获取h.264码流的码率和帧率
  11. Ubuntu 安装 OpenCV(亲测有效)
  12. 服务器系统2008还原,Windows2008系统克隆——GHOST备份还原系统
  13. 确定空间直线延长线上的一点
  14. xml-rpc是个什么东东?
  15. 贪心算法之汽车加油问题
  16. 某云安全扫描对SQL Server潜入的观察日记
  17. 电脑主要硬件各种作用
  18. 碟中谍5中的科技:详解“步态分析”
  19. 二、Apollo高精地图详解(2. 高精地图的采集、生产与格式规范)
  20. C++中 对》和《的重载

热门文章

  1. 苹果x付款显示服务器异常,怎么解决App Store未完成付款或AppleID登录失败
  2. 从苏宁电器到卡巴斯基(第二部)第07篇:我在卡巴的日子 VII
  3. 打印机自动打印之前的页面的解决方法
  4. 强大的文本编辑器EmEditor最新版分享
  5. Java设计模式(三)——工厂模式
  6. c语言在数学方面的应用编程,浅谈数学在C语言编程中的应用.doc
  7. Qt自定义控件(IP输入框,windows下)
  8. Confluence 6 设置你的个人空间主页
  9. 蓝汛之,MIC的MUTE【篇】
  10. 基于 Kubernetes 和 Spring Cloud 的微服务化实践