You need to be a little bit more precise on conditions of the CASE.
For example if its monotonic numbers (0,1,2,3,..,n)
then it can be done by one clock handling
(32 bit address mode)
.data
jmptbl dd case0,case1,...,casen
.code
;assuming case number in eax
jmp jmptbl[eax*4]
case0: ;code for case0
....
jmp endcase
case1: ;code for case1
...
jmp endcase
....
casen: ;....
....
endcase:
if its monitonic but there are cases "else" that are not in the monotonic range then filtering them must precede the above code,
for example the monotinic ragne is from m to n(included) then before the code above you must filter out the cases "else", one of short unbranched ways might be
;assuming case number in eax
sub eax,m
cmp eax,n-m+1
jnc caseelse
jmp jmptbl+m*4[eax*4]
There are other ways depending on type of CASES.
There are no isomorphic relation between ANY HLL programming CASE condition and assembly translation of it. Though most "universal" way covering most of HLL condition design (yet not the fastest) is
cmp eax,CASEone
je @CASEoneHandler
cmp eax,CASEother
je @CASEotherHangler
cmp eax,17
jc @CASElessThen17Handler
@CaseOtherOnes: