所以我在8086程序集中处理DES加密程序,当我必须进行置换密钥k +时,我得到了它的部分,拆分它然后每次迭代都进行一些移位。 问题是k +的每一半都是28位,所以我不能把它放在一个var中并且做" shl"。我该如何解决?
先谢谢。
答案 0 :(得分:2)
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
答案 1 :(得分:0)
我正在做的是到达密钥的最后一个字节,而我正在使用RCL。然后,我在之前的字节上进行操作,直到到达第一个字节为止。我正在做的是像往常一样使用RCL,但是我是JC,如果进位标志等于1,请在键的最后一个字节上使用OR操作并打开右位。