一段破还原的汇编代码要应用在delphi中很多语句不支持,请教望路过的朋友帮忙看看。 ( 积分: 30 )

  • 主题发起人 landy2005t
  • 开始时间
L

landy2005t

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥这段代码我要写在delphi中,要怎么办,直接用asm end加入是不行的很多语句不支持。
且不支持汇编的标号的跳转语句。怎么办?帮帮我想想办法。
是不是这种汇编语句只能写在一个过程中或是函数中调用,不能写在一个按钮事件中?请指教?


.286
CODE SEGMENT
ASSUME CS:CODE,DS:code,ES:code
START:
;----------------------------------------------------------
;以下代码用INT13H读主引导区
mov ax,0201h
mov dx,0080h
mov cx,0001h
mov bx,7c00h
int 13h
;---------------------------------------------------------
;以下代码用I/O端口来写主引导区
mov dx,1f6h ; 要读入的磁盘号及磁头号
mov al,0a0h ; 磁盘0,磁头0
out dx,al

mov dx,1f2h ; 要写的扇区数量
mov al,1 ; 写一个扇区
out dx,al

mov dx,1f3h ;要写的扇区号
mov al,1 ;写到1扇区
out dx,al

mov dx,1f4h ; 要写的柱面的低8位
mov al,0 ; 低8位为0
out dx,al

mov dx,1f5h ; 要写的柱面的高2位
mov al,0 ; 高2位为0
out dx,al

mov dx,1f7h ;命令端口
mov al,30h ;尝试着写扇区.
out dx,al
oogle:
in al,dx
test al,8 ;磁盘扇区缓冲是否准备好
jz oogle

mov cx,512/2 ;设置循环次数(512/2)
mov si,7c00h
mov dx,1f0h ;数据端口,用来存放要发送的数据.
rep outsw ;发送数据.
; ------------------------------------------------------------------------------
;退出程序
mov ah,4ch
int 21
CODE ENDS
END START
 
大哥这段代码我要写在delphi中,要怎么办,直接用asm end加入是不行的很多语句不支持。
且不支持汇编的标号的跳转语句。怎么办?帮帮我想想办法。
是不是这种汇编语句只能写在一个过程中或是函数中调用,不能写在一个按钮事件中?请指教?


.286
CODE SEGMENT
ASSUME CS:CODE,DS:code,ES:code
START:
;----------------------------------------------------------
;以下代码用INT13H读主引导区
mov ax,0201h
mov dx,0080h
mov cx,0001h
mov bx,7c00h
int 13h
;---------------------------------------------------------
;以下代码用I/O端口来写主引导区
mov dx,1f6h ; 要读入的磁盘号及磁头号
mov al,0a0h ; 磁盘0,磁头0
out dx,al

mov dx,1f2h ; 要写的扇区数量
mov al,1 ; 写一个扇区
out dx,al

mov dx,1f3h ;要写的扇区号
mov al,1 ;写到1扇区
out dx,al

mov dx,1f4h ; 要写的柱面的低8位
mov al,0 ; 低8位为0
out dx,al

mov dx,1f5h ; 要写的柱面的高2位
mov al,0 ; 高2位为0
out dx,al

mov dx,1f7h ;命令端口
mov al,30h ;尝试着写扇区.
out dx,al
oogle:
in al,dx
test al,8 ;磁盘扇区缓冲是否准备好
jz oogle

mov cx,512/2 ;设置循环次数(512/2)
mov si,7c00h
mov dx,1f0h ;数据端口,用来存放要发送的数据.
rep outsw ;发送数据.
; ------------------------------------------------------------------------------
;退出程序
mov ah,4ch
int 21
CODE ENDS
END START
 
有个复杂的办法:
1、在VC++ or C++Builder 中引用;
2、做成ACTIVEX控件,Delphi 引用!
 
DELPHI引用这段代码不是行了。还有什么问题我们可以共同讨论。
 
第一个大侠方法我想应该可以可是是很复杂.vc++我也不太懂.
第二位大侠说的delphi引用,怎么引用啊,delphi是可以嵌入汇编,但是不支持一些段语句,还有跳转啊,大侠请明示.
 
顶部