极简单的asm问题(50分)

  • 主题发起人 主题发起人 foolboy007
  • 开始时间 开始时间
F

foolboy007

Unregistered / Unconfirmed
GUEST, unregistred user!
我刚学汇编 以前学过单片机
有个问题很不懂
比较大的汇编程序开头都有
push ds
sub ax ax
push ax
请问为什么要把0压入栈顶?
说详细一些好吗?
 
这个问题就没个会的??[:(]
 
什麼程序?我可很少看見:).這跟寫程序的習慣有關.
這些東西不用去看,去看關鍵的,它實現的方法.操作了哪些端口,用了那些中斷...
 
可是一开始的初始化工作都得做吧
把那些什么ds cs什么得保存到堆栈
这应该没什么不一样吧
 
只是保存程序执行前的系统状态而已呀,有什么好研究的。
 
是DOS下的吧, 在DOS下, 应用程序开始运行时DS指向程序段前缀 PSP,而PSP的头两个字节
为CD 20,也就是 INT 20,这3条指令运行完,在堆栈中就压入了一个返回到CD 20 这条指令
的地址,随后用RETF就跳转到INT 20, 程序运行结束。
 
To tseug: 确实是dos汇编
可我还是不明白,您说的跟我写的有什么关系?
我想知道的是为什么要 push ax 把0压入站顶?
请再说详细一下好吗? 我看的书上都没有这些,所以很迷惑
 
相当于把一个返回地址 DS:00 压入堆栈啊;
后来执行retf的时候,IP指向了PSP段00;就是上面说得int 20指令啊
 
谢谢,谢谢
to 蚊子 tseug
这点分如果不够的话请到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=912133
那里还有50分
 
多人接受答案了。
 
后退
顶部