指令及操作数的寻址方式

一 指令寻址

1.顺序寻址方式 —— PC+1→PC

       设置程序计数器(或称指令计数器)PC,每执行一条指令,计数器加1;

        把计数器内容作为指令的存储地址。  

2.跳跃寻址方式 —— 当程序转移时,修改PC的内容

      下条指令的地址,不是计数器给出的,而是当前指令指定的。

      程序跳跃后,按新的指令地址开始顺序执行,指令计数器的内容相应改变。

二 操作数寻址方式

  操作数的寻址:把操作数的形式地址,根据间址和变址等组合变换为操作数有效地址的过程。

  ⑴形式地址:指令中给出的地址。(不一定是实际地址)

  ⑵有效地址:操作数的实际地址。如寄存器编号或存储单元地址。

1.        立即寻址:指令的地址字段直接给出操作数本身

                                   MOV AX,2000H   ;将数据2000H存入累加器AX中

2.        直接寻址:指令字中直接给出操作数在内存的地址。形式地址=有效地址

                                    MOV AX,[2000H];  将有效地址为2000H的内存单元的内容读入AX中。

3.        隐含寻址:在指令中不明显地给出操作数的地址

4.        间接寻址意味着指令的地址码部分给出的地址A不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。 

5.        寄存器寻址方式:操作数放在CPU的通用寄存器中。此时指令中给出的操作数地址是通用寄存器的编号

MOV AL,BL  

6.        寄存器间接寻址方式:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。

 MOV AL,[BX] ;设 BX=2000H,(2000H)=80H,则 AL←80H

7.偏移寻址:直接寻址和寄存器间接寻址方式的结合;

有效地址由两部分组成:形式地址A,某个专用寄存器内的值。

EA=(R) +A。

1)        相对寻址方式

程序计数器PC的内容加上地址字段中A的值形成指令的目的地址

EA= (PC)+A   A可正可负!

2)        基准地址放在专用的基址寄存器Rb中,指令的地址码部分给出偏移量A,最后操作数的有效地址为:EA=(Rb)+A。

8.段寻址方式

  l  段寻址方式的实质还是基址寻址

9. 堆栈寻址

         堆栈有寄存器堆栈和存储器堆栈两种形式,它们都以先进后出的原理存储数据。

   数据的存取都与栈顶打交道,需要堆栈指示器(寄存器)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hbbliyong

你真的了解如何将 Nginx 配置为Web服务器吗

阅读之前,建议先阅读初识 Nginx。 之后,我们来了解一下 Nginx 配置。 抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和...

63270
来自专栏Java编程技术

一个有关定时生产与消费的问题

按照上面的逻辑看的话,每个队列里面最多有一个元素。其实不然,因为在多线程模型中每个线程占用cpu执行的时间是按照时间片来划分的,每个线程执行完自己的时间片后会被...

8810
来自专栏chenssy

【死磕Java并发】—–Java内存模型之happens-before

在上篇博客(【死磕Java并发】—–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性...

34390
来自专栏芋道源码1024

【死磕Java并发】—–Java内存模型之happens-before

在上篇博客(【死磕Java并发】—–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性...

30550
来自专栏自动化测试实战

flask第十三篇——url注意事项

30160
来自专栏Pythonista

redis学习

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

30240
来自专栏云霄雨霁

Java--线程同步&线程通信

30370
来自专栏码匠的流水账

nginx rewrite配置解读

本文主要解析一下ngx_http_rewrite_module中的rewrite相关配置。

9200
来自专栏Java帮帮-微信公众号-技术文章全总结

hibernate延迟加载详解

hibernate延迟加载详解 Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。hiber...

32130
来自专栏Python爬虫实战

Python指南:文件处理

哪种文件格式最适合用于存储整个数据集——二进制、文本还是XML?这严重依赖于具体的上下文。

15710

扫码关注云+社区

领取腾讯云代金券