立即注册 登录
独闷闷网 返回首页

又一个暑假的个人空间 http://dumenmen.com/?842 [收藏] [复制] [分享] [RSS]

日志

通用寄存器R0-R7

已有 1092 次阅读2015-3-30 10:44 |个人分类:汇编| 寄存器, 通用

        工作寄存器Rx是CPU本身的工作寄存器,R0-R7是用来存放单片机执行过程中的随机数据,RAM是需要另外的总线连接才能被CPU访问;CPU访问Rx的速度高于访问RAM的;

        通用寄存器R0-R7常用作临时工作单元,比如指针、计数器、累加和,还常用于子程序的参数传递。可以看成所有程序模块的公用单元。
        对于哪些不需要保存的中间结果使用R0-R7即可。如果所有的中间结果都定义专用单元,很快就把ram用完了。

       51的工作寄存器一共有32个,为内存中的00H--1FH单元,分为4组,分别是0组00H--07H单元、1组08H--0FH单元、2组10H--17H单元、3组18H--1FH单元、,每组的8个单元分别对应R0--R7。
俚这四组中只有一组是当前工作寄存器,程序中使用的就是当前工作寄存器中的8个单元。当前工作寄存器是可以由我们编程序指定的,并且在程序中可以随时变换。在PSW中,的PSW4、PSW3两位组合的00、01、10、11四个状态,分别指定工作寄存器的0组、1组、2组、3组,只需要用指令改变PSW的这两位状态,就可以改变当前工作寄存器组。这样,实际上就是有32个工作寄存器可以选用。 第 0 组: 00H~07H
第 1 组: 08H~0FH
第 2 组: 10H~17H
第 3 组: 18H~1FH
当前寄存器组:由 PSW 寄存器的 RS1 、 RS0 的组合决定
即 RS1和RS0的状态00/01/10/11可用于切换所用的寄存器组MOVX A,@DPTR是读外数据。movc查表我就不说了 MOVX @DPTR,A才是把累加器的东西送到指针的指令所指外部地址的指令。这就是个写信号(WR信号)。在指令MOV 40H,@R0中源操作数是(寄存器间接)寻址方式,而在MOV 40H,R0指令中源操作数是(寄存器)寻址方式,这两条指令的目的操作数又是(直接)寻址方式。1、已知(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40H)=20H,问执行程序后,R0、A和4BH、40H单元内容的变化如何?
MOV A,@R0 ;(A)=7FH
MOV @R0,40H ;(7FH)=20H
MOV 40H,A ;(40H)=7FH
MOV R0,#35H ;(R0)=35H
结果:(R0)=35H (A)=7FH (4BH)=7FH (40H)=7FH

2、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,(26H)=6FH,
(27H)=76H,下列程序执行后,结果如何?
CLR C ;(C)=0
MOV R2,#3 ;(R2)=3
LOOP: MOV A,@R0 ;
ADDC A,@R1 ;
MOV @R0,A ;
INC R0 ;
INC R1 ;
DJNZ R2,LOOP ;
INC NEXT ;此语句有误,程序将停止。
MOV @R0,#01 ;
SJMP $ ;
NEXT: DEC R0 ;
SJMP $ ;
(20H)=10H, (21H)=31H, (22H)=不确定,(23H)=不确定
Cy=不确定, A=不确定, R0=23H, R1=24H

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-4-20 04:50 , Processed in 0.109157 second(s), 20 queries .

返回顶部