數(shù)據(jù)傳送類指令是編程時(shí)使用最頻繁的一類指令。一般數(shù)據(jù)傳送類指令的助記符為“MOV”,通用的格式如下:
MOV,數(shù)據(jù)傳送類指令是把源操作數(shù)傳送到目的操作數(shù)。指令執(zhí)行后,源操作數(shù)不改變,目的操作數(shù)修改為源操作數(shù)。所以數(shù)據(jù)傳送類操作屬“復(fù)制”性質(zhì),而不是“搬家”。
數(shù)據(jù)傳送類指令不影響標(biāo)志位,這里所說(shuō)的標(biāo)志位是指Cy、Ac和OV,但不包括檢驗(yàn)累加器奇偶標(biāo)志位P。
1.以累加器為目的操作數(shù)的指令
這組指令的功能是把源操作數(shù)的內(nèi)容送人累加器A,源操作數(shù)有寄存器尋址、直接尋址、間接尋址和立即數(shù)尋址等方式,例如指令:
2.以Rn為目的操作數(shù)的指令
這組指令的功能是把源操作數(shù)的內(nèi)容送入當(dāng)前工作寄存器區(qū)的RO~R7中的某一個(gè)寄存器。
3.以直接地址direct為目的操作數(shù)的指令
這組指令的功能是把源操作數(shù)送入直接地址指定的存儲(chǔ)單元。direct指的是內(nèi)部RAM或SFR地址。
4.以寄存器間接地址為目的操作數(shù)的指令
這組指令的功能是把源操作數(shù)內(nèi)容送入RO或Rl指定的存儲(chǔ)單元中。
5. 16位數(shù)傳送指令
這條指令的功能是把16位立即數(shù)送入DPTR,用來(lái)設(shè)置數(shù)據(jù)存儲(chǔ)器的地址指針。AT89S51中設(shè)有兩個(gè)DPTR,通過(guò)設(shè)置特殊功能寄存器AUXR1中的DPS位來(lái)選擇。當(dāng)DPS-I,則指令中的DPTR即為DPTR1,DPTRO被屏蔽,反之亦然。DPTR既是一個(gè)16位的數(shù)據(jù)指針,又可分為DPH和DPL兩個(gè)8位寄存器進(jìn)行操作,十分靈活、方便。設(shè)有兩個(gè)DPTR后,可避免頻繁地出入堆棧操作。
對(duì)于所有MOV類指令,累加器A是一個(gè)特別重要的8位寄存器,CPU對(duì)它具有其他寄存器所沒(méi)有的操作指令。后面將要介紹的加、減、乘、除指令都是以A作為目的操作數(shù)的。Rn為CPU當(dāng)前所選擇的寄存器組中的RO~R7,直接地址指定的存儲(chǔ)單元為內(nèi)部RAM的OOH~7FH和特殊功能寄存器(地址范圍為80H~FFH)。在間接地址中,用RO或Rl作為內(nèi)部RAM的地址指針,可訪問(wèn)內(nèi)部RAM的OOH~7FH共128個(gè)單元。
6.堆棧操作指令
在AT89S51的內(nèi)部RAM中可以設(shè)定一個(gè)后進(jìn)先出(LIFO,Last In First Out)的區(qū)域,稱為堆棧。在特殊功能寄存器中有一個(gè)堆棧指針SP,它指定堆棧的棧頂位置。堆棧操作有進(jìn)棧和出棧兩種,因此,在指令系統(tǒng)中相應(yīng)有兩條堆棧操作指令。
(1)進(jìn)棧指令
這條指令的功能是,首先將棧指針SP加1,然后把direct中的內(nèi)容送到棧指針SP指示的內(nèi)都RAM單元中。
例如,當(dāng)(SP)=60H,(A)=30H,(B)=70H時(shí),執(zhí)行下列指令
結(jié)果為(61H)=30H,(62H)=70H,(SP)=62H。
(2)出棧指令
這條指令的功能是,將棧指針SP指示的棧頂(內(nèi)部RAM單元)內(nèi)容送入direct字節(jié)單元中,棧指針SP減1。
例如,當(dāng)(SP)=62H,(62H)=70H,(61H)=30H時(shí),執(zhí)行下列指令:
結(jié)果為(DPTR)=7030H,(SP)=60H。
7.累加器A與外部數(shù)據(jù)存儲(chǔ)器RAM/IO傳送指令
上述4條指令的助記符是在MOV的后面加“X”,“X”表示AT89S51單片機(jī)訪問(wèn)的是片外RAM存儲(chǔ)器或I/O口,是讀外部RAM存儲(chǔ)器或I/O口中的一個(gè)字節(jié)的數(shù)據(jù)到累加器A中,或?qū)⒗奂悠鰽中的一個(gè)字節(jié)的數(shù)據(jù)寫(xiě)入外部RAM存儲(chǔ)器或I/O口中。所以在執(zhí)行前兩條指令時(shí),RD(的反)(P3.7)有效;執(zhí)行后兩條指令時(shí),WR(P3.6)有效。
采用16位的DPTR進(jìn)行間接尋址,可尋址整個(gè)64KB片外數(shù)據(jù)存儲(chǔ)器空間,高8位地址(DPH)由P2口輸出,低8位地址(DPL)由PO口輸出。
采用Ri(i=0.1)進(jìn)行間接尋址,可尋址片外256個(gè)單元的數(shù)據(jù)存儲(chǔ)器。8位地址由PO口輸出,鎖存在地址鎖存器中,然后PO口再作為8位數(shù)據(jù)口。
評(píng)論