再加100分问关于intel hex的问题.http://community.csdn.net/Expert/topic/3307/3307685.xml?temp=.3423426
解决方案 »
- 求delphi 2007 SOAP + IIS 客户端如何连接?
- 空字符串赋值给char型
- 如何计算2个日期之间相隔几天?
- ★★★软件测试,欢迎帮忙,绝对给分!★★★
- 怎么画一个椭圆呀
- 如何将我程序安装时自动加到注册表中去,起机后能自动运行,就象norton一样!
- 怎样让win2000用程序关机,并且最后不出现“你可以安全的关闭计算机了”谢谢回复!
- 新手请教:数据集控件的问题!!
- 关于记录统计问题
- 请问delphi6 补丁修正版出没出来?
- 请各位大侠帮帮忙,刚遇上一个奇怪的问题,不知道为何如此请指教!怎样解决Clientdataset的record not found or changed by another user
- 求助:如何编程实现交换鼠标左右键的同时也改变鼠标指针的指向?
CODE SEGMENT
ASSUME CS:CODE
org 2000h
START: MOV AL,80H
CODE ENDS
END START
编译后列表为
2000 B080 MOV AL,80
2002 206375 AND [BP+DI+75],AH
是不是说数据就是 B080 206375 呢,请高手指点啊.
现在帖出部分代码,供参考也请各为好友指出不足之处.
再次深深感谢回帖的朋友.function MakeCC(Str: String):String;
var
I,J : integer;
temp : String;
begin
J := 0;
for i := 1 to (StrLen(PChar(str)) div 2) do begin
j:= j+HexToInt(copy(str,((i-1)*2+2),2));
end;
j:= 1 + not(j);
temp:= IntToHex( j,2);
result := Copy (IntToHex( j,2),StrLen(PChar(IntToHex( j,2)))-1,2);
end;function MakeIntelHex(HexData,StartAddr,EndAddr:String;HexfilePath : String) : boolean;
{
功能:生成intel hex文件
参数:hexData: 16进制数据的字符串 StartAddr ; EndAddr : 起始,结束地址
LineData : 每一行的数据
}
var
lastData : Integer;
DataLine : Integer;
LineData : array[1..2050] of String;
TempAddr : String;
tempData : String;
i,j:integer;
buffer : array[0..2050] of byte;
HexFile : TextFile;
NumrecsWriten:integer;
begin
result := false;
DataLine := StrLen(PChar(HexData)) div (32*2);
LastData := Strlen(PChar(HexData)) mod (32*2);
i:=0;
if DataLine <> 0 then begin
for i:= 1 to DataLine do begin
tempAddr := IntToHex(HexToInt(StartAddr)+32*(i-1),4);
tempData := Copy(HexData,(i-1)*64+1,64);
LineData[i] := ':20'+TempAddr+TempData;
LineData[i] := LineData[i] + MakeCC(LineData[i]);
end;
if LastData <> 0 then begin
DEC(i);
tempAddr := IntToHex(HexToInt(StartAddr)+32*(i-1)+ (LastData div 2),4);
INC(i);
tempData := Copy(HexData,(i-1)*64+1,64);
LineData[i] := ':'+IntToHex((StrLen(PChar(tempData)) div 2),2)+TempAddr+TempData;
LineData[i] := LineData[i] + MakeCC(LineData[i]);
end;
end else begin
i := 1;
tempAddr := IntToHex(HexToInt(StartAddr),4);
tempData := Copy(HexData,1,64);
LineData[i] := ':'+IntToHex((StrLen(PChar(tempData)) div 2),2)+TempAddr+TempData;
LineData[i] := LineData[i] + MakeCC(LineData[i]);
end;
INC(i);
LineData[i] := ':00000001FF';
Assignfile(HexFile,HexfilePath);
Rewrite(HexFile);
try
for j := 1 to i do begin
writeln(HexFile,LineData[j]);
end
finally
CloseFile(HexFile);
end;
end;