6.堆栈操作指令 MCS-51内部RAM中可以设定一个后进先出(LIFO Last in first out)的区域称作堆栈 堆栈指针SP指出堆栈的栈顶位置。 (1)进栈指令 PusH direct 先将栈指针SP加1,然后把 direct中的内容送到栈指针SP 指示的内部RAM单元中。 例如:当(SP)=60H,(A)=30H,(B)=70时, 执行 PUSH ACO;(SP)+1=61H→→SP(A)→61H PUSH B
6.堆栈操作指令 MCS-51内部RAM中可以设定一个后进先出(LIFO- Last In First Out)的区域称作堆栈. 堆栈指针SP指出堆栈的栈顶位置。 (1)进栈指令 PUSH direct 先将栈指针SP加1,然后把direct中的内容送到栈指针SP 指示的内部RAM单元中。 例如: 当(SP)=60H,(A)=30H,(B)=70H时, 执行: PUSH ACC ; (SP)+1=61H→SP,(A)→61H PUSH B ;
(SP)+1=62H→→SP(B)→62H 结果:(61H)=30H,(62H)=70H,(SP)=62H (2)出栈指令 POP direct SP指示的栈顶(内部RAM单元)内容送入 direct字节单元 中,栈指针SP减1. 例如:当(SP)=62H,(62H=70H,(61H=30H, 执行 POP DPH;(SP)→ DPH, (SP)-1→SP POP DPL;(SP)→DPL,(SP)-1→SP 结果:(DPTR)=7030H,(SP)=60H
(SP)+1=62H→SP,(B)→62H 结果:(61H)=30H,(62H)=70H,(SP)=62H (2)出栈指令 POP direct SP指示的栈顶(内部RAM单元)内容送入direct字节单元 中,栈指针SP减1. 例如: 当 (SP)=62H,(62H)=70H,(61H)=30H, 执行: POP DPH ;((SP))→DPH,(SP)-1→SP POP DPL ;((SP))→DPL,(SP)-1→SP 结果:(DPTR)=7030H,(SP)=60H
7累加器A与外部数据存储器传送指令 MOXA, @DPTR;(DPTR)→A,读外部RAM/O MOXA,aRi;(Ri)→A,读外部RAM/O MOVX ODPTR,A(A)(DPTR)写外部RAM/O MOVXORi,A;(A)→(Ri),写外部RAM/O 功能:读外部RAM存储器或IO中的一个字节,或把A中 一个字节的数据写到外部RAM存储器或IO中。 注意:RD*或WR信号有效。 采用DPTR间接寻址,高8位地址(DPH)由P2口输出, 低8位地址(DPL)由P0口输出。 MOV后“X”表示单片机访问的是片外RAM存储器或IO
7.累加器A与外部数据存储器传送指令 MOVX A,@DPTR ;((DPTR))→A,读外部RAM/IO MOVX A,@Ri ;((Ri))→A,读外部RAM/IO MOVX @DPTR,A;(A)→((DPTR)),写外部RAM/IO MOVX @Ri,A ;(A)→((Ri)),写外部RAM/IO 功能:读外部RAM存储器或I/O中的一个字节,或把A中 一个字节的数据写到外部RAM存储器或I/O中。 注意:RD*或WR*信号有效。 采用DPTR间接寻址,高8位地址(DPH)由P2口输出, 低8位地址(DPL)由P0口输出。 MOV后 “X”表示单片机访问的是片外RAM存储器或I/O