Mã thoát
Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 33 trên 45.
Khi chương trình kết thúc, nó gửi một số nhỏ về hệ điều hành. Số này được gọi là mã thoát hoặc trạng thái thoát.
Vì sao mã thoát quan trọng:
Script dùng mã thoát để kiểm tra chương trình có chạy thành công hay không. Ví dụ, một script sao lưu có thể chỉ tiếp tục nếu lệnh trước đó chạy thành công.
Mã thoát cũng giúp gỡ lỗi. Bạn có thể dùng các mã lỗi khác nhau cho những vấn đề khác nhau.
Bạn cũng có thể nối các chương trình với nhau để một chương trình chỉ chạy nếu chương trình trước đó chạy thành công. Shell kiểm tra mã thoát trước khi chạy lệnh tiếp theo.
Quy tắc về mã thoát:
| Mã thoát | Ý nghĩa |
|---|---|
| 0 | Thành công: mọi thứ đều hoạt động |
| 1-255 | Đã xảy ra lỗi |
Chọn mã lỗi:
Bạn có thể dùng bất kỳ số nào từ 1 đến 255. Ý nghĩa của từng số do bạn quyết định với tư cách là lập trình viên.
| Mã thoát | Ý nghĩa có thể là |
|---|---|
| 1 | Lỗi chung |
| 2 | Thiếu tệp đầu vào |
| 3 | Bị từ chối quyền truy cập |
| 4 | Lỗi mạng |
Điều gì xảy ra nếu bạn không đặt mã thoát?
Bạn phải luôn đặt rdi trước lời gọi hệ thống thoát. Nếu quên, rdi sẽ chứa giá trị rác còn lại trong thanh ghi, và chương trình sẽ thoát với mã ngẫu nhiên.
Thử thách
Viết một chương trình assembly hoàn chỉnh và thoát với mã thoát 2 (để báo hiệu "file not found").
Đoạn code in ra đã được cung cấp. Bạn chỉ cần thêm lời gọi hệ thống để thoát.
Tự làm thử
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; In ra thông báo (do bộ kiểm thử cung cấp)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; Viết code của bạn ở đây
%include "solution.asm"Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
Tự luyện tập: Playground Assembly