51 单片机的寻址方式 学习汇编程序设计,要先了解CPU 的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。 指令的寻址方式 MOV P1, #0FFH 这条指令,第一个词MOV 是命令动词,也就是决定做什么事情的,MOV 是 MOVE 少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1 这个寄存器。 寻址方式:指定操作数所在单元的方法。 注意:源操作数、目的操作数都有各自的寻址方式。 掌握指令的7 种寻址方式的作用以及不同寻址方式所查询的存储空间及范围,对于常用的指令,能够给出指令的寻址方式。 在我们学习的8051 单片机中,有7 种寻址方法,下面我们将逐一进行分析。 立即寻址 所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀 MOV A, #20H 在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。该操作数直接参与操作,所以又称立即数,有“#”号表示。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如: MOV A, #3AH 这条指令的指令代码为74H、 3AH,是双字节指令,这条指令的功能是把立即数3AH 送入累加器A 中。 MOV DPTR, #8200H 在前面学单片机的专用寄存器时,我们已学过,DPTR 是一个16 位的寄存器,它由DPH 及 DPL 两个8位的寄存器组成。这条指令的意思就是把立即数的高8 位(即82H)送入DPH 寄存器,把立即数的低8 位(即00H)送入DPL 寄存器。 这里也特别说明一下:在 80C51 单片机的指令系统中,仅有一条指令的操作数是16 位的立即数,其功能是向地址指针DPTR 传送16 位的地址,即把立即数的高8 位送入DPH,低8 位送入DPL。 直接寻址 指令中直接给出操作数的地址。 MOV A, 30H MOV 30H, DPH 直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。 例如:MOV A, 30H 这条指令中操作数就在30H 单元中,也就是30H 是操作数的地址,并非操作数。 在 80C51 单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具...