4.立即数寻址方式 直接在指令中给出操作数一也称立即数。为了与直接寻址指 令中的直接地址加以区别,需在操作数前加前缀标志 “#9 例如:MOV A,#40H 第一个字节是操作码,第二字节是立即数,就是放在程序存储 器内的常数。 11
11 4.立即数寻址方式 直接在指令中给出操作数——也称立即数。为了与直接寻址指 令中的直接地址加以区别,需在操作数前加前缀标志“#” 。 例如: MOV A,#40H 第一个字节是操作码,第二字节是立即数,就是放在程序存储 器内的常数。 11
5.基址寄存器加变址寄存器间址寻址方式 以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器, 以两者内容相加形成的16位地址作为目的地址进行寻址。 例如指令:MOVC A,@A+DPTR 其中,(A)=05H, (DPTR)=0400H,指令执行结果是把程 序存储器0405H单元的内容传送给A。 本寻址方式的指令有3条: MOVC A,( @A+DPTR MOVC A, @A+PC JMP A,@A+DPTR 前两条指令适用于读程序存储器中固定的数据。例如,将固 12
12 5.基址寄存器加变址寄存器间址寻址方式 以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器, 以两者内容相加形成的16位地址作为目的地址进行寻址。 例如指令: MOVC A,@A+DPTR 其中,(A)=05H,(DPTR)=0400H,指令执行结果是把程 序存储器0405H单元的内容传送给A。 本寻址方式的指令有3条: MOVC A,@A+DPTR MOVC A,@A+PC JMP A,@A+DPTR 前两条指令适用于读程序存储器中固定的数据。例如,将固 12
定的、按一定顺序排列的表格存放在程序存储器中,在程序 运行中由A的动态参量来确定读取对应的表格参数。 第3条为散转指令,A中内容为程序运行后的动态结果,可根 据A中不同内容,实现跳向不同程序入口的跳转。 6.相对寻址方式 解决程序转移。该寻址是以该转移指令的地址(PC值)加上 它的字节数,再加上相对偏移量(re),形成新的转移 目的地址,从而程序转移到该目的地址。转移的目的地址 用下式计算: 目的地址=转移指令所在的地址+转移指令字节数+re| 13
13 定的、按一定顺序排列的表格存放在程序存储器中,在程序 运行中由A的动态参量来确定读取对应的表格参数。 第3条为散转指令,A中内容为程序运行后的动态结果,可根 据A中不同内容,实现跳向不同程序入口的跳转。 6.相对寻址方式 解决程序转移。该寻址是以该转移指令的地址(PC值)加上 它的字节数,再加上相对偏移量(rel),形成新的转移 目的地址,从而程序转移到该目的地址。转移的目的地址 用下式计算: 目的地址=转移指令所在的地址+转移指令字节数+rel
其中,偏移量re1是带符号8位二进制补码数,-128~+127。 程序转移范围是以转移指令的下条指令首地址为基准地址,相 对偏移在-128~+127之间。 例如,SJMP rel 程序要转移到该指令的PC值加3再加上re|的目的地址处。编写 程序时,只需在转移指令中直接写要转向的地址标号。 例如:SJMP LOOP “L00P”为目的地址标号。汇编时,由汇编程序自动计算和填 入偏移量。但手工汇编时,偏移量的值由手工计算。 14
14 其中,偏移量rel是带符号8位二进制补码数,–128~+127。 程序转移范围是以转移指令的下条指令首地址为基准地址,相 对偏移在–128~+127之间。 例如, SJMP rel 程序要转移到该指令的PC值加3再加上rel的目的地址处。编写 程序时,只需在转移指令中直接写要转向的地址标号。 例如: SJMP LOOP “LOOP” 为目的地址标号。汇编时,由汇编程序自动计算和填 入偏移量。但手工汇编时,偏移量的值由手工计算。 14
7.位寻址方式 对内部AM和特殊功能寄存器具有位寻址功能的某位内容进行 置1和清0操作。 位地址一般以直接位地址给出,位地址符号为“bt”。 例如:MOVC,bit其具体指令:MOVC,40H 把位地址为40H的值送到进位位C。 由于AT89S52具有位处理功能,可直接对数据位方便地实现置 1、清0、求反、传送、判跳和逻辑运算等操作,为测控系 统的应用提供了最佳代码和速度,增强了实时性。 15
15 7.位寻址方式 对内部RAM和特殊功能寄存器具有位寻址功能的某位内容进行 置1和清0操作。 位地址一般以直接位地址给出,位地址符号为“bit” 。 例如:MOV C,bit 其具体指令: MOV C,40H 把位地址为40H的值送到进位位C。 由于AT89S52具有位处理功能,可直接对数据位方便地实现置 1、清0、求反、传送、判跳和逻辑运算等操作,为测控系 统的应用提供了最佳代码和速度,增强了实时性。 15