计算机依靠执行指令高速高效地完成着各种复杂的运算和操作。在计算机中所有的指令和数据都放在存储器中,执行指令时要频繁地从存储器取数或向存储器送数。存储器是很多的,每个存储器有一个地址,以便能按地址找到这个存储器,寻找所需要的存储器地址,称之为“寻址”,寻找这个地址的方式叫“寻址方式。”打个比方,某人从外地出差来北京,要去东风市场,一个人告诉他用几种不同的方法都可以找到,第一种方法是找到王府井大街××号就找到了,即直接寻(找地)址;第二种方法是先找到百货大楼,它的斜对面就是东风市场,即相对寻址;第三种是乘坐经过东风市场的公共汽车,在东风市场那一站下车自然就能找到东风市场;还有第四种……,计算机中的寻址方式要比上述找东风市场的方式多得多。一台计算机的寻址方式越多。它的功能就越强,灵活性越大。在微型计算机中寻址方式的种类主要取决于所用微处理器(CPU)的种类。例如在苹果牌计算机中使用的6502CPU有13种寻址方式,Z80CPU有10种寻址方式,其中常见的有以下两种:
1.直接寻址:我们先看一条直接寻址的指令,LDA,(2000H),LD是Load的缩写,意思是向寄存器装数,A代表A寄存器,2000是存储器地址号。H这个字母告诉我们2000是个十六进制数,这条指令还可以用简单的符号来加以描述,即:(2000H)→A,其中2000H表示一个地址,加上括号后(2000H)则表示2000H地址存储器中存的数,箭头表示数据的传送方向。因此这种指令表示将2000H地址单元存的数送到A累加器。图1是执行这条指令的示意图,执行完这条指令后A寄存器中的数就是5 5。从这条指令可以看出直接寻址是指操作数地址(2000H)就是存储器的真正地址。

2.寄存器间接寻址:假如在两个寄存器H、L中事先装入数,然后做下面的指令LDB,(HL),LD的意思和前面讲的一样,B表示B寄存器,HL是两个寄存器,也叫寄存器对,这是因为这两个寄存器经常在一起使用的缘故。这条指令的执行过程请看图2,把H、L寄存器中存的数(3000)作为一个存储单元的地址,然后把这个单元中存的数40送到B寄存器。

这条指令的操作数地址(3000)没有直接给出,而是放在寄存器HL中,故称之为间接寻址,用这种方式表面上面似乎隔了一层,麻烦了一些,实际上在编制程序时它却使程序变得灵活,对编程序和执行程序都大有好处。
3.寄存器寻址:这种指令限于用在CPU内部寄存器之间进行操作。作如:“LDA,B”表示将B寄存器的数送给A累加器。这时把B寄存器本身看成一个存数的地方,不过它不需要到CPU之外的地方去找,只要在CPU内部找到B寄存器就行了,故称之为寄存器寻址,这种指令只需一个字节。因为操作码本身就可以规定将B寄存器中的数送到A,所以与到存储器寻址不一样。我们知道:存储器有许多单元,要寻址就要指明是哪个,故要有操作数地址,而B寄存器只有一个,不需要操作数地址就可以指示出来了。
在以后的学习过程中我们还将接触到其它的寻址方式,这些寻址方式虽然各有特点,但总的原则是尽可能使计算机更快、更准确地完成各种复杂的运算。(吴文虎 焦宝文)