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

问题描述 投票:0回答:2

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

提前致谢。

assembly encryption bit-shift des emu8086
2个回答
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

0
投票

我正在做的是到达密钥的最后一个字节,我正在使用RCL。然后我在之前的字节上做,直到我到达第一个字节。我正在做的是正常使用RCL但是我是JC并且如果进位标志等于1,则在键的最后一个字节上使用OR运算并打开右侧位。

© www.soinside.com 2019 - 2024. All rights reserved.