堆棧操作指令
發(fā)布時(shí)間:2016/7/10 18:06:33 訪問次數(shù):3740
堆棧操作是通過指令來完成的。將數(shù)據(jù)JCP0032送入堆棧的過程稱為壓入(或壓棧)操作,而從堆棧中取出數(shù)據(jù)的過程稱為彈出(或出棧)操作。
1)壓棧指令
PUsH dl£ct ;(sPl+1→s二ld訂Cct)→(sPl
壓棧指令的功能是先將堆棧指針sP的內(nèi)容加1,然后將指令指定的直接尋址單元內(nèi)容傳送至棧頂單元。
【例4.17】設(shè)(sθ=30H,(ACQ=20H,執(zhí)行下述指令:
PUsH ACC ;(sP)+1_s只(ACC)→31H
結(jié)果為:o1II,=20H,(SD=31H°
PUsH ACC是用直接尋址方式尋址的,ACC=E0H,與PUSH E0H效果一樣,若將PUsHACC寫成PUSH A就是寄存器尋址方式,機(jī)器匯編時(shí)會(huì)提示該指令編寫出錯(cuò)了。
(2)出棧指令
PoP dircct 《sP》→d虹C∝,(sP)-1→sP
出棧指令的功能是將當(dāng)前堆棧指針sP所指示的單元的內(nèi)容傳送到該指令指定的單元中,然后SP中的內(nèi)容減1。
【l9刂4.18】設(shè)(sP)=30H,⒁4H)=20H,l30H)=88H,執(zhí)彳亍POP 44H后,(44H)=88H,(SP)=2FH°
數(shù)據(jù)交換指令
數(shù)據(jù)傳送都是源操作數(shù)傳送到目的操作數(shù),而源操作數(shù)不變,數(shù)據(jù)流是單方向的;數(shù)據(jù)交換類指令則是雙方向的,源和目的操作數(shù)都會(huì)發(fā)生改變。
XCH A,RJl ;(A)→Rn,(Rn)→A
XCH A,dlrcct KA)→drcct,(dirCcO→A
XCH A,@Ri ;((Ri))→A,(A)→(Ⅱ)
XCHD A,@m ;((Ri))3⑷→A3~0,(A3~o)→(Ri)3m
sWAP A ;(A7~4)→A3~o,(A3~o)→A7“
【】9刂4.19】若(R0)=20H, (A)=30H。 執(zhí)彳亍指令XCH A,R0后, (A)=20H, (R0)=30H°若lR0)=⒛H,(A)30H,(20H)=88H,執(zhí)行指令XCH A,@R0后,(A)=88H,80)=20H,(20H)=30H°
堆棧操作是通過指令來完成的。將數(shù)據(jù)JCP0032送入堆棧的過程稱為壓入(或壓棧)操作,而從堆棧中取出數(shù)據(jù)的過程稱為彈出(或出棧)操作。
1)壓棧指令
PUsH dl£ct ;(sPl+1→s二ld訂Cct)→(sPl
壓棧指令的功能是先將堆棧指針sP的內(nèi)容加1,然后將指令指定的直接尋址單元內(nèi)容傳送至棧頂單元。
【例4.17】設(shè)(sθ=30H,(ACQ=20H,執(zhí)行下述指令:
PUsH ACC ;(sP)+1_s只(ACC)→31H
結(jié)果為:o1II,=20H,(SD=31H°
PUsH ACC是用直接尋址方式尋址的,ACC=E0H,與PUSH E0H效果一樣,若將PUsHACC寫成PUSH A就是寄存器尋址方式,機(jī)器匯編時(shí)會(huì)提示該指令編寫出錯(cuò)了。
(2)出棧指令
PoP dircct 《sP》→d虹C∝,(sP)-1→sP
出棧指令的功能是將當(dāng)前堆棧指針sP所指示的單元的內(nèi)容傳送到該指令指定的單元中,然后SP中的內(nèi)容減1。
【l9刂4.18】設(shè)(sP)=30H,⒁4H)=20H,l30H)=88H,執(zhí)彳亍POP 44H后,(44H)=88H,(SP)=2FH°
數(shù)據(jù)交換指令
數(shù)據(jù)傳送都是源操作數(shù)傳送到目的操作數(shù),而源操作數(shù)不變,數(shù)據(jù)流是單方向的;數(shù)據(jù)交換類指令則是雙方向的,源和目的操作數(shù)都會(huì)發(fā)生改變。
XCH A,RJl ;(A)→Rn,(Rn)→A
XCH A,dlrcct KA)→drcct,(dirCcO→A
XCH A,@Ri ;((Ri))→A,(A)→(Ⅱ)
XCHD A,@m ;((Ri))3⑷→A3~0,(A3~o)→(Ri)3m
sWAP A ;(A7~4)→A3~o,(A3~o)→A7“
【】9刂4.19】若(R0)=20H, (A)=30H。 執(zhí)彳亍指令XCH A,R0后, (A)=20H, (R0)=30H°若lR0)=⒛H,(A)30H,(20H)=88H,執(zhí)行指令XCH A,@R0后,(A)=88H,80)=20H,(20H)=30H°