1 / 6

数据传送类指令

数据传送类指令. 指令特点: 1 、把源操作数传送到目的操作数,指令执行后,源操作数不变,目的操作数修改为源操作数; 2 、除传送到了 A 的指令外,一般不影响 PSW 中的标志位; 3 、涉及到了的助记符:片内 RAM : MOV 、 PUSH 、 POP 、 XCH 、 XCHD 、 SWAP 片外 RAM : MOVX 片内外 ROM : MOVC 一、内部 RAM 的数据传送指令 1 、与累加器有关的传送指令 实现 A 与不同寻址方式所指定的 RAM 单元之间的数据传送。

bayard
Download Presentation

数据传送类指令

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据传送类指令 指令特点:1、把源操作数传送到目的操作数,指令执行后,源操作数不变,目的操作数修改为源操作数;2、除传送到了A的指令外,一般不影响PSW中的标志位;3、涉及到了的助记符:片内RAM:MOV、PUSH、POP、XCH、XCHD、SWAP 片外RAM:MOVX 片内外ROM:MOVC 一、内部RAM的数据传送指令 1、与累加器有关的传送指令 实现A与不同寻址方式所指定的RAM单元之间的数据传送。 MOV A,Rn;A←Rn ,n=0~7 例:设(A)=56H MOV Rn,A;Rn←A MOV PSW,#00H MOV A,@Ri;A←((Ri)) MOV R2,A MOV @Ri,A;(Ri)←A,i=0、1 MOV PSW,#08H MOV A,direct;A← direct MOV R2,A MOV direct,A; direct←A

  2. 一、内部RAM的数据传送指令 2、立即数传送指令 • MOV Rn,#data;Rn← data 例: • MOV A, #data;A← data MOV R1,#40H • MOV direct, #data; direct← data MOV @R1,#30H • MOV @Ri, #data;(Ri)← data • MOV DPTR, #data16;DPTR← data16 • (DPH← data15~8,DPL← data7~0) 3、内部RAM单元之间的数据传送指令 • MOV direct1, direct2; direct1←( direct2) 例: • MOV direct, @Ri; direct← ((Ri)) MOV R0,#30H • MOV @Ri, direct;( Ri)← ( direct) MOV R1,#31H • MOV Rn, direct; Rn← ( direct) MOV A, @R0 • MOV direct, Rn; direct←( Rn) MOV @R1,A • 例3-10、例3-11

  3. 二、A与片外RAM之间的数据传送指令 • 只能与累加器A之间进行传送,且只能用Ri(R0、R1)、DPTR间址。 • MOVX A, @Ri;A← ((Ri)) ,i=0、1 • MOVX A, @DPTR;A←((DPTR)) • MOVX @Ri,A;(Ri)← (A) • MOVX @DPTR,A;(DPTR)←(A) • 例:将外部RAM2000H单元的内容送内部RAM30H单元。 • 解:MOV DPTR,#2000H • MOVX A, @DPTR • MOV 30H,A

  4. 三、程序存储器取数指令 • 完成从ROM中读取数据并送往累加器A中。 • MOVC A, @A+PC;A←((A)+(PC)+1) • 功能:以PC作为基址寄存器,A的内容作为无符号数和PC当前值(下一条指令的第一字节地址)相加后得到一个16位的地址,把该地址所指的ROM单元内容送到A中。 • [例3-14] 已知(A)=30H,执行下列指令后 • 2000H:MOVC A,@A+PC • 2001H:MOV 78H,A 结果:将ROM中共中央031H单元中的内容送A,然后又送给内部RAM78H单元。 • MOVC A, @A+DPTR;A ←((A)+(DPTR)) • 功能:以DPTR为基址寄存器,A中内容作为无符号数和DPTR的内容相加得到一个16位的地址,把该地址所指出的ROM单元的内容送A。 • [例3-15] 已知(DPTR)=8100H,(A)=40H,执行指令 • MOVC A, @A+DPTR • 结果:将ROM中8140H单元中的内容(片外)送A中。

  5. 内部RAM A 四、数据交换指令 • 1、全字节交换:A与片内RAM单元内容的全字节交换。 • XCH A, Rn;A Rn • XCH A, @Ri;A (( Ri)) • XCH A, direct;A ( direct) • 2、半字节交换 • A与片内RAM单元中内容的低4位进行交换,高4位不变。 • XCHD A, @Ri;A 3~0(( Ri))3~0 • 3、A自身半字节交换:A中内容的高4位与低4位互换。 A • SWAP A;A 7~4 A 3~0 • 例:已知片外RAM的20H单元中有 一个数X和内部RAM20H单元中有一个数Y,请编写它们互换的程序。 • 解: MOV R1,#20H • MOVX A, @R1;A←X • XCH A, @R1;A←Y,片内20H←X • MOVX @R1,A;片外20H←Y

  6. 五、堆栈操作指令 • PUSH direct;SP←(SP)+1,(SP)←( direct),压栈指令 • POP direct; direct←((SP)),SP←(SP)-1,弹栈指令 • PUSH:先将SP的内容加1,再将直接地址单元中的数据存入到了SP所批示的单元中。 • POP:先将堆栈指针SP所指单元的内容弹出,并送到直接寻址单元中,再将SP的内容减1,仍指向栈顶。 • 例:将片外8500H单元中内容压入堆栈,然后弹出到40H单元中。 • MOV DPTR,#800H • MOVX A, @DPTR;将片外8500H单元中的内容送到A中 • MOV SP,#30H;设置堆栈 • PUSH A;将A的内容压入堆栈 • POP A;将堆栈的内容弹到片内RAM40H单元中 • 例:下面程序段执行后,A和B的值为多少? • MOV A,#20H PUSH B • MOV B,#30H POP A • PUSH A POP B

More Related