所以我在8086程序集中处理DES加密程序,当我必须进行置换密钥k +时,我得到了它的部分,将它拆分,然后每次迭代都进行一些移位。问题是k +的每一半都是28位,所以我不能把它放入var并做“shl”。我该如何解决?
提前致谢。
RCL r/m, 1
或RCR 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
我正在做的是到达密钥的最后一个字节,我正在使用RCL。然后我在之前的字节上做,直到我到达第一个字节。我正在做的是正常使用RCL但是我是JC并且如果进位标志等于1,则在键的最后一个字节上使用OR运算并打开右侧位。