汇编程序与DELPHI高手请进(50分)

S

storney

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是一个汇编加密程序,
请高手帮我转换成一个DELPHI函数,输入一个字符串,输出一个字符串。
1429:0100 50 PUSH AX
1429:0101 53 PUSH BX
1429:0102 51 PUSH CX
1429:0103 52 PUSH DX
1429:0104 55 PUSH BP
1429:0105 56 PUSH SI
1429:0106 57 PUSH DI
1429:0107 1E PUSH DS
1429:0108 06 PUSH ES
1429:0109 9C PUSHF
1429:010A BF0000 MOV DI,0000
1429:010D 1E PUSH DS
1429:010E 0E PUSH CS
1429:010F 1F POP DS
1429:0110 BE8200 MOV SI,0082
1429:0113 1F POP DS
1429:0114 B90C00 MOV CX,000C
1429:0117 8A21 MOV AH,[BX+DI]
1429:0119 1E PUSH DS
1429:011A 0E PUSH CS
1429:011B 1F POP DS
1429:011C 8824 MOV [SI],AH
1429:011E 1F POP DS
1429:011F 47 INC DI
1429:0120 46 INC SI
1429:0121 E2F4 LOOP 0117
1429:0123 1E PUSH DS
1429:0124 0E PUSH CS
1429:0125 1F POP DS
1429:0126 BE8200 MOV SI,0082
1429:0129 8A04 MOV AL,[SI]
1429:012B 247F AND AL,7F
1429:012D B400 MOV AH,00
1429:012F 8BF8 MOV DI,AX
1429:0131 46 INC SI
1429:0132 B90B00 MOV CX,000B
1429:0135 8A24 MOV AH,[SI]
1429:0137 8A05 MOV AL,[DI]
1429:0139 32E0 XOR AH,AL
1429:013B 8824 MOV [SI],AH
1429:013D 47 INC DI
1429:013E 46 INC SI
1429:013F E2F4 LOOP 0135
1429:0141 1F POP DS
1429:0142 BF0000 MOV DI,0000
1429:0145 1E PUSH DS
1429:0146 0E PUSH CS
1429:0147 1F POP DS
1429:0148 BE8200 MOV SI,0082
1429:014B 1F POP DS
1429:014C B90C00 MOV CX,000C
1429:014F 1E PUSH DS
1429:0150 0E PUSH CS
1429:0151 1F POP DS
1429:0152 8A24 MOV AH,[SI]
1429:0154 1F POP DS
1429:0155 8821 MOV [BX+DI],AH
1429:0157 47 INC DI
1429:0158 46 INC SI
1429:0159 E2F4 LOOP 014F
1429:015B 9D POPF
1429:015C 07 POP ES
1429:015D 1F POP DS
1429:015E 5F POP DI
1429:015F 5E POP SI
1429:0160 5D POP BP
1429:0161 5A POP DX
1429:0162 59 POP CX
1429:0163 5B POP BX
1429:0164 58 POP AX
1429:0165 CB RETF
1429:0166 CF IRET
1429:0167 C3 RET
1429:0168 C3 RET
谢谢啊
 
你这段代码原来是怎么被调用的? FOX中的?
 
还有其他代码呢???? 源字符串指针在哪里赋值?  目的字符串指针在哪里赋?
全部发出来。
 
大致意思是加密字符串跟一个密匙进行异或得到一个加密后的密串。
 
你如果要在delphi里调用 的话,直接可以这样
asm
begin
push eax;
push ebx;
pop ebx;
pop eax;//在这里写汇编码。
end;
 
用的着这么多POP PUSH 么?
PUSHA POPA ;保留/取出16位通用寄存器集
PUSHAD POPAD ;保留/取出32位寄存器集
PUSHF POPHF ;保存/取出16位标志寄存器
PUSHFD POPFD ;保留/取出32为标志寄存器

你可以直接把汇编语言写进delphi 中
 
有谁知道32位汇编较好的工具啊?! 先谢谢!
 
大致是内存[83]开始得与[1]开始的逐个异或
这是个dos程序?晕晕
 
你是说,看不懂这段代码吗?
 
不要转换,可内嵌到DELPHI中,呵,我是小菜哦
 
借楼主宝地,打打广告,谢谢!
阳春三月,和Borland专家--刘艺相约上海!
大家好:
 “一年之计在于春”,春天是定目标、打基础关键时刻!
无论你的目标是加薪,成为项目经理,还是让自己的技术水平更上一层楼,
都需要不断地学习,而与高手的交流,仿佛是站在巨人的肩上:站得高,看得远,助力你迅速成为Delphi高手!
应中国项目经理网邀请,Borland专家--刘艺老师将于这个三月来到上海
给大家做<<UML与DELPHI模型驱动开发>>的培训,机会难得!请热爱Delphi的朋友请抓紧时间报名!
届时将会有众多Delphi高手光临现场!热烈的现场讨论以及众多Delphi高手的面对面交流讲师本次培训的特色之一!
在温暖的三月,刘艺与众多Delphi高手与大家相约上海!

中国项目经理网相关培训链接:
[公告]阳春三月,和刘艺老师面对面讨论UML和Delphi面向对象开发!
http://www.china-pm.net/dispbbs.asp?boardID=22&amp;ID=5&amp;page=1
[公告]uml与delphi模型驱动开发课程介绍
http://www.china-pm.net/dispbbs.asp?boardID=22&amp;ID=21&amp;page=1
报名表
http://www.china-pm.net/dispbbs.asp?boardID=22&amp;ID=35&amp;page=1
中国项目经理网
2004-02-14
 
顶部