首页
社区
课程
招聘
[求助]请汇编高手帮我看看这段汇编代码的意思?
发表于: 2007-1-29 21:42 3622

[求助]请汇编高手帮我看看这段汇编代码的意思?

2007-1-29 21:42
3622
我的问题有三个:
   1>carrier标号后面的一句指令有什么用?如果想原文的注释说的,是jmp start:的话;为什么程序不直接从扫榻如同start标号开始呢?
   2>DTA(Disk Transfer Address)结构的功能是什么?
   3>3号中断有什么具体功能啊?
;------------------------------------------------------------
.model  tiny
  .code

  org  0100h

carrier:
  db  0E9h,0,0    ; jmp start

start:
  mov  bp, sp      ; Antidebugging get ?offset!
  int  0003h      ; Int for breakpoints
next:
  mov  bp, ss:[bp-6]
  sub  bp, offset next
;---------------------------------------------------------------------
;  解释:
;  让我们看,当我们感染一个文件。所有的offset会偏移目标程序的大小,所
;  以我们选择一个寄存器(通常BP或者SI),而且我们利用这个简单的方法给它赋
;  文件的大小,每次我们使用一个变量,我们必须把这个寄存器作为偏
;  移(这里是BP)
;---------------------------------------------------------------------

  mov  dl, 0000h    ; Default drive
  mov  ah, 0047h    ; Get directory
  lea  si, [bp+offset origdir+1]
  int  0021h

  lea  dx, [bp+offset newDTA]
  mov  ah, 001Ah    ; Set DTA
  int  0021h
;--------------------------------------------------------------------
;  解释:
;  上面一段把当前目录保存在一个变量里面。
;  你在这篇教程里面可以查找一下有关于DTA结构的介绍。DTA(Disk Transfer Address)在仍然属于命令行的PSP(Program Segment Prefix)的80h byte处。
;  你想直到为什么...在我们使用命令行的时候使用DTA会发生什么呢?
;  那就是我们保存DTA的原因(除了我们自己使用之外,毫无疑问了)
;---------------------------------------------------------------------

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也想知道!
2007-1-29 22:08
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
这里应该说的是INT3吧。是陷阱异常中断,即是通常说的断点(由于通过代码产生的中断,所以又叫软件中断)。错误代码80000003

carrier:
  db  0E9h,0,0    ; jmp start

这个是直接写入机械码,相当于CALL START

后面的东西已经很少用了。DOS的东西了。。写驱动时也许有需要用到。
2007-1-30 09:21
0
游客
登录 | 注册 方可回帖
返回
//