Skip to content

An example of the implementation of some functions in the assembly language of the Intel 8086 processor.

License

Notifications You must be signed in to change notification settings

averov90/asm8086-io-arithmetic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

asm8086 IO and Arithmetic example

License Version

В данном репозитории представлены 3 небольшие работающие программы, которые содержат некоторые функции ввода/вывода и арифметики. Для получения примера (чтобы была возможность демонстрации), в каждой программе есть головная функция. Ниже состав примеров будет рассмотрен подробнее.

Для запуска примеров необходимо: окружение DOS, компилятор TASM (Turbo Assembler) для Intel8086. В качестве окружения DOS можно взять DOSBox (либо DOSBox Staging, но в старом DOSBox скомпилированные программы работают, кажется, лучше).

Перед началом каждой функцией указано, какие регистры требуются этой функции для работы (т.е. те регистры, значение которых нужно сохранить перед вызовом функции в случае, если хранимые в них значения будут нужны позже). В число этих регистров входят и аргументы функции. Описание этих аргументов даётся внутри функции (в начале). Многие моменты выполнения программ пояснены в комментариях в коде.

prog_1.asm

func_uint16IN - функция ввода беззнакового 16-битного числа. Само число после ввода возвращается через регистр AX.

func_uint32OUT - функция вывода беззнакового 32-битного числа. Число для вывода подаётся через 2 регистра (AX - нижнее слово, DX - верхнее слово). В работе данная функция использует стек (требует 10 слов т.е. 20 байт).

func_mul32x16 - Функция умножения 32-битного числа на 16-битное. Числа для подаются через 3 регистра (AX - нижнее слово 1 числа, DX - верхнее слово 1 числа, BX - множитель). Результат - через AX и DX.

func_div32x16 - функция деления 32-битного числа на 16-битное. Числа для вывода подаются через 2 регистра (AX - нижнее слово 1 числа, DX - верхнее слово 1 числа, BX - множитель) и переменную func_div32x16_divider. Результат - через AX и DX (целая часть), BX - остаток.

Головная функция данного примера с помощью вышеприведённых функций выполняет вычисление количества расстановок при переданных в программу m и n.

prog_2.asm

func_int16IN - функция ввода знакового 16-битного числа. Само число после ввода возвращается через регистр AX.

func_uint16IN - функция ввода беззнакового 16-битного числа. Само число после ввода возвращается через регистр AX.

func_uint16OUT - функция вывода беззнакового 16-битного числа. Число для вывода подаётся через 2 регистра (AX - нижнее слово). В работе данная функция использует стек (требует 10 слов т.е. 20 байт).

Головная функция данного примера с помощью вышеприведённых функций выполняет подсчёт количества чисел, больших заданного порога. Позволяет ввести как порог, так и количество чисел для ввода.

prog_3.asm

func_placments32x16x16 - функция вычисления количества расстановок при переданных в программу m и n. Аргументы в функцию передаются через стек.

func_uint16IN - функция ввода беззнакового 16-битного числа. Само число после ввода возвращается через регистр AX.

func_uint32OUT - функция вывода беззнакового 32-битного числа. Число для вывода подаётся через 2 регистра (AX - нижнее слово, DX - верхнее слово). В работе данная функция использует стек (требует 10 слов т.е. 20 байт).

func_mul32x16 - Функция умножения 32-битного числа на 16-битное. Числа для подаются через 3 регистра (AX - нижнее слово 1 числа, DX - верхнее слово 1 числа, BX - множитель). Результат - через AX и DX.

func_div32x16 - функция деления 32-битного числа на 16-битное. Числа для вывода подаются через 2 регистра (AX - нижнее слово делимого числа, DX - верхнее слово делимого числа) и переменную func_div32x16_divider. Результат - через AX и DX (целая часть), BX - остаток.

Головная функция данного примера с помощью вышеприведённых функций выполняет вычисление количества расстановок при переданных в программу m и n.

About

An example of the implementation of some functions in the assembly language of the Intel 8086 processor.

Topics

Resources

License

Stars

Watchers

Forks