Разработка программного обеспечения

Разработка программы, вызываемой из DOS, которая выполняет ввод с клавиатуры двух 4-значных шестнадцатеричных чисел, которые записываются в качестве содержимого регистров BP и DI. Вывод на экран содержимого регистров в виде шестнадцатеричных чисел.

Рубрика Программирование, компьютеры и кибернетика
Вид презентация
Язык русский
Дата добавления 16.12.2018
Размер файла 206,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторная работа N 2

регистр программа число экран

Задание

Р а з р а б о т а й т е программу, вызываемую из DOS, которая выполняет:

1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел, которые записываются в качестве содержимого регистров BP и DI;

2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел;

3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде десятичных чисел;

4) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел.

Пример информации на экране:

ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP AD56<Enter>

ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI 7F09<Enter>

ЧИСЛА В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ

(BP) = AD56 (DI) = 7F09

ЧИСЛА В ДЕСЯТИЧНОЙ СИСТЕМЕ

(BP) = 44374 (DI) = 32521

ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ

(BP) = 1010110101010110 (DI) = 0111111100001001

Выполнение

В рамках задания было разработано 4 программы:

главная программа (lab2.asm ) и 4 подпрограммы (ПП), вызываемые из главной:

HEXIN2, SH16, OUTINT, SHBIN.

HEXIN2 - выполняет ввод числа в шестнадцатеричном виде и помещает его в AX.

SH16 - выполняет вывод из регистра AX в шестнадцатеричном виде,

DECOUT- выполняет вывод из регистра AX в десятичном виде,

SHBIN - выполняет вывод из регистра AX в двоичном виде.

В главной программе есть процедура print, компилируемая вместе с ней;

print выводит строку символов на экран.

Дерево программ имеет вид:

lab2.asm + ПП print

HEXIN2.asm

SH16.asm

OUTINT.asm

SHBIN.asm

Файловая структура имеет вид

lab2.asm

main1 + print

lab2-3pp.asm

HEXIN2.asm

SH16.asm

OUTINT.asm

SHBIN.asm

lab2.obj

lab2-3pp.obj

lab2.com

Имеется 2 модуля типа OBJ, компонуемые в единый файл с именем: LAB2.COM.

В файле lab2.asm и lab2.obj содержится главная процедура main1 и ПП print, а также все текстовые строки, выводимые на экран.

В lab2-3pp.asm, lab2-3pp.obj содержатся четыре ПП - HEXIN2.asm, SH16.asm, OUTINT.asm, SHBIN.asm.

Компоновка производится командной строкой: tlink /t lab2.obj+lab2-3pp.obj.

Результатом является исполняемый файл lab2.com

Блок-схема алгоритма главного модуля

lab2.asm

Блок-схема алгоритма ПП HEXIN2.asm

Блок-схема алгоритма ПП SH16.asm

Блок-схема алгоритма ПП SHBIN.asm

Блок-схема алгоритма ПП outint.asm

Тексты программ

Текст програмы LAB2.ASM

; lab2.asm

MODEL TINY

Code_seg SEGMENT PUBLIC 'CODE'

ASSUME CS:Code_seg, DS:Code_seg

ORG 100h

EXTRN hexin2:near, sh16:near, outint:near, shbin:near

Start:

main1 proc near

LEA DX, sobbp ; приглашение к вводу числа в регистр BP

call print

call hexin2 ; ввод числа в 16-ричном виде

mov bp,ax ; запоминание введенного числа в BP

LEA DX, snl ; переход на новую строку

call print

LEA dx,sobdi ; приглашение к вводу числа в регистр DI

call print

call hexin2 ; ввод числа в 16-ричном виде

mov di,ax ; запоминание введенного числа в DI

;HEX

LEA DX, sob1bp

call print

mov ax,bp

call sh16 ; вывод BP в 16-ричном виде

LEA DX, sob1di

call print

mov ax,di

call sh16 ; вывод DI в 16-ричном виде

;

; DEC

LEA DX, sob1bp

call print

mov ax,bp

call OUTINT ; вывод BP в десятичном виде

LEA DX, sob1di

call print

mov ax,di

call OUTINT ; вывод DI в десятичном виде

; BIN

LEA DX, sob1bp

call print

mov ax,bp

call shbin ; вывод BP в двоичном виде

LEA DX, sob1di

call print

mov ax,di

call shbin ; вывод DI в двоичном виде

mov ax,0; ожидание нажатия клавиши

int 16h

; выход из программы в DOS

int 20h

ret

main1 endp

print PROC NEAR ; процедура вывода строки на экран

push ax

push dx

MOV AH, 9h ; Функция вывода строки

; LEA DX, Text ; DX адрес строки

INT 21h ; Вывод строки

pop dx

pop ax

ret

print ENDP

sobbp db 'Vvedite soderzhimoe registra BP > $'

sobdi db 'Vvedite soderzhimoe registra DI > $'

sob1bp db 13,10,' (BP) = $'

sob1di db ' (DI) = $'

snldb 13,10,'$'

Code_seg ENDS

ENDStart

Текст ПП HEXIN2.ASM

;hexin2 ( вводит 4 16-ричные знака. (A-F)ТОЛЬКО НА ВЕРХНЕМ РЕГИСТРЕ!)

MODEL TINY

;Подпрограмма ввода чисел в 16-ричном виде

Code_seg SEGMENT PUBLIC

ASSUME CS:Code_seg

ORG 100h

hexin2 proc near

PUBLIC hexin2

push bx

push dx

push cx

push si

xor BX,BX ;Очистим вспомогательный регистр

mov si,4 ;счетчик вводимых знаков

inpt: mov AH,08h ;Функция ввода символа без эхо

int 21h

cmp AL,13 ;Клавиша Enter?

je done ;

cmp AL, '0' ;Меньше 'О'?

jb inpt ;Да, на повторение ввода

cmp AL,'9' ;Не больше '9'?

jbe ok ;Да, введена цифра

cmp AL,'F' ;Больше 'F'?

ja inpt ;Да, на повторение ввода

cmp AL,'A' ;Меньше 'A'

jb inpt ;Да, на повторение ввода

ok:DEC SI

JL inpt

mov AH,02h ;Введено разумное,

mov DL,AL ;Выведем символ на экран

int 21h

cmp AL,'9' ;Введена цифра?

ja letter ;Буква!

sub AL,'0' ;Введена цифра, преобразуем в число

and AX,0Fh ;Замаскируем остальные биты

jmp addd ;Ha продолжение

letter: sub AL,55 ;Введена буква, преобразуем в число

and AX,0Fh ;Замаскируем остальные биты

addd: mov CL,4 ;Умножим предыдущий результат

sal BX,CL ;на 16 сдвигом на 4 бита влево

or BX,AX ;Добавим новую цифру

jmp inpt ;Будем вводить дальше

done: mov AX,BX ;В AХ - результат = введенное число

pop si

pop cx

pop dx

pop bx

ret

hexin2 endp

Code_seg ENDS

END

Текст ПП SH16.ASM

; sh16.asm вывод в 16-ричном виде нас экран из АХ

Code_seg SEGMENT PUBLIC

ASSUME CS:Code_seg

ORG 100h

sh16proc near

PUBLIC sh16

; в AX число для перевода

; Начинаем перевод числа AX в строку

movcl,16-4 ; 16-битный регистр, будем выводить по 4 бита (0..F)

xchgdx,ax ; Сохраняем число в DX

Repeat:

movax,dx ; Восстанавливаем число в AX

shrax,cl ; Сдвигаем на CL бит вправо

andal,0Fh ; Получаем в AL цифру 0..15

addal,'0' ; Получаем в AL символ цифры

cmpal,'9' ; Проверяем цифру

jbeDigit09 ; Прыгаем, если это цифра 0..9

addal,'A'-('9'+1) ; Иначе (для A..F) корректируем ее

Digit09:pushax

pushdx

movah,02h

movdl,al

int21h ; Выводим символ в AL на экран

pop dx

pop ax

subcl,4 ; Уменьшаем CL на 4 для следующей цифры

jncRepeat ; Если знаковый CL >= 0, то повторяем

; Выходим из программы

ret

sh16endp

Code_seg ENDS

END

Текст ПП SHBIN.ASM

; shbin

MODEL TINY

Code_seg SEGMENT PUBLIC

ASSUME CS:Code_seg

ORG 100h

; в AX число для перевода

shbinproc near

PUBLIC shbin

; Начинаем перевод числа AX в битовую строку

movcl,16-1 ;16-битный регистр, будем выводить по 4 бита (0..F)

xchgdx,ax ; Сохраняем число в DX

Repeat:

movax,dx ; Восстанавливаем число в AX

shrax,cl ; Сдвигаем на CL бит вправо

andal,1 ; выделяем младший бит

addal,'0' ; Получаем в AL символ

pushax

pushdx

movah,02h

movdl,al

int21h ; Выводим символ в AL на экран

pop dx

pop ax

subcl,1 ; Уменьшаем CL на 1 для следующей цифры

jncRepeat ; Если CF не равен 1, то повторяем

; Выходим из программы

ret

shbinendp

Code_seg ENDS

END

Текст ПП outint.asm

;outint.asm

outint proc near ; процедура вывода числа в 10-ичном виде из ax со знаком

public outint

push cx

push bx

push dx

; Проверяем число на знак.

; test ax, ax

; jns oi1

; Если оно отрицательное, выведем минус и оставим его модуль.

; mov cx, ax

; mov ah, 02h

; mov dl, '-'

; int 21h

; mov ax, cx

; neg ax

; Количество цифр будем держать в CX.

oi1:

xor cx, cx

mov bx, 10 ; основание сс. 10 для десятеричной и т.п.

oi2:

xor dx,dx

div bx

; Делим число на основание сс. В остатке получается последняя цифра.

; Сразу выводить её нельзя, поэтому сохраним её в стеке.

push dx

inc cx

; А с частным повторяем то же самое, отделяя от него очередную

; цифру справа, пока не останется ноль, что значит, что дальше

; слева только нули.

test ax, ax

jnz oi2

; Теперь приступим к выводу.

mov ah, 02h

oi3:

pop dx

; Извлекаем очередную цифру, переводим её в символ и выводим.

add dl, '0'

int 21h

; Повторим ровно столько раз, сколько цифр насчитали.

loop oi3

pop dx

pop bx

pop cx

ret

outint endp

Приложение 1

Файл lab2.com

Приложение 2

Скриншот выполнения программы

Вывод: программа работает правильно.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка ввода с клавиатуры и вывода на экран монитора данных с помощью стандартных функций printf и scanf. Ввод количества материальных точек. Работа с линейным списком. Хранение содержимого списка в блоке ячеек памяти с последовательными адресами.

    курсовая работа [176,8 K], добавлен 18.01.2016

  • Составление программы сортировки по возрастанию массив из 20 шестнадцатеричных чисел, просматривающей все исходные числа во внешней памяти и выбирающей самое большое число. Блок-схема алгоритма работы программы. Таблица команд и число их выполнения.

    курсовая работа [23,1 K], добавлен 24.05.2015

  • Разработка программы обработки числовых последовательностей с кодом на языке Pascal, которая должна выполнять функции ввода количества чисел с клавиатуры, перебора всех возможных сочетаний элементов, определения их сумм и вывода информации на экран.

    практическая работа [432,0 K], добавлен 09.04.2010

  • Создание программы для выполнения простейших математических функций с применением языка программирования ObjectPascal. Проектирование графического интерфейса Калькулятора двоичных и шестнадцатеричных систем. Описание алгоритма на естественном языке.

    курсовая работа [115,4 K], добавлен 19.05.2014

  • Разработка программы, которая выполняет удаление элементов внешних таблиц, а также очистку файлов, вывод таблиц на экран. Описание программного продукта. Выбор языка программирования. Схема информационных потоков. Комплект поставки и инсталляция.

    курсовая работа [180,0 K], добавлен 09.03.2009

  • Ввод данных в ячейки, редактирование содержимого. Автозаполнение формулами, ввод чисел. Выделение диапазона ячеек и операции над ними. Вычисления в электронных таблицах. Абсолютные и относительные ссылки. Электронная ведомость начисления зарплаты.

    контрольная работа [217,1 K], добавлен 19.04.2011

  • Участие регистров ввода-вывода в работе периферийных устройств. Отражение состояния периферийных устройств в состоянии разрядов регистров состояния. Перечень имен и номеров регистров ввода-вывода, управления и состояния микроконтроллеров разных типов.

    курсовая работа [171,2 K], добавлен 22.08.2010

  • Разработка программы, которая выявляет в прямоугольной матрице все подматрицы, состоящие только из m-значных целых чисел. Использование компилируемого языка программирования общего назначения C/C++. Обработка алгоритмов, кодирование программных средств.

    курсовая работа [980,1 K], добавлен 05.03.2015

  • Формирование устойчивой последовательности псевдослучайных чисел с использованием метода "середины квадрата". Разработка программы для определения среднего значения чисел, среднего значения квадратов чисел и дисперсии для последовательности из 20 чисел.

    лабораторная работа [1,4 M], добавлен 21.01.2015

  • Редактирование в трехмерном пространстве. Команды редактирования, способы изменения значений параметров. Ввод и редактирование содержимого ячеек. Рабочие книги и листы. Ввод текста, чисел, исправление, формулы. Создание презентации в режиме структуры.

    контрольная работа [151,7 K], добавлен 22.02.2011

  • Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.

    курсовая работа [33,3 K], добавлен 08.11.2011

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

    реферат [14,5 K], добавлен 06.12.2011

  • Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.

    курсовая работа [1,3 M], добавлен 02.12.2009

  • Структурная схема микроконтроллера, процесс разработки принципиальной схемы и программного обеспечения. Конфигурирование регистров аналого-цифрового преобразователя. Код программы на языке Assembler, конфигурирование регистров внешних прерываний.

    курсовая работа [267,5 K], добавлен 08.06.2019

  • Разработка программы для выполнения арифметических операций с комплексными числами. Разработка эскизного проекта. Диаграмма последовательностей и классов. Разработка и описание программы. Разработка программного кода и руководства пользователя.

    курсовая работа [1,2 M], добавлен 25.11.2011

  • Разработка программы, которая создает в отдельном потоке случайный массив целых чисел в заданном диапазоне и выводит на экран эти числа. Описание общего алгоритма, интерфейс программы. Методы решения и алгоритмы задач, реализуемых каждым потоком.

    курсовая работа [372,6 K], добавлен 17.04.2014

  • Написание программы для генерации случайных чисел, в которой реализуются возможности генерации абсолютно случайных чисел. Приложение на языке С/С++. Описание узла, содержащего данные; функций и методов работы; чтения данных из памяти и вывода их на экран.

    курсовая работа [172,4 K], добавлен 23.05.2012

  • Разработка программы на языке VBA для управления деятельностью птицеводческой фермы, которая вводит исходные данные, выполняет расчеты и выводит на экран расчет данных по уходу за гусями и показатели оценки эффективности организации птицеводства.

    курсовая работа [1,8 M], добавлен 19.04.2011

  • Разработка схемы базы данных для хранения журнала событий холодильника. Передача содержимого журнала в компьютер, подсоединенный к специальному гнезду на корпусе холодильника. Концептуальное и логическое проектирование программы встроенного процессора.

    курсовая работа [1,9 M], добавлен 20.11.2020

  • Разработка игровой программы "Frag the monster", которая осуществляет вывод на экран случайным образом врагов, основного игрока и дополнительных объектов (оружия). Обоснование выбора языка программирования - С++. Интерфейс и принцип работы программы.

    курсовая работа [3,2 M], добавлен 27.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.