Menu
CoddyTech

In hai chuỗi

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

Bạn đã biết cách in ra một chuỗi. Nhưng nếu bạn muốn in ra hai chuỗi riêng biệt thì sao? Ví dụ: "Hello " rồi đến "World!"?

Bạn chỉ cần gọi syscall write hai lần, mỗi lần cho một chuỗi.

Cách hoạt động:

; In ra lần thứ nhất
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; In ra lần thứ hai
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

Ví dụ:

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

    second db 'World!', 0x0a
    secondLen equ $-second

section .text
    global _start

_start:
    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

    mov rax, 60
    mov rdi, 0
    syscall

Đầu ra:

Hello

World!

Mỗi chuỗi (string) kết thúc bằng 0x0a (ký tự xuống dòng), nên hai chuỗi được in trên các dòng riêng biệt.

Tại sao in ra hai chuỗi thay vì một chuỗi?

Lý doVí dụ
Tái sử dụngIn cùng một lời chào với các tên khác nhau
Linh hoạtIn các thông điệp khác nhau tùy theo điều kiện
Sắp xếpLưu riêng các thông điệp khác nhau trong bộ nhớ

Bạn có thể in ra bao nhiêu chuỗi tùy thích:

Chỉ cần lặp lại lệnh gọi hệ thống write cho mỗi chuỗi.

challenge icon

Thử thách

Bạn được cho hai chuỗi: partOne có giá trị 'Good' và partTwo có giá trị 'bye'. Cả hai đều đã có ký tự xuống dòng ở cuối.

Viết code để in ra partOne, sau đó là partTwo, sao cho đầu ra hiển thị:

Good

bye

Phần dữ liệu và lời gọi hệ thống thoát đã có sẵn. Bạn chỉ cần viết hai lời gọi hệ thống ghi.

Tự làm thử

section .data
    partOne db 'Good', 0x0a
    partOneLen equ $-partOne
    partTwo db 'bye', 0x0a
    partTwoLen equ $-partTwo

section .text
    global _start

_start:
    ; TODO: In partOne ra bằng lệnh gọi hệ thống write
    ; TODO: In partTwo ra bằng lệnh gọi hệ thống write

    mov rax, 60
    mov rdi, 0
    syscall
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