为便于理解指令的形式和功能,对指令中操作数符号的约定如内容摘要:

行子程序 2 IP’(下 ) 执行子 程序 1 继续执行 子程序1 (a) (b) 子程序调用示意图 (a) 主程序调子程序; (b) 子程序嵌套示意图 IP(下 ) 15 规定由 SS指示 堆栈段的段基址 , 堆栈指针 SP始终指向 堆栈的顶部 , SP的初值规定了所用堆栈区的大小。 堆栈的最高地址叫 栈底。 SP SS 堆栈段 进栈方向 退栈方向 栈底 栈顶 16 ① 压栈指令 PUSH src。 src为 16位操作数 例: PUSH AX ;将 AX内容压栈 执行操作:( SP) 1← 高字节 AH ( SP) 2← 低字节 AL (SP) ← ( SP) 2 17 设( AX) =1020H,执行示意图如图 低地址 存储区 ( SS段) 执行前 (AX)=1020 (SP) 存储区 ( SS段) 进栈方向 执行后 20 10 (AL) (AH) 28 PUSH AX指令执行示意图 (SP)2 (SP) 高地址 低地址 高地址 (SP)1 18 压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg 例如: PUSH AX PUSH [BX] PUSH DS 注意: 进栈方向是 高地址 向 低地址 发展 ( 向上生成)。 19 ② 弹出指令 POP dest 例: POP BX ;将栈顶内容弹至 BX 执行操作: ( BL) ← ( SP) ( BH) ← ( SP) +1 ( SP) ← ( SP) +2 20 POP BX 的执行示意图如下图所示 低地址 存储区 ( SS段) 出栈方向 执行前 20 10 POP BX指令执行示意图 (SP) 存储区 ( SS段) 执行后 (BX)=1020 (SP) (SP)+1 (SP)+2 BX 20 10 高地址 低地址 高地址 21 堆栈指令使用时应注意几点 : ① 堆栈操作总是按 字 进行 ② 不能从栈顶弹出一个字给 CS ③ 堆栈指针为 SS:SP, SP永远指向栈顶 ④ SP自动进行增减量 ( 2, +2) 22 格式: XCHG reg, mem/reg 功能:交换两操作数的内容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。