Ввод массива с клавиатуры и вывод - Assembler
Формулировка задачи:
Здравствуйте!
Объявил массив
делаю ввод с клавиатуры:
и вывод:
При вводе вводится 2-3 элемент массива и вылетает, при выводе просит ввод опять же 2-3 символа и закрывается место того чтоб вывести.
Подскажите что не так делаю
Листинг программы
- mas db 4 dup(?)
Листинг программы
- mov cx,5
- xor si,si
- c11:
- MOV AH,1H
- INT 21H
- sub al,30h
- mov mas[si],al
- inc si
- loop c11
Листинг программы
- mov cx,5
- xor si,si
- c12:
- mov ah,02h
- mov dl,mas[si]
- add dl,30h
- int 21h
- inc si
- loop c12
Решение задачи: «Ввод массива с клавиатуры и вывод»
textual
Листинг программы
- m2: mov cx,10
- xor ax,ax
- xor si,si
- c1:
- MOV AH,01H
- INT 21H
- mov mas[si],al
- inc si
- loop c1
- mov cx,10
- xor ax,ax
- xor si,si
- c2:
- mov dl,mas[si]
- mov ah,02h
- int 21h
- inc si
- loop c2
Объяснение кода листинга программы
Выполняемый файл программы, предположительно, на языке Assembler, вводит массив из 10 чисел с клавиатуры и выводит его на экран. Список операций, которые выполняются в коде:
- mov cx,10 - установка счётчика циклов на 10.
- xor ax,ax — очистка регистра ax.
- xor si,si — очистка регистра si.
- c1: — начало цикла.
- mov AH,01H — подготовка команды ввода числа.
- INT 21H — ввод числа с клавиатуры в регистр al.
- mov mas[si],al — сохранение введённого числа в массиве по адресу si.
- inc si — увеличение индекса на единицу.
- loop c1 — повторение цикла.
- mov cx,10 - установка счётчика циклов на 10.
- xor ax,ax — очистка регистра ax.
- xor si,si — очистка регистра si.
- c2: — начало цикла.
- mov dl,mas[si] — подготовка команды вывода числа.
- mov ah,02h — подготовка команды вывода числа.
- int 21H — вывод числа с клавиатуры в регистр dl.
- inc si — увеличение индекса на единицу.
- loop c2 - повторение цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д