2. Программа для практики.

Напишем программу, выводящую на экран все ASCII-символы (16 строк по 16 символов в строке).

. model tiny ; модель памяти в которой сегменты кода, данных и стека объединены.
. code ; сегмент кода, который содержит данные.
org 100h ; начало СОМ-файла
begin: ; метка начала кода программы
 mov cx,256 ; задаем значение счетчика (256 символов)
mov dl,0 ; первый символ - с кодом 00
mov ah,2 ; номер функции DOS "вывод символа"
cloop: int 21h ; вызов DOS
 inc dl ; увеличение DL на 1 - следующий символ
test dl,0Fh ; если DL не кратен 16
jnz continue_loop; ; продолжить цикл,
push dx ; иначе: сохранить текущий символ
mov dl,0Dh ; вывести CR
int 21h ; вызов DOS
mov dl,0Ah ; вывести LF
int 21h ; вызов DOS
 pop dx ; восстановить текущий символ
continue_loop: ; метка
loop cloop ; продолжить цикл
ret ; завершение СОМ-файла
end begin ; метка окончания кода программы

Здесь с помощью команды LOOP оформляется цикл, выполняющийся 256 раз (значение регистра СХ в начале цикла). Регистр DL содержит код символа, который равен нулю в начале цикла и увеличивается каждый раз на 1 командой INC DL. Если значение DL сразу после увеличения на 1 кратно 16, оно временно сохраняется в стеке и на экран выводятся символы CR и LF, выполняющие переход на начало новой строки. Проверка выполняется командой TEST DL,0Fh - результат операции AND над DL и 0Fh будет нулем, только если младшие четыре бита DL равны нулю, что и соответствует кратности шестнадцати.

3. Содержание отчета.

3.1 Титульный лист.

3.2 Индивидуальный вариант задания.

3.3 Тестовые наборы данных и предполагаемые результаты.

3.4 Текст программы до отладки.

3.5 Список ошибок, обнаруженных при отладке.

3.6. Результаты выполнения тестов.

3.7. Распечатка листинга компиляции отлаженной программы с указанием работы каждой строки.

4. Задание для выполнения.

4.1 Выполните все примеры, что содержатся в описании данной лабораторной работы.

4.2 Проанализируйте работу программы примера для практики.

4.3 Изучить условия организации циклических переходов на языке Ассемблера.

4.4 Напишите программу, выводящую на экран слово "!!!!!!!!!! Hello!!!!!!!!!!" используя команды циклических переходов (3 варианта).

4.5 Получите задание у преподавателя (один из пяти вариантов табл. №1) и, пользуясь правилами оформления ассемблерных программ, создайте программу, выводящую на экран слово, D число раз.

4.6 Программу ассемблируйте в файл типа *.com или *. exe (на выбор);

5. Контрольные вопросы

5.1 Организация цикла с помощью команды loop?

5.2 Значимость регистра cx?

5.3 Максимальное число повторений команд цикла определяемого регистром сх?

5.4 Организация цикла с помощью команды jmp?

5.5. Разновидности команды jmp?

5.6. Организация цикла с помощью команд dec и jnz?

Табл. №1

вар.

Выводимые данные Формула расчета А B С
Циклический переход D=A+B+C 101 345 121
Hello world D=A-B+C 578 152 149
Good Bye D=A+B-C 333 223 16
Группа D=A-B+C 1502 834 1
Лабораторная работа D=A-B-C 1056 33 125

ЛАБОРАТОРНАЯ РАБОТА №9

СПОСОБЫ И МЕТОДЫ ВЫВОДА ЧИСЕЛ

Цель работы: Освоить методы вывода чисел в двоичном, шестнадцатеричном и десятичном коде.


Информация о работе «Разработка виртуальных лабораторных работ средствами эмулятора Emu8086»
Раздел: Информатика, программирование
Количество знаков с пробелами: 193894
Количество таблиц: 73
Количество изображений: 12

0 комментариев


Наверх