組合語言 | 高階語言 |
---|---|
mov rax, 4 | rax = 4 (傳值) |
add rax, 2 | rax +=2 |
sub rax, 2 | rax -= 2 |
mul rbx 2 | rax *= rbx |
div rbx | rax /= rbx 儲存商數 |
lea rbx, [rax+4] | 把 rax+4 的位址存入 rbx (傳址) |
cmp rax, 10 | 比較兩者大小 |
jl less | 若前者<後者,則跳到 less |
jge greater_equal | 若前者≥後者,則跳到 greater_equal |
學習資源:https://www.youtube.com/watch?v=FWzWebrkGmk
題目來源:https://class.nckuctf.org/challenges#Ez_asm0-45
asm0.txt:
<+0>: endbr64
<+4>: push rbp
<+5>: mov rbp,rsp
<+8>: mov DWORD PTR [rbp-0x4],edi
<+11>: mov QWORD PTR [rbp-0x10],rsi
<+15>: mov eax,0x30
<+20>: pop rbp
<+21>: ret
<+15>: mov eax,0x30
,開頭為 0x 表示是 16 進位 ,因此 30(16進制) = 48(10進制)
依此可得出解答