code segment
assume cs:code,ds:code
org 100h
start:jmp littlefish
file1 db 'file1.txt',0
file2 db 'file2.txt',0
filehandle1 dw ?
filehandle2 dw ?
data1 db ?
data2 db ?
littlefish:
mov ax,3d02h
mov dx,offset file1
int 21h
mov filehandle1,ax
mov ah,3ch
mov dx,offset file2
mov cx,20h
int 21h
mov filehandle2,axredfile:
mov ah,3fh
mov bx,filehandle1
mov cx,1
mov dx,offset data1
int 21h
cmp ax,1
jnz exit
mov ah,data1
and ah,1                    ;AND∶逻辑运算符(在语句的操作数部分,汇编时完成)或逻辑操作指令助记符(在语句的操作码部分,其运算在执行指令时完成)——按位与。只有相“与”的两位全为1 ,结果才为1。
cmp ah,1jz redfile1                 ;JZ∶ 简单条件转移指令助记符——相等转移(同JE)。
mov ah,data1
inc ah
mov data2,ahjmp redfile2redfile1:
mov ah,data1
dec ah
mov data2,ahredfile2:
mov ah,40h
mov bx,filehandle2
mov cx,1
mov dx,offset data2
int 21h
jmp redfile
exit:
mov ah,4ch
int 21h
code ends
end start

解决方案 »

  1.   

    这代码本身16bit的,而且还有这么多的int21h读写磁盘,在win2000和xp下没办法用。
      

  2.   

    翻译成Pascal(TP)还可以,翻译成DELPHI代码难度可大喽
      

  3.   

    主要翻译,这段代码,是一个算法,整个过程是从一个文件中读出每一个字节经过算法保存在另一个文件.
    mov ah,data1
    and ah,1                    ;AND∶逻辑运算符(在语句的操作数部分,汇编时完成)或逻辑操作指令助记符(在语句的操作码部分,其运算在执行指令时完成)——按位与。只有相“与”的两位全为1 ,结果才为1。
    cmp ah,1jz redfile1                 ;JZ∶ 简单条件转移指令助记符——相等转移(同JE)。
    mov ah,data1
    inc ah
    mov data2,ahjmp redfile2redfile1:
    mov ah,data1
    dec ah
    mov data2,ahredfile2:
    mov ah,40h
    mov bx,filehandle2
    mov cx,1
    mov dx,offset data2
      

  4.   

    以上代码可以这样翻译吧 
    呵呵但愿我没看错
      hFile1:=FileOpen('file1.txt',  fmOpenReadWrite);
      hFile2:=FileCreate('file2.txt');
      while(FileRead(hFile1,cbuffer1,1)=1)do
      begin
         ibuffer:=integer(cbuffer1);
         if((ibuffer and 1)<>1) then
         begin
             cbuffer2:= cbuffer1;
             cbuffer2:= cbuffer2+1;
         end else
         begin
             cbuffer2:= cbuffer1;
             cbuffer2:=cbuffer2-1;
         end;
         FileWrite(hFile2,cbuffer2,1);
      end;
      FileClose(hFile1);
      FileClose(hFile2);其中
      hFile1,hFile2:integer;
      cbuffer1,cbuffer2:byte;
      ibuffer:integer;