Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Sys_Programming / LAB_6

.DOC
Скачиваний:
16
Добавлен:
20.02.2016
Размер:
95.74 Кб
Скачать

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

Цель работы: изучить правила работы с командами передачи управления.

Вариант №1. (*)

Написать процедуру, которая размещает два 16-битных числа со знаком в памяти в порядке возрастания (меньшее число заносится в ячейку с меньшим адресом).

Результат: Смещение адреса первого числа берется из регистра ВХ; смещение адреса второго числа - из регистра DI

Вариант №2.

Дано: (0 <= a < 1000, 0 <= b < 1000)

Написать процедуру, которая осуществляет выбор:

Если а < b, то с=a + b;

если a = b, то c=a;

если a > b, то c=a - b

Вариант №3.

Дано: (10 <= x < 240)

Написать процедуру, которая осуществляет выбор:

;Если x < 10, то c=x + 10

;если x = 10, то c=x/10 (частное)

;если x > 10, то c=x - 10

Вариант №4. (*)

Поиск ненулевой ячейки в блоке памяти.

Составить программу, которая находит первый ненулевой элемент в заданном блоке памяти из пяти байтовых элементов. Смещение начального адреса блока берется из регистра ВХ; смещение конечного адреса блока берется из регистра DI.

Смещение адреса ненулевого байта возвращается в регистре ВХ. Если ненулевой байт ненайден, то по возвращении в регистре ВХ будет содержаться то же значение, что и в DI

Указание: использовать команду JNZ.

Вариант №5. (*)

Инвертирование строки.

Написать программу, которая производит замену в строке символов длиной n байт строчных букв латинского алфавита на прописные.

Указание: Строчным буквам в таблице ASCII соответствует диапазон кодов 61h-7ah, а прописным – 41h-5ah. Для составления оптимального алгоритма необходимо сравнить представление соответствующих прописных и строчных букв в двоичном виде:

a – 0110 0001……z – 0111 1010

A – 0100 0001…..Z – 0101 1010

Вариант №6.(*)

Составить программу, которая производит подсчет количества нулевых элементов в области blok длиной n байт.

Указание: использовать команды LOOP, JCXZ, CMP, JNE.

На выходе в AL – количество нулевых элементов.

Вариант №7.

Составить процедуру, которая производит деление двух беззнаковых чисел с учетом деления на 0. Вычислить:

а) 10/3

b) 10/0

Указание: Делитель в регистре BL. При делении на 0 выдать на экран соответствующее сообщение.

Вариант №8.(*)

Составить процедуру (тип NEAR) заполнения блока памяти из N слов рядом натуральных чисел. Если число делится на 4 то вместо него заносится 0.

Адрес начала блока в регистре ВХ

Вариант №9.

Написать процедуру выбора двух альтернатив (0 <= a <= 100, 0 <= b < 100)

;Если а <= b, то с=a * b

;если a > b, то c=a / b

Указание: ;а в регистре AL; ;b в регистре BL; ;c в регистре DX

Сегмент данных отсутствует.

Вычислить для: а) а=5, b=25; в) а=25, b=5

Вариант №10.(*)

Поиск ненулевой ячейки в блоке памяти.

Составить программу, которая находит первый ненулевой элемент в заданном блоке памяти из пяти байтовых элементов. Смещение начального адреса блока берется из регистра ВХ; смещение конечного адреса блока берется из регистра DI.

Смещение адреса ненулевого байта возвращается в регистре ВХ. Если ненулевой байт ненайден, то на экран выдается сообщение.

Указание: использовать команду JNZ.

Вариант №11.

Пересылка блоков памяти.

Составить процедуру, которая пересылает блок памяти длиной N байт в такой же блок. Смещение начального адреса первого блока берется из регистра SI; смещение начального адреса второго блока берется из регистра DI; N в регистре СХ

Указание: Использовать команду JCXZ.

Вариант №12.

Пересылка блоков памяти.

Составить процедуру, которая пересылает блок памяти длиной N байт в такой же блок. Смещение начального адреса первого блока берется из регистра SI; смещение начального адреса второго блока берется из регистра DI; N в регистре СХ

Указание: Использовать команду JNZ.

Вариант №13. (*)

Написать процедуру, которая размещает два 16-битных числа без знака в памяти в порядке убывания (меньшее число заносится в ячейку с старшим адресом).

Результат: Смещение адреса первого числа берется из регистра ВХ; смещение адреса второго числа - из регистра DI

Вариант №14.

Дано: (0 <= a < 2000, 0 <= b < 2000)

Написать процедуру, которая осуществляет выбор:

Если а < b, то с=b - a;

если a = b, то c=b;

если a > b, то c=a + b

Вариант №15.

Дано: (20 <= z < 200)

Написать процедуру, которая осуществляет выбор:

;Если z < 20, то c=z + 20

;если z = 20, то c=z/20 (частное)

;если z > 20, то c=z - 20

Вариант №16.(*)

Поиск нулевой ячейки в блоке памяти.

Составить программу, которая находит первый нулевой элемент в заданном блоке памяти из восьми байтовых элементов. Смещение начального адреса блока берется из регистра ВХ; смещение конечного адреса блока берется из регистра DI.

Смещение адреса нулевого байта возвращается в регистре ВХ. Если нулевой байт ненайден, то по возвращении в регистре ВХ будет содержаться то же значение, что и в DI

Указание: использовать команду JZ.

Вариант №17(*).

Преобразование регистра символов.

Написать программу, которая производит замену в строке символов длиной n байт больших букв латинского алфавита на малые.

Указание: Строчным буквам в таблице ASCII соответствует диапазон кодов 61h-7ah, а прописным – 41h-5ah. Для составления оптимального алгоритма необходимо сравнить представление соответствующих прописных и строчных букв в двоичном виде:

a – 0110 0001……z – 0111 1010

A – 0100 0001…..Z – 0101 1010

Вариант №18.(*)

Составить программу, которая производит подсчет количества ненулевых элементов в области blok длиной n байт.

Указание: использовать команды LOOP, JCXZ, CMP, JE.

На выходе в AL – количество ненулевых элементов.

Вариант №19.(**)

Составить процедуру, которая производит деление двух беззнаковых чисел с учетом деления на 0. Вычислить:

а) 300000/300

b) 300000/0

Указание: Делитель в регистре BХ. При делении на 0 выдать на экран соответствующее сообщение.

Вариант №20.(**)

Составить процедуру (тип NEAR) заполнения блока памяти из 10 байт рядом квадратов натуральных чисел. Если квадрат числа делится на 8 то вместо него заносится символ «а».

Вариант №21.

Написать процедуру выбора двух альтернатив (0 <= a <= 100, 0 <= b < 100)

;Если а <= b, то с=a + b

;если a > b, то c=a - b

Указание: ;а в регистре AL; ;b в регистре BL; ;c в регистре DX.

Сегмент данных отсутствует.

Вычислить для: а) а=5, b=25; в) а=25, b=5

Вариант №22.(*)

Поиск нулевой ячейки в блоке памяти.

Составить программу, которая находит первый нулевой элемент в заданном блоке памяти из пяти байтовых элементов. Смещение начального адреса блока берется из регистра ВХ; смещение конечного адреса блока берется из регистра DI.

Смещение адреса нулевого байта возвращается в регистре ВХ. Если нулевой байт ненайден, то на экран выдается сообщение.

Указание: использовать команду JZ.

Вариант №23.

Пересылка блоков памяти.

Составить процедуру, которая пересылает блок памяти длиной N байт в такой же блок. Смещение начального адреса первого блока берется из регистра SI; смещение начального адреса второго блока берется из регистра DI; N в регистре СХ

Указание: Использовать команду LOOP.

Вариант №24.

Вычислить значение функции:

(a-b)/a+1, если a > b,

Y= 25, если a = b,

(a-5)/b, если a < b,

Соседние файлы в папке Sys_Programming