程序集8086:DES加密二进制移位

时间:2017-05-10 04:37:59

标签: assembly encryption bit-shift des emu8086

所以我在8086程序集中处理DES加密程序,当我必须进行置换密钥k +时,我得到了它的部分,拆分它然后每次迭代都进行一些移位。 问题是k +的每一半都是28位,所以我不能把它放在一个var中并且做" shl"。我该如何解决?

先谢谢。

2 个答案:

答案 0 :(得分:2)

RCL r/m, 1RCR r/m, 1是移位多个组合寄存器/变量的指令:

.MODEL small
.STACK

.DATA
    k dd 12345678h      ; 00010010 00110100 01010110 01111000

.CODE
main PROC
    mov ax, @data
    mov ds, ax

    mov ax, k + 0
    mov dx, k + 2

    shl ax, 1           ; Shift out leftmost bit into Carry, shift in 0
    rcl dx, 1           ; Shift in Carry

    mov k + 0, ax       ; 00100100 01101000 10101100 11110000
    mov k + 2, dx


    mov ax, 4C00h
    int 21h
main ENDP

END main

答案 1 :(得分:0)

我正在做的是到达密钥的最后一个字节,而我正在使用RCL。然后,我在之前的字节上进行操作,直到到达第一个字节为止。我正在做的是像往常一样使用RCL,但是我是JC,如果进位标志等于1,请在键的最后一个字节上使用OR操作并打开右位。

enter image description here