⚔️Ex1 (Linux)

Một vài lưu ý khi bạn gọi hàm và jump:
Cấu trúc của 1 lệnh jump rõ ràng để nó tránh bị lỗi như mình:
Ví dụ sau đây tôi sẽ so sánh biến sum với "-" <--> 0x2d (tức kiểm tra âm và dương)
_start:
cmp byte [sum], 0x2d
jne Exception
;process positive number
shl qword [sum], 0x8 ; shift left 8 bits to delete byte "-"
jmp Exit
Exception: ;print out message to exit
mov rax, 0x4
mov rbx, 0x1
mov rcx, msg
mov rdx, len
int 0x80
jmp Exit
Printout_num:
mov rax, 0x3
mov rbx, 0x1
mov rcx, sum
mov rdx, 0x8 ; 8 bytes num
int 0x80
jmp Exit
Exit:
mov eax, 0x1
int 0x80Nó tương đương với code sau:
if(sum < 0){
abs(sum);
}else{
printf("Number is positive");
}
return 0;Việc viết code rõ ràng như vậy, khiến việc sửa lỗi dễ dàng, logic chặt chẽ hơn là code phía dưới đây của mình.
Last updated