push ax等价于
sub sp,2
mov ds,ss
mov si,sp
mov [si],al
mov [si+1],ah

pop ax等价于
mov ds,ss
mov si,sp
mov al,[si]
mov ah,[si+1]
add sp,2

push指令sp先自减2再传送数据的原因:
两条指令
mov [si],al
mov [si+1],ah
[si-2]指向目的地址,可直接合并为
mov ss:sp,ax

pop指令sp先传送数据再自加2的原因:
两条指令
mov al,[si]
mov ah,[si+1]
[si]指向目的地址,可直接合并为
mov ax,ss:sp

总结:
指令push、pop执行时对sp处理顺序的不同是为了保证在传送时sp指向的始终是待操作数据的首地址,从而统一了两操作在传送时的一致性(我猜,保持此处的一致性是为了这俩指令的底层实现传送数据时能用同一模块,只是源地址与目的地址不同)

猜想:汇编指令push和pop对sp的处理顺序缘由相关推荐

  1. 汇编指令push,mov,call,pop,leave,ret建立与释放栈的过程

    栈内的数据 栈在汇编层面是辅助实现函数调用的,每个函数调用过程在栈中被抽象成一帧 ,在老式的32位CPU架构IA32中还有固定寄存器指向当前帧底部(下图中的0x100000f4,0x100000d8) ...

  2. 微机原理——指令系统——传送类指令(MOV、LEA、LDS、LES、LAHF、SAHF、XCHG、XLAT、PUSH、POP、PUSHF、POPF)

    博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问. [没事儿可以到我主页看看 ...

  3. push,pop指令

    push,pop指令 push,pop格式可以是如下的: 1.push 寄存器 2.pop 寄存器 3.push 段寄存器 4.pop 段寄存器 5.push 内存单元 6.pop 内存单元 当pus ...

  4. 80C51汇编指令学习

    80C51汇编指令(111条)按字节数可以分为:单字节指令(49条),双字节指令(45条),三字节指令(17条) 单字节指令如INC A;其中操作助记符INC占5个Bit,累加器A占1个Bit,共占6 ...

  5. 汇编学习笔记——汇编指令

    目录 汇编指令 nop指令 mov.add.sub指令 adc.sbb指令 and.or指令 移位指令 逻辑左/右移指令 循环左/右移指令 算术左/右移指令 带进位循环左/右移指令 inc指令 pus ...

  6. 字典(汇编指令 INT 21H)

    汇编指令 AAA 未组合的十进制加法调整指令 AAA(ASCII Adgust for Addition) 格式: AAA 功能: 对两个组合的十进制数相加运算(存在AL中)的结果进行调整,产生一个未 ...

  7. 8086汇编基础 push,pop指令执行时,sp怎么变

    首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址 push,指针向低处走.我向1000:0000处push数据,那么push之前,sp初-2=sp末.先sp-2,再写入 pop,指针向高处 ...

  8. 8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))

    push和pop是用来操作栈的2个指令. push寄存器:将一个寄存器中的数据入栈pop寄存器:出栈用一个寄存器接收数据 1.push pop 只对字操作(不允许字节进栈)操作数长度为32位时进出栈为 ...

  9. 汇编指令:push、pop

    8086CPU出栈入栈都是以字为单位进行的. push ax 由一下两步完成 1.SP=SP-2 2.将ax中的内容送入SS:SP指向的内存单元 pop ax 1.将SS:SP指向的内存单元中的内容送 ...

最新文章

  1. VirtualBox安装64位Linux
  2. scrollWidth,clientWidth,offsetWidth的区别
  3. zcmu- 聪明的美食家 最长不连续上升子序列(nlogn)
  4. python 类静态属性_如何从Python中的类中引用静态属性?
  5. 在PHP中利用wsdl创建标准webservice
  6. vs安装windows media player 1208
  7. Ubuntu下安装arm-linux-gnueabi-xxx编译器【转】
  8. 使用Genymotion模拟器
  9. 【英语学习】【Daily English】U13 Holiday L03 I certainly didn't expect this
  10. 计算机与数学专业的就业前景,2019数学与应用数学专业就业前景和就业方向分析...
  11. 关于人工智能的实现(猜测)
  12. c语言运算符 ,C语言关于位和运算符
  13. Java Script小技巧【对象,属性】(转载)
  14. ACM金牌选手算法讲解《线性表》
  15. Hibernate 基本类型
  16. html实现登录界面
  17. FID指标复现踩坑避坑 文本生成图像FID定量实验全流程复现(Fréchet Inception Distance )定量评价实验踩坑避坑流程
  18. Python中常见的保留字(33+2)
  19. 造成增长停滞的各种原因
  20. iPhone媒体服务器修改,逆天!手工暴改iPhone 6 内存秒变2GB

热门文章

  1. MongoDB应用篇
  2. 打破信息孤岛完成EAI
  3. 使用for及递归求 1-100的和
  4. 嗯?原来if可以调用方法的?
  5. web安全_暴力破解
  6. 《操作系统》CPU如何区分正在运行的是内核程序or应用程序?
  7. 1131:基因相关性
  8. 数据结构和算法 —— 时间复杂度+空间复杂度
  9. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - C.奇妙的数字
  10. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1339:【例3-4】求后序遍历