500年前 发表于 2012-1-6 21:34:08

实验10第一题

程序返回前为什么将si cx出栈 好像跟程序没有什么关系?因为一返回程序就退出了!
求解?

ok:   pop si
      pop cx

      ret

赵璐 发表于 2012-1-7 00:13:26

因为当执行call指令后会将下一个指令也就是mov ax,4c00h的IP地址入栈,然后他他在子程序中执行了 pushcx和push si两条指令现在sp指向的是push si这条指令的低字节,而ret指令时从栈中读取偏移地址然后跳到那个偏移地址如果不si和cx出栈的话,那ret指令执行后IP=SI那就不是mov ax,4c00h处了
页: [1]
查看完整版本: 实验10第一题