文档详情

数据传送类指令

hs****ma
实名认证
店铺
PPT
440KB
约6页
文档ID:590889299
数据传送类指令_第1页
1/6

数据传送类指令£指令特点: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 一、内部一、内部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 二、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 三、程序存储器取数指令£完成从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中 四、数据交换指令£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←YA内部RAM 五、堆栈操作指令£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 。

下载提示
相似文档
正为您匹配相似的精品文档