单片机direct怎么知道我要的地址?
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-09-10
寻址方式:指定操作数所在单元的方法。注意:源操作数、目的操作数都有各自的寻址方式。 掌握指令的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,30HMOV 30H,DPH直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。例如:MOV A,30H这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。2、位寻址区。20H-2FH地址单元。3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。直接寻址是唯一能访问特殊功能寄存器的寻址方式!大家来分析下面几条指令:MOV 65H,A ;将A的内容送入内部RAM的65H单元地址中MOV A,direct ;将直接地址单元的内容送入A中MOV direct,direct;将直接地址单元的内容送直接地址单元MOV IE,#85H ;将立即数85H送入中断允许寄存器IE数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是稿碧皮一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。
三、寄存器寻址操作数存放在工作寄存器R0 ~ R7中,或寄慧姿存器B中。例如:MOV A,R2寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。2、部分专用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。INC R3这条指令的意思是把寄存器R3中的内容加1。寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。
四、寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,指令中间接寻址寄存器前用“@”表示前缀。例如:MOV R0,#30HMOV A,@R0MOV A,#20HMOV R1,#40HMOV @R1,A寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例如:MOV R0,#30H ;将值30H加载到R0中 MOV A,@R0 ;把内部RAM地址30H内的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H内的值放到累加器A中大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器
单片机汇编指令有哪些?
答:逻辑操作数指令:1、ANL direct,#data 直接地址单元与立即数相“与”。2、ANL A,#data 累加器与立即数相“与”。3、ANL A,@Ri 累加器与间接RAM 单元相“与”。4、ANL A,direct 累加器与直接地址单元相“与”。5、ANL direct,A 直接地址单元与累加器相“与”。6、ANL A,Rn 累加器与寄存器...
单片机机器码
答:MOV direct,Rn的机械码是88H~8FH,direct 注释1:Rn分别对应88H到8FH。你这里是R0所以对应88H。8820中的前两个十六进制数88就是这样来的。注释2:direct就是指令中的地址。你这里是20.所以应该是8820.而不是2088.
单片机CJNE指令中的0―C是什么意思啊?能结合下一个程序说一下吗?_百...
答:当 A > (direct),C 就为0;当 A < (direct),C 就为1。0 ---> C,就是把 0 送到 C 的意思。
单片机系统指令功能指令
答:单片机系统指令功能指令详解如下:1. 字节交换指令: XCH A, Rn 用于交换累加器A与寄存器Rn的内容;XCH A, direct 用于交换A与直接寻址内存单元;XCH A, @Ri 则是累加器与寄存器间接寻址单元的数据交换。2. 半字节交换指令: XCHD A, @Ri 实现累加器低4位与RAM低4位的交换。3. 累加器半字节交换...
写出51单片机以直接地址为目的的操作数的指令
答:MOV direct,A 例: MOV 22H,A MOV direct,Rn 例: MOV 22H,R1 MOV direct1,direct2 例: MOV 22H,33H MOV direct,@Ri 例: MOV 22H,@R1 MOV direct,#data 例: MOV 22H,#33H
单片机中这条指令是什么意思??MOV direct,direct
答:这是单片机直接寻址的一种表示 例如:MOV P2,P1 其中90H是P1的地址,A0H是P2的直接地址,该指令的功能是将P1口的内容传送到P2口
...direct) 我认为是;direct<-(direct) ,即()问题?
答:呵呵 你的问题是没有完全理解好( )的含义,A 表示累加器 (A)表示累加器里装的数据 因此 MOV A,#29; 应该表示为(A)=29 不要表示为A=29 同理: MOV direct1,direct2 ;表示为(direct1)<-(direct2) 很正确 即把direct2单元中的内容传送到direct1单元中(里)2个单元中的数...
跪求单片机所有指令的通俗解释
答:数据传送类指令 MOV A, Rn 寄存器内容送入累加器 MOV A, direct 直接地址单元中的数据送入累加器 MOV A, @Ri 间接RAM中的数据送入累加器 MOV A, #data 立即送入累加器 MOV Rn, A 累加器内容送入寄存器 MOV Rn, direct 直接地址单元中的数据送入寄存器 MOV Rn, #data 立即数送入寄存器 MO...
单片机中,怎么才能知道指令的字节数?比如 MOV A,#05H的字节数是多少?要...
答:如果MOV 30H,20H 指令操作码占用一个字节操作数30H,20H共占用两个字节。因此是3个字节。不产生存储的有A、B、Rn、@Rn,好像还有但是你可以查一查 产生存储的有direct、addr11,#data8,#data16(占用两个),addr16(占用两个),别忘了rel也产生一个字节的存储,存储的是转以后的地址。时钟周期...
单片机的单片指令
答:助记符代码 说明MOV A,Rn E8~EF寄存器AMOV A,direct E5 direct 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,direct A8~AF direct 直接字节送寄存器MOV Rn,#data 78~7F data立即数送寄存器MOV direct,A F5 direct A送直接字节...
一、立即寻址所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀。例如: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,30HMOV 30H,DPH直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。例如:MOV A,30H这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。2、位寻址区。20H-2FH地址单元。3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。直接寻址是唯一能访问特殊功能寄存器的寻址方式!大家来分析下面几条指令:MOV 65H,A ;将A的内容送入内部RAM的65H单元地址中MOV A,direct ;将直接地址单元的内容送入A中MOV direct,direct;将直接地址单元的内容送直接地址单元MOV IE,#85H ;将立即数85H送入中断允许寄存器IE数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是稿碧皮一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。
三、寄存器寻址操作数存放在工作寄存器R0 ~ R7中,或寄慧姿存器B中。例如:MOV A,R2寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。2、部分专用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。INC R3这条指令的意思是把寄存器R3中的内容加1。寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。
四、寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,指令中间接寻址寄存器前用“@”表示前缀。例如:MOV R0,#30HMOV A,@R0MOV A,#20HMOV R1,#40HMOV @R1,A寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例如:MOV R0,#30H ;将值30H加载到R0中 MOV A,@R0 ;把内部RAM地址30H内的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H内的值放到累加器A中大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器
答:逻辑操作数指令:1、ANL direct,#data 直接地址单元与立即数相“与”。2、ANL A,#data 累加器与立即数相“与”。3、ANL A,@Ri 累加器与间接RAM 单元相“与”。4、ANL A,direct 累加器与直接地址单元相“与”。5、ANL direct,A 直接地址单元与累加器相“与”。6、ANL A,Rn 累加器与寄存器...
答:MOV direct,Rn的机械码是88H~8FH,direct 注释1:Rn分别对应88H到8FH。你这里是R0所以对应88H。8820中的前两个十六进制数88就是这样来的。注释2:direct就是指令中的地址。你这里是20.所以应该是8820.而不是2088.
答:当 A > (direct),C 就为0;当 A < (direct),C 就为1。0 ---> C,就是把 0 送到 C 的意思。
答:单片机系统指令功能指令详解如下:1. 字节交换指令: XCH A, Rn 用于交换累加器A与寄存器Rn的内容;XCH A, direct 用于交换A与直接寻址内存单元;XCH A, @Ri 则是累加器与寄存器间接寻址单元的数据交换。2. 半字节交换指令: XCHD A, @Ri 实现累加器低4位与RAM低4位的交换。3. 累加器半字节交换...
答:MOV direct,A 例: MOV 22H,A MOV direct,Rn 例: MOV 22H,R1 MOV direct1,direct2 例: MOV 22H,33H MOV direct,@Ri 例: MOV 22H,@R1 MOV direct,#data 例: MOV 22H,#33H
答:这是单片机直接寻址的一种表示 例如:MOV P2,P1 其中90H是P1的地址,A0H是P2的直接地址,该指令的功能是将P1口的内容传送到P2口
答:呵呵 你的问题是没有完全理解好( )的含义,A 表示累加器 (A)表示累加器里装的数据 因此 MOV A,#29; 应该表示为(A)=29 不要表示为A=29 同理: MOV direct1,direct2 ;表示为(direct1)<-(direct2) 很正确 即把direct2单元中的内容传送到direct1单元中(里)2个单元中的数...
答:数据传送类指令 MOV A, Rn 寄存器内容送入累加器 MOV A, direct 直接地址单元中的数据送入累加器 MOV A, @Ri 间接RAM中的数据送入累加器 MOV A, #data 立即送入累加器 MOV Rn, A 累加器内容送入寄存器 MOV Rn, direct 直接地址单元中的数据送入寄存器 MOV Rn, #data 立即数送入寄存器 MO...
答:如果MOV 30H,20H 指令操作码占用一个字节操作数30H,20H共占用两个字节。因此是3个字节。不产生存储的有A、B、Rn、@Rn,好像还有但是你可以查一查 产生存储的有direct、addr11,#data8,#data16(占用两个),addr16(占用两个),别忘了rel也产生一个字节的存储,存储的是转以后的地址。时钟周期...
答:助记符代码 说明MOV A,Rn E8~EF寄存器AMOV A,direct E5 direct 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,direct A8~AF direct 直接字节送寄存器MOV Rn,#data 78~7F data立即数送寄存器MOV direct,A F5 direct A送直接字节...