51单片机汇编程序的几个问题。。。。。
MOVP1,R7对吗?不对的话,为什么在程序中这样写却能实现效果呢?movR6,R7对吗?汇编程序中如何切换通用寄存器组?通过什么指令切换呢?顺便问下数码管为什么要消隐?...
MOV P1,R7对吗?不对的话,为什么在程序中这样写却能实现效果呢?
mov R6,R7对吗?
汇编程序中如何切换通用寄存器组?通过什么指令切换呢?
顺便问下数码管为什么要消隐?
谢谢 展开
mov R6,R7对吗?
汇编程序中如何切换通用寄存器组?通过什么指令切换呢?
顺便问下数码管为什么要消隐?
谢谢 展开
展开全部
六个问题就是120分了,呵呵,开个玩笑
你知道在51中数据传送指令有几条?告诉你,是29条,里面没有mov Rn,Rn这样的指令,为什么呢?因为单片机不允许同时有两个访存工作寄存器组的操作,p1呢,它不是工作寄存器,明白吗?
你知道在51中工作寄存器组有几组?上电复位后单片机用的是哪一组?为什么只能有一组是可用的呢,其它几组干什么去了?工作寄存器组的存储单元呢?单片机是怎么识别当前用的是哪一组?为什么要有好几组工作寄存器呢?
告诉你,是4组,分别是0,、1、2、3;上电复位后单片机用的是第0组;因为汇编指令里只有一个R0、R1、R2、R3、R4、R5、R6、R7,你要是往R0中存数据,只能是一个单元,所以是一组,其它几组呢,让它们闲着,等需要用的时候切过去;4组工作寄存器,每组8个单元,共32个单元,从片内RAM00H开始到1FH,自己算算,32个单元;在SFR(特殊功能寄存器)中有个PSW(程序状态字)的寄存器,它里面有两个位叫RS0、RS1,00、01、10、11组合,明白?上电复位后PSW要被清零的,就是00组合,他就是第0组工作寄存器的识别信号,明白?为什么要有好几组工作寄存器呢?那是为了程序调用的,发生子程序调用,保护主程序的工作状态,你要给子程序重新设一组工作寄存器,当然,你要是用不到工作寄存器,不切换也行,怎么切换呢?这你不会不知道了吧,给psw寄存器送个值把RS0、RS1的二进制数改了不就行了?
够明白的了吧?再要是不知道就看书去,太丢人了
你知道在51中数据传送指令有几条?告诉你,是29条,里面没有mov Rn,Rn这样的指令,为什么呢?因为单片机不允许同时有两个访存工作寄存器组的操作,p1呢,它不是工作寄存器,明白吗?
你知道在51中工作寄存器组有几组?上电复位后单片机用的是哪一组?为什么只能有一组是可用的呢,其它几组干什么去了?工作寄存器组的存储单元呢?单片机是怎么识别当前用的是哪一组?为什么要有好几组工作寄存器呢?
告诉你,是4组,分别是0,、1、2、3;上电复位后单片机用的是第0组;因为汇编指令里只有一个R0、R1、R2、R3、R4、R5、R6、R7,你要是往R0中存数据,只能是一个单元,所以是一组,其它几组呢,让它们闲着,等需要用的时候切过去;4组工作寄存器,每组8个单元,共32个单元,从片内RAM00H开始到1FH,自己算算,32个单元;在SFR(特殊功能寄存器)中有个PSW(程序状态字)的寄存器,它里面有两个位叫RS0、RS1,00、01、10、11组合,明白?上电复位后PSW要被清零的,就是00组合,他就是第0组工作寄存器的识别信号,明白?为什么要有好几组工作寄存器呢?那是为了程序调用的,发生子程序调用,保护主程序的工作状态,你要给子程序重新设一组工作寄存器,当然,你要是用不到工作寄存器,不切换也行,怎么切换呢?这你不会不知道了吧,给psw寄存器送个值把RS0、RS1的二进制数改了不就行了?
够明白的了吧?再要是不知道就看书去,太丢人了
追问
擦,小弟初学汇编,不懂的很多。。也就是说mov P1,Rn mov P1,@dptr mov P1,@Rn
都是对的,是吗?
追答
是,这个可以对,mov RN,RN这个不可以对,^_^
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询