End start

Здесь символ на экран выводится, используя прерывание INT 10h.Прежде чем будет инициировано прерывание необходимо подготовить регистры: AH,AL. В AH нужно занести значение 0eh (номер функции),в AL символ, который следует напечатать на экране.

В кодах ASCII цифры 0...9 имеют значения 30h...39h соответственно, следовательно, для того, чтобы вывести цифру на экран её необходимо представить в коде ASCII. Слово состоит из четырёх шестнадцатеричных цифр, а байт их двух. Следовательно, для того, чтобы вывести содержимое слова или байта в шестнадцатеричном коде, нужно выделить и отдельно вывести каждую цифру. Для выделения цифр из слова или байта можно использовать команду сдвига влево:

SHL <сдвигаемый операнд>,<число сдвигов>.

Ниже приведён пример выделения цифры из слова. Для этого производится сдвиг на 4 бита влево содержимого регистра AX с занесением выдвигаемых битов в регистр DX.Здесь число, из которого выделяется цифрам, находится в регистре AX:

MOV DX,0

MOV CL,4

C2: SHL DX,1

SHL AX,1

ADC DX,0

DEC CL

JNZ C2

В результате приведённых операций в DX оказалась первая шестнадцатеричная цифра числа из AX.

Ниже приводится пример организации цикла на ассемблере. Решается задача поиска адреса байта в массиве из 200 байт, содержимое которого равно нулю.

...

MOV CX, 200;инициализация счётчика числа байт массива

LEA BX, T; в BX адрес начала массива байт (адрес первого байта)

MOV AX,0;

L2: CMP [BX],AX; сравнение значения очередного байта с 0

JZ L1; переход, если этот байт нулевой

INC BX; в противном случае увеличение на 1 текущего адреса

DEC CX; уменьшение на 1 содержимого счётчика байт

JNZ L2; переход на L2, если значение счетчика не равно

L1: MOV TA,BX; запись в память адреса нулевого байта

...

Индивидуальные задания

Вариант №1

В сегменте данных задана последовательность из шести слов:F501h, 3196h, 5737h, AA88h, CEDh,FA88h.Найти значение большее 4000h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.
Вариант №2

В сегменте данных задана последовательность из семи слов:3845h, 4367h, 3157h, F501h, 3F96h, 8737h,EAA8h.Найти значение ниже 3500h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.

Вариант №3

В сегменте данных задана последовательность из девяти байт:38h, 45h, F4h,36h, A7h,CFh, 51h, 3Fh, 96h.Найти значение выше 43h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.
Вариант №4

В сегменте данных задана последовательность из девяти байт:FAh, E8h, 77h, F4h, 96h, CFh, 57h, 8Fh,9Ah.Найти значение ниже 67h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.
Вариант №5

В сегменте данных задана последовательность из семи слов:F345h, 4967h, 3156h, F501h, 3F96h, 8737h, EAA8h.Найти значение меньшее 7888h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.
Вариант №6

В сегменте данных задана последовательность из восьми слов:FA45h, A667h, 3156h, F501h, 3F96h, 8967h, ECA8h, 76CDh.Найти значение большее 0000h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.
Вариант №7

В сегменте данных задана последовательность из шести слов:9694h, 7389h, F481h, 7314h, 2224h, 124h.Найти значение, которое ниже или равно 7FF1h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.

Вариант №8

В сегменте данных задана последовательность из шести слов:3147h, 5364h, 8102h, AF39h, B786h, A134h.Найти значение, которое выше или равно 6781h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.

Вариант №9

В сегменте данных задана последовательность из девяти слов:7131h, 7AFFh, 9345h, 7FA1h, 6AD3h, 2784h, 2DACh, 5A36h, FF45h.Найти значение, которое меньше или равно 6127h и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.

Вариант №10

В сегменте данных задана последовательность из семи слов:FA35h, AA12h, 8FCDh, 2534h, 5781h, 73A6h, FF47h.Найти значение, которое больше или равно 37AFh и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.

Вариант №11

В сегменте данных задана последовательность из десяти байт:CDh, FCh,FAh, 97h, 38h, F4h, 36h, A7h, CFh, 51h.Найти значение, которое ниже или равно ADh и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.

Вариант №12

В сегменте данных задана последовательность из одиннадцати байт:5Fh, 4Ah, 31h, 89h, 7Dh, 91h, CDh, FCh, FAh, 97h, 38h.Найти значение, которое выше 8Ah и вывести его на экран. Для вывода символа на экран использовать прерывание 10h с номером функции 0eh.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: