Вывод на экран результатов вычислений
Автор: KliffordSs • Март 30, 2021 • Лабораторная работа • 1,616 Слов (7 Страниц) • 281 Просмотры
МИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра Вычислительной техники
ОТЧЕТ
по лабораторной работе №8
по дисциплине «Организация ЭВМ и систем»
Тема: Вывод на экран результатов вычислений.
Студент гр. | ||
Преподаватель |
Санкт-Петербург
2020
Цель: освоение средств операционной системы для осуществления вывода данных.
Задание: Необходимо отладить приведенную выше программу и включить ее в отчет, добавив комментарий к каждой строке программы. Затем требуется модифицировать приведенный текст программы таким образом, чтобы модифицированная программа осуществляла вывод результата вычисления из переменной resmask на экран в виде двоичного числа. Необходимо отладить модифицированную программу и составить отчет о работе.
Текст приведенной программы с комментариями и исправлениями:
TITLE VIVOD вывод двоичного результата в виде двух разрядов десятичного числа.
.Model Small
.STACK 100h
;extrn resmask:byte ;в resmask хранится выводимый результат (двоичное число)
;Public VIVOD
.data
resmask db 14
mes1 db 10,13,"RESULT: $" ;строка для вывода сообщения
.code
VIVOD:
mov ax,@data ;записываем через ax в ds
mov ds,ax ;смещение до сегмента данных
cmp resmask,10; в переменной resmask задается значение не более 19
;сравниваем resmask с 10
jb m1 ;если меньше то значит у нас число из одной цифры
;перейти к m1
sub resmask,10 ;если больше то вычесть из resmask 10
mov dl,31h ;записываем в dl 31h – код символа «1»
mov ah,2 ;в ah записывается 2 – код прерывания вывода символа из dl на
;экран
int 21h ;вызов прерывания DOS
m1:
mov dl,resmask ;записываем в dl resmask. Т.е. 4
or dl,30h ;побитовое«ИЛИ».Т.е. в dl записано число 000001002. Если
;сделать побитовое «ИЛИ» с 30h(001100002), то будет записано
;001101002 = 34h. Что соответствует символу ‘4’
mov ah,2 ;код для вывода символа на экран из регистра dl
int 21h ;вызов прерывания DOS
mov ah, 01h ;задержка вывода на экране
int 21h ;до нажатия клавиши
mov ax,4C00h ;строки отвечающие
int 21h ;за завершение программы
End VIVOD
В ходе отладки строка:
mes1 db 10,13,’RESULT: $’
Была исправлена на строку:
mes1 db 10,13,"RESULT: $"
Так же была добавлен фрагмент, благодаря которому можно задержать исполнение программы на экране:
mov ah, 01h
int 21h
Была изменена строка:
mov dl, ‘1’
на строку:
mov dl,31h
Чтобы в итоге выводился символ ‘1’.
Все добавленные или измененные строки выделены жирным шрифтом
Результат работы программы:
[pic 1]
...