Реализовать код на Ассемблер ввод матрицы с клавиатуры размерностью 3 на 3 и подстановка каждых первых 3 чисел в формулу: d=а+b+t и вывод ответов на экран
mov dl, 3 ; Устанавливаем размерность матрицы 3 на 3
mov si, 0 ; Счетчик элементов матрицы
input_matrix:
mov ah, 01h ; Ожидание ввода чисел с клавиатуры
int 21h ; Считывание значения и сохранение его в AL
; Сохранение значения в соответствующий регистр
cmp si, 0
je save_to_ax
cmp si, 1
je save_to_bx
cmp si, 2
je save_to_cx
jmp skip_save
save_to_ax:
mov ah, 0
mov al, bl
mov bl, bh
mov bh, 0
jmp count_element
save_to_bx:
mov bh, 0
jmp count_element
save_to_cx:
mov bh, al
jmp count_element
skip_save:
mov bh, 0
jmp count_element
count_element:
inc si
cmp si, dl ; Проверка того, что все значения матрицы введены
jne input_matrix
После ввода матрицы следует выполнить подстановку первых трех чисел в указанную формулу d=а+b+t. Для этого можно сохранить каждое из этих чисел в отдельные регистры и затем выполнить арифметические операции.
Например, следующий код позволит выполнить необходимые арифметические операции и сохранить полученное значение в регистре DX:
; Выполнение подстановки в формулу d=а+b+t
mov ax, [ax] ; Сохраняем значение первого элемента матрицы в AX
mov bx, [bx] ; Сохраняем значение второго элемента матрицы в BX
add ax, bx ; Складываем значения AX и BX
mov cx, [cx] ; Сохраняем значение третьего элемента матрицы в CX
add ax, cx ; Складываем значение из предыдущего шага с CX
mov dx, ax ; Сохраняем полученное значение в DX
Наконец, следует осуществить вывод ответов на экран. Для этого также можно воспользоваться командой INT 21h.
Например, следующий код выведет на экран полученное значение переменной DX:
mov ah, 02h ; Загрузка команды вывода символа в AL
mov dl, dh ; Загрузка старшего байта регистра DX в DL
int 21h ; Вывод старшего байта
mov dl, dl ; Загрузка младшего байта регистра DX в DL
int 21h ; Вывод младшего байта
Таким образом, следующий код позволит реализовать программу на Ассемблер для ввода матрицы с клавиатуры размерностью 3 на 3, выполнения подстановки первых трех чисел в указанную формулу и вывода ответов на экран:
section .data
section .bss
matrix resw 9
section .text
global _start
_start:
; Ввод матрицы с клавиатуры
mov dl, 3 ; Устанавливаем размерность матрицы 3 на 3
mov si, 0 ; Счетчик элементов матрицы
input_matrix:
mov ah, 01h ; Ожидание ввода чисел с клавиатуры
int 21h ; Считывание значения и сохранение его в AL
; Сохранение значения в соответствующий регистр
cmp si, 0
je save_to_ax
cmp si, 1
je save_to_bx
cmp si, 2
je save_to_cx
je save_to_dx
jmp skip_save
save_to_ax:
mov ah, 0
mov al, bl
mov bl, bh
mov bh, 0
jmp count_element
save_to_bx:
mov bh, 0
jmp count_element
save_to_cx:
mov bh, al
jmp count_element
save_to_dx:
mov bh, ah
jmp count_element
skip_save:
mov bh, 0
jmp count_element
count_element:
inc si
cmp si, dl ; Проверка того, что все значения матрицы введены
jne input_matrix
; Выполнение подстановки в формулу d=а+b+t
mov ax, [ax] ; Сохраняем значение первого элемента матрицы в AX
mov bx, [bx] ; Сохраняем значение второго элемента матрицы в BX
add ax, bx ; Складываем значения AX и BX
mov cx, [cx] ; Сохраняем значение третьего элемента матрицы в CX
add ax, cx ; Складываем значение из предыдущего шага с CX
mov dx, ax ; Сохраняем полученное значение в DX
; Вывод результата на экран
mov ah, 02h ; Загрузка команды вывода символа в AL
mov dl, dh ; Загрузка старшего байта регистра DX в DL
int 21h ; Вывод старшего байта
mov dl, dl ; Загрузка младшего байта регистра DX в DL
int 21h ; Вывод младшего байта
mov ah, 4Ch
mov al, 0
int 21h
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет