Skip to content

zeno2301/assembly-homework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание по ассемблеру

Задача 1

Hello World с проверкой системного вызова

Задача 2

Hello World в файл

📁 Исходные коды

Задача 1: hello_checked.asm

section .data
    message db "Hello world!", 10
    message_len equ $ - message
    
    error_msg db "Error writing to stdout!", 10
    error_len equ $ - error_msg

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, message
    mov rdx, message_len
    syscall

    cmp rax, 0
    jl error_handler
    je exit
    jmp exit

error_handler:
    mov rax, 1
    mov rdi, 2
    mov rsi, error_msg
    mov rdx, error_len
    syscall
    mov rax, 60
    mov rdi, 1
    syscall

exit:
    mov rax, 60
    xor rdi, rdi
    syscall

Задача 2: hello_file.asm

section .data
    filename db "output.txt", 0
    message db "Hello, world!", 10
    message_len equ $ - message
    
    error_open db "Error opening file!", 10
    error_open_len equ $ - error_open
    
    error_write db "Error writing to file!", 10
    error_write_len equ $ - error_write

section .text
    global _start

_start:
    mov rax, 2
    mov rdi, filename
    mov rsi, 0x241
    mov rdx, 0644o
    syscall

    cmp rax, 0
    jl open_error
    mov r8, rax

    mov rax, 1
    mov rdi, r8
    mov rsi, message
    mov rdx, message_len
    syscall

    cmp rax, 0
    jl write_error

    mov rax, 3
    mov rdi, r8
    syscall
    jmp exit

open_error:
    mov rax, 1
    mov rdi, 2
    mov rsi, error_open
    mov rdx, error_open_len
    syscall
    mov rdi, 1
    jmp exit_with_code

write_error:
    mov rax, 1
    mov rdi, 2
    mov rsi, error_write
    mov rdx, error_write_len
    syscall
    mov rdi, 2
    mov rax, 3
    mov rdi, r8
    syscall

exit_with_code:
    mov rax, 60
    syscall

exit:
    mov rax, 60
    xor rdi, rdi
    syscall

Как проверить:

# Задача 1
./hello_checked

# Задача 2
./hello_file
cat output/output.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published