‘壹’ 单片机中地址偏移值是什么
单片机中地址偏移值 准确来说应叫做:偏移量 用rel表示 是一个8位的带符号数(即补码)
表示数的范围为 -128~127
偏移量 即 rel 是在条件跳转指令中 或 短转移指令中的操作数
例如: SJMP 偏移量; 其机器指令代码为:80H rel (8位二进制数的补码)
执行时 (PC)<---(PC)+2+rel 即跳转到地址 是相对于原来指令地址(PC)值向上转移不超过128的单元 ( rel 为负) 或 向下转移不超过127个单元( rel 为正)
因此 该寻址方式也叫做相对转移
呵呵 满意 就给俺加分吧
‘贰’ 51单片机指令中,如何给rel赋值
相对寻址:先找到当前指令下一条指令的pc值,再加上相对偏移量rel,这是对机器码而言。
但在汇编指令中,rel就是目的地址,执行当前指令时,直接跳到rel代表的目的地址上去。
别看好多教材里胡扯,什么reli偏移量什么的,教材作者有本事把rel给成偏移量试试,看看目的地址是不是pc值加他所给定的rel值
‘叁’ 在单片机原理中,rel具体是什么意思怎么用
rel 是偏移量,就是相对一条指令来说的相对地址 每条指令都是要占用地址的不过写汇编时直接写绝对地址就行 想跳转到哪里就在那里做个标记 象 xx:这样djnz r7,xx;就在满足要求的时候就能跳转到地址为xx:的地方了,编译时汇编程序会自动将绝对地址换算成偏移量 在写跳转时候 不用管rel什么的例如:SJMP rel ;中跳到PC+2+rel 中PC表示 sjmp这条指令的地址 每条指令都有他的地址(都有它的PC指针地址的)其中中2是这整条语句的长度 这整体的意思就是 要跳到 这整条语句开始的地址 加上被它这条地址占据的2个地址 再加rel偏移量在实际编程中只要在一个地方标记xx:语句;当运行到sjmp xx;的时候就会跳到标记地址为xx的地方了 其中xx可以使任何标记
‘肆’ 单片机中rel什么作用
单片机中rel代表一个偏移量。
计算机汇编语言中的偏移量是把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。
段地址左移四位,与有效地址相加,就构成了逻辑地址。一般而言,段地址是cpu自己独立编制的,但是偏移量是程序员编写的。偏移量就是程序的逻辑地址与段首的差值。
(4)单片机rel扩展阅读
在实模式中,内存比保护模式中的结构更令人困惑。内存被分割成段,并且,操作内存时,需要指定段和偏移量。
段-寄存器这种格局是早期硬件电路限制留下的一个伤疤。地址总线在当时有20-bit。然而20-bit的地址不能放到16-bit的寄存器里,这意味着有4-bit必须放到别的地方。因此,为了访问所有的内存,必须使用两个16-bit寄存器。
这一设计上的折衷方案导致了偏移量格局。最初的设计中,其中一个寄存器只有4-bit有效,然而为了简化程序,两个寄存器都是16-bit有效,并在执行时求出加权和来标识20-bit地址。
参考资料来源:网络-偏移量
‘伍’ 单片机原理中,rel具体是什么意思如何使用
rel
是偏移量,不过写汇编时直接写绝对地址就行
想跳转到哪里就在那里做个标记
象xx:这样djnz
r7,xx;就能跳转了,编译时汇编程序会自动将绝对地址换算成偏移量
在写跳转时候
不用管rel什么的
‘陆’ 关于单片机里相对转移指令中rel的问题
sjmp是短转移指令,用相对地址,相对地址是有符号数,所以用的都是补码,89是一个负数,因为第一位是1,所以他如果变成双字节就要填FF,如果是正数才填00。。。。
补码你应该懂得把,负数的补码就是反码+1,实际这个语句是向前跳转,是一个减法,加上一个数的补码就是相当于执行了减法,89H不是原码他更不代表-89H。。。
所以向这样的语句你只要判断首位是不是比8大,如果大说明是负数加FF,向前跳转,反之向后跳转。。。
通常如果你想向前跳,想跳几个地址就把这个数化成2进制补码的形式变成16进制填上就没问题,不过实际当中这些事我们不需要做,编译器可以替我们干,我们只需要用标示,比如sjmp
D1,在要跳的位置填D1:
编译器会替我们算。。。
用于运算的数的分浮点数,有符号数,无符号数,只有无符号整型数的16进制才符合我们的常规思维,其他两种第一次见都会迷惑。。。
‘柒’ 单片机汇编中rel的格式是什么
pc本身是不能还得,这个的意思是pc+偏移量在传送到pc
‘捌’ 单片机指令JNB字母各代表什么意思
JNB就是后边的位操作码为0则跳转到指定的行地址。
这是汇编指令,应该是JNB SWLOOP, NEXT
是JNB就应该有逗号,而且逗号后还有标号,而SWLOOP是引脚,指令意思为:SWLOOP脚为低电平则转到标号NEXT处,否则继续向下执行。
如果SWLOOP是标号,那应该是JNC SWLOOP
这指令意思就不同了,是不进位(Cy=0)则转到SWLOOP处,否则向下执行。
(8)单片机rel扩展阅读:
模型为:JNB bit,rel,其中bit为直接寻址位,rel为要转移到的地方,通常是一个标号;它的意思是若bit为0,则转移到rel表示的标号处,否则不转移继续往下执行。
JNB是根据某一位的状态判断转移的,当检测位不是1(NB),即为0时就转移,通常用于判断引脚。例如:JNB P1.0, TEST;
功能:当引脚P1.0为0时,就跳转到TEST。
‘玖’ 51单片机的偏移量rel的范围-128~127是怎么算出来的
摘要 MCS-51单片机的相对寻址方式 中的 rel 偏移量的范围是 -128~127