汇编初学者超简单问题!

Linux2001 2003-02-26 03:23:03
大家好,我是一个才学Dos汇编的白痴菜鸟,基本上我知道了一些常用的寻址指令和一些伪指令,但是关于跳转方面这个问题是否需要把每个指令必须把影响的标志位给记住(就是记住哪些标志位被那些指令更改?如何更改?)这样岂不是非常的多?还有就是这样一个问题
程序开头的时候:
push ds
sub ax, ax
push ax
.
.
.
ret //为什么这样就可以返回到Dos状态了
...全文
54 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaohangcom 2003-03-20
  • 打赏
  • 举报
回复
`
woody009 2003-03-09
  • 打赏
  • 举报
回复
是中文版
Linux2001 2003-03-01
  • 打赏
  • 举报
回复
多谢woody009(微宏无绪),您的建议我感谢万分,请问那本书是中文版吗
Linux2001 2003-02-28
  • 打赏
  • 举报
回复
多谢大家的解答,我想我大概懂了,
to: yue621(工作狂)我看过Windows 下的汇编,比Dos下的好像要简单的多,内存寻址时平坦模式,大多数功能直接调用Windows API就搞定了,没有太大的成就感,我觉得Dos下的汇编比较有成就感,而且病毒几本上都是Dos下的汇编写的,但是好像对Win2000的NTFS格式无效
wobuzai 2003-02-28
  • 打赏
  • 举报
回复
tekguy():
这个问题的关键不是在于在DOS下程序如何退出到DOS,而是在于使用PUSH 0,RET退出到DOS的巧妙。这种方法常用于病毒程序或EXPLOIT程序等。
yue621 2003-02-28
  • 打赏
  • 举报
回复
大家都不要再从Dos开始学了,学习win32 assembly吧,至于一些基本的命令,找本手册看看
就可以了,不要再在Dos下搞了。
woody009 2003-02-28
  • 打赏
  • 举报
回复
这个我想LINUX2001你就错了 学汇编是应该从实模式下开始 但是你说的病毒基本是DOS下写的就错了 这个 我想是以个人的习惯 当然你可以在DOS下写完后(编成COM小文件)然后自己手工写PE文件头就象CIH一样 如果你想更有成就感的话 我建议你在LINUX下写汇编 并结合一些硬件方面的书籍看
电子工业出版社的那本<INTEL全系列:编程 接口和结构>大概是这个名字(国外的大学译本)
就是一本很不错的汇编和组成原理 接口技术的整和教材 而且如果你结合了操作系统看的话 你很快就会发现你对电脑地层的东西了解的深入
tekguy 2003-02-28
  • 打赏
  • 举报
回复
一般教科书上很少讲,讲也讲不清楚。建议找一本DOS原理的书,很早以前有一本张载鸿的书写得挺清楚(书名忘了)。

TO wobuzai(我不在):
您的两种方法是有疑问的。因为,程序返回时不能保证CS中是PSP的段址,所以用近返回可能要出错。

见我前帖。
tekguy 2003-02-27
  • 打赏
  • 举报
回复
实际上,这与程序段前缀(PSP)有关。PSP的0偏移处有一条返回DOS的调用(INT 20H),程序加载到内存中时,DS中是PSP的段地址,所以,那三条指令的作用是将地址PSP:0压入堆栈,程序最后再用RET转向PSP:0执行INT 20H。还有,程序须定义为FAR过程,否则RET不能被正确地汇编。
wobuzai 2003-02-27
  • 打赏
  • 举报
回复
push 0
ret
是让程序去执行CS:[0],而CS:[0]是PSP的开始,就执行了INT 20指令。

也可以这样:
sub ax,ax
call ax
Linux2001 2003-02-27
  • 打赏
  • 举报
回复
里面没有讲解到为什么push ds
sub ax, ax
push ax
...
ret
这样就可以返回DOS了啊
abutter 2003-02-27
  • 打赏
  • 举报
回复
当然是IBM PC汇编了啊。
Linux2001 2003-02-27
  • 打赏
  • 举报
回复
to: aaa2520(aaa2520),请问是清华大学哪本汇编教程?我有两本,一本是80x86汇编语言程序设计,一本是IBM PC汇编什么。。。的,我没有看到哪里有讲啊!
紫郢剑侠 2003-02-26
  • 打赏
  • 举报
回复
2
这实际是利用RET指令的功能.

另外一种返回的方法是:

mov ah, 4Ch
INT 21h
aaa2520 2003-02-26
  • 打赏
  • 举报
回复
呵呵
1) 你说的 太对了 都应该记住了,要么知道去那里查找
2)你看看 清华大学 那本 汇编语言讲的很清楚了,

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧