Основы NASM. Отладка кода
Автор: Яна Гущина • Октябрь 29, 2019 • Лабораторная работа • 927 Слов (4 Страниц) • 376 Просмотры
Лабораторная работа №2
Операторы условия, циклы, арифметические операции
Цель работы:
Изучить операторы ветвления, принципы построения циклов и арифметические операции.
Задание:
1. Написать программу, которая выводит на экран предопределенную в коде строку, содержащую разные типы символов (заглавные и прописные буквы, цифры, знаки).
2. Составить программу печати целого числа.
3. Согласно своему варианту добавить преобразование этой строки в другую и вывести на экран результат.
Вариант задания (5):
Смена регистра на нижний
Исходный код программы:
global _start
section .data
; предопределенная текстовая строка
in_str db 'Hello, WORLD!', 10
; длина предопределенной строки
in_str_len equ $-in_str
section .bss
; буфер для хранения обработанной строки
out_str resb 255
section .text
_start:
; Вывод исходной текстовой строки
mov eax, 4 ; write(
mov ebx, 1 ; stdout,
mov ecx, in_str ; in_str,
mov edx, in_str_len ; in_str_len)
int 80h
; Преобразование числа, заданного в регистре EAX, в строковую запись
mov eax, 8763125 ; число для вывода
mov ecx,0
p3: mov edx,0
mov ebx,10 ; 10=основание системы счисления
div ebx ; деление eax на ecx, результат - в edx
add edx, 48 ; 48=ASCII-код '0'
push dx ; сохранение вычисленного разряда числа в стеке
inc ecx
cmp eax,0
jne p3
; извлечение вычисленных разрядов числа из стека вывод в консоль
p4: pop ax
push ecx
call char_out
...