Существует неправильное понимание того, как это выполнить. Простым способом:
if (test) {
//block1
}
if (test2) {
//block2
}
if(test3) {
//block3
}
(Обратите внимание, где эти block1, block2 и block3 появятся в моем следующем примере)
Каждый, если нужно проверить (тест в скобках) и затем либо go и выполните возможность, что это правда, и возможность, что это не правда. Это будет примерно так:
;first if, start by comparing:
mov rcx, 2
cmp rcx, 2
jnz false1 ;jumps for the false possibility of the first if
;here you type what will happen when the first if is executed (block1)
false1: ;here the first if is finnished, this label is the jump for not executing that first if
;then now you execute the second if:
;first compare:
mov rcx, 0
cmp rcx, 0
jnz false2 ;jumps for not executing the if block
;here is block2
false2:
;now here the last if, just like the last two:
mov rcx, 1
cmp rcx, 0
jnz false3
;here block3
false3:
;here is the rest of your code after those ifs
Я изменил logi c для перехода в ложную возможность вместо истины (как вы), потому что в случаях, когда нет блока «else», он делает код меньше, чем вы.