Menu
CoddyTech

Ký tự xuống dòng rất quan trọng

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 41 trên 45.

Bạn đã thêm 0x0a (ký tự xuống dòng) vào cuối các chuỗi. Nhưng nếu bạn quên thì sao?

Không xuống dòng:

Văn bản được in ra, nhưng con trỏ vẫn ở cùng dòng. Mọi nội dung đầu ra sau đó sẽ xuất hiện ngay bên cạnh.

Ví dụ không có ký tự xuống dòng:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

Đầu ra:

HelloWorld

Không có khoảng trắng. Không có dòng mới. Mọi thứ dính liền với nhau.

Có ký tự xuống dòng:

section .data
    first db 'Hello', 0x0a
    firstLen equ $ - first
    second db 'World', 0x0a
    secondLen equ $ - second

Đầu ra:

Hello
World

Mỗi chuỗi được in ra trên một dòng riêng.

Chức năng của ký tự xuống dòng:

Ký tựASCIITác dụng
0x0a10Di chuyển con trỏ đến đầu dòng tiếp theo

Các lỗi xuống dòng thường gặp:

LỗiKết quả
Không có ký tự xuống dòngVăn bản dính liền trên một dòng
Chỉ có ký tự xuống dòng ở cuối chuỗi cuối cùngTất cả chuỗi dính liền trên một dòng, sau đó con trỏ chuyển sang dòng tiếp theo
Có ký tự xuống dòng ở giữa chuỗiCác dòng bị ngắt ở những chỗ không mong đợi

Quy tắc an toàn:

Luôn thêm 0x0a vào cuối mỗi chuỗi mà bạn muốn hiển thị trên một dòng riêng.

challenge icon

Thử thách

Bạn được cho ba chuỗi không có ký tự xuống dòng. Nhiệm vụ của bạn là in chúng ra sao cho mỗi chuỗi nằm trên một dòng riêng.

Các chuỗi là:

ChuỗiGiá trị
word1'Apple'
word2'Banana'
word3'Cherry'

Yêu cầu:

  • Định nghĩa mỗi chuỗi có ký tự xuống dòng (0x0a) ở cuối
  • Tự động tính độ dài của mỗi chuỗi
  • In cả ba chuỗi bằng syscall write
  • Thoát bình thường với mã 0

Tự làm thử

section .data
    ; TODO: Định nghĩa word1 với văn bản thứ 1 trong hướng dẫn và ký tự xuống dòng
    ; TODO: Định nghĩa word2 với văn bản thứ 2 trong hướng dẫn và ký tự xuống dòng
    ; TODO: Định nghĩa word3 với văn bản thứ 3 trong hướng dẫn và ký tự xuống dòng
    ; TODO: Tính độ dài của từng chuỗi

section .text
    global _start

_start:
    ; TODO: In ra word1
    ; TODO: In ra word2
    ; TODO: In ra word3

    ; TODO: Thoát chương trình đúng cách
quiz iconTự kiểm tra

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