Sys_Programming / LAB_6
.DOCЛАБОРАТОРНАЯ РАБОТА №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,