0

我对汇编语言编程非常陌生。我有以下代码,它将一组字节写入文件指针:

mov     cx,OFFSET ENDMYCODE - OFFSET MYCODE     ; write the MYCODE; cx=number of bytes to write
lea     dx,[di+MYCODE]
mov     ah,40H                                  ;DOS write function
int     21H

据我了解,上面的代码将 MYCODE 中的所有字节值写入文件。我想知道是否可以在写入文件时修改这些字节,即在写入文件指针之前对字节进行简单的异或运算?它不应该异或原始的 MYCODE 字节值,而应该只是我写入文件的那个。可能吗?

下面是我想出的,但它似乎陷入了无限循环,我无法调试它:

ENCRYPT:
        mov si, OFFSET MYCODE + 1
        mov di, OFFSET MYCODE + 1
        mov cx, OFFSET MYCODE - OFFSET MYCODE - 2
ELP:    lodsb
        xor al, 09Ah                                                                    ; XOR the byte values and then write to the file
        mov BYTE PTR [di+TEMPBUFFER],al
        push cx
        mov cx, 1
        lea     dx,[di+TEMPBUFFER]
        mov     ah,40H                                  ;DOS write function
        int     21H
        pop cx
        loop ELP

        mov cx, 1
        lea dx, [di+ENDMYCODE]
        mov ah,40h
        int 21h

谢谢

4

0 回答 0