堆栈操作指令
发布时间:2016/7/10 18:06:33 访问次数:3736
堆栈操作是通过指令来完成的。将数据JCP0032送入堆栈的过程称为压入(或压栈)操作,而从堆栈中取出数据的过程称为弹出(或出栈)操作。
1)压栈指令
PUsH dl£ct ;(sPl+1→s二ld订Cct)→(sPl
压栈指令的功能是先将堆栈指针sP的内容加1,然后将指令指定的直接寻址单元内容传送至栈顶单元。
【例4.17】设(sθ=30H,(ACQ=20H,执行下述指令:
PUsH ACC ;(sP)+1_s只(ACC)→31H
结果为:o1II,=20H,(SD=31H°
PUsH ACC是用直接寻址方式寻址的,ACC=E0H,与PUSH E0H效果一样,若将PUsHACC写成PUSH A就是寄存器寻址方式,机器汇编时会提示该指令编写出错了。
(2)出栈指令
PoP dircct 《sP》→d虹C∝,(sP)-1→sP
出栈指令的功能是将当前堆栈指针sP所指示的单元的内容传送到该指令指定的单元中,然后SP中的内容减1。
【l9刂4.18】设(sP)=30H,⒁4H)=20H,l30H)=88H,执彳亍POP 44H后,(44H)=88H,(SP)=2FH°
数据交换指令
数据传送都是源操作数传送到目的操作数,而源操作数不变,数据流是单方向的;数据交换类指令则是双方向的,源和目的操作数都会发生改变。
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。 执彳亍指令XCH A,R0后, (A)=20H, (R0)=30H°若lR0)=⒛H,(A)30H,(20H)=88H,执行指令XCH A,@R0后,(A)=88H,80)=20H,(20H)=30H°
堆栈操作是通过指令来完成的。将数据JCP0032送入堆栈的过程称为压入(或压栈)操作,而从堆栈中取出数据的过程称为弹出(或出栈)操作。
1)压栈指令
PUsH dl£ct ;(sPl+1→s二ld订Cct)→(sPl
压栈指令的功能是先将堆栈指针sP的内容加1,然后将指令指定的直接寻址单元内容传送至栈顶单元。
【例4.17】设(sθ=30H,(ACQ=20H,执行下述指令:
PUsH ACC ;(sP)+1_s只(ACC)→31H
结果为:o1II,=20H,(SD=31H°
PUsH ACC是用直接寻址方式寻址的,ACC=E0H,与PUSH E0H效果一样,若将PUsHACC写成PUSH A就是寄存器寻址方式,机器汇编时会提示该指令编写出错了。
(2)出栈指令
PoP dircct 《sP》→d虹C∝,(sP)-1→sP
出栈指令的功能是将当前堆栈指针sP所指示的单元的内容传送到该指令指定的单元中,然后SP中的内容减1。
【l9刂4.18】设(sP)=30H,⒁4H)=20H,l30H)=88H,执彳亍POP 44H后,(44H)=88H,(SP)=2FH°
数据交换指令
数据传送都是源操作数传送到目的操作数,而源操作数不变,数据流是单方向的;数据交换类指令则是双方向的,源和目的操作数都会发生改变。
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。 执彳亍指令XCH A,R0后, (A)=20H, (R0)=30H°若lR0)=⒛H,(A)30H,(20H)=88H,执行指令XCH A,@R0后,(A)=88H,80)=20H,(20H)=30H°
上一篇:从累加器A输出数据的指令
热门点击