我参加了名为' Code guru - Extreme' 在本次比赛中,组装8086中有保险箱和钥匙。 对于保险箱和钥匙,有联合数据段,您需要制作一个破坏保险箱的钥匙。 安全的例子:
L:
mov ax, [1234]
cmp ax, 5678
jne L
打破安全的键的示例
L:
mov ax, 5678
mov [1234], ax
jne L
现在我有一个我无法打破它的保险箱
and al, 0FEh
push ax
clc
mul ax
xor ax, dx
or al, 1
loc_10A:
sub [0A2h], ax
pop ax
push ax
jnz loc_10A
ax在0-64K之间随机
答案 0 :(得分:2)
首先,AX未知,计算无意义,但push ax;
。之后,从循环的第二遍开始,AX得到了poped,但仍然是未知和恒定的,所以你需要记住2"内存var"值,它将是AX值。这样的事情:
mov cx, 0ah;
delay:
nop;
loop delay;
l2:
mov ax, [0A2h];
mov bx, [0A2h];
sub ax, bx
jz l2;
mov [0A2h], ax;
jmp l2
答案 1 :(得分:0)
l:
mov bx, 0a2h
mov dx, 0xffff
mov word [bx], dx
nop
nop
mov ax, word [bx]
sub dx, ax
mov word [bx], dx
mov dx, 0xffff
jmp l