Sym proc

push cx;сохранение в стеке содержимого счётчика байт

mov dl,al;сохранение в DL значения выводимого байта

mov cl,2; инициализация счётчика числа символов в байте

p4: mov dh,0;обнуление регистра, в который выдвигается цифра из байта

mov dh,4;инициализация счётчика числа бит в шестнадцатеричной цифре

p1: shl dh,1;освобождение места для записи бита выдвигаемой цифры

shl dl,1;выдвижение бита цифры во флаг С

adc dh,0;занесение содержимого флага С (бита цифры) в регистр DH

dec ch;декремент счётчика числа бит в цифре

jnz p1;если не 0 - переход к началу цикла

mov al,dh;перезапись выдвинутой цифры в AL

cmp al,9;проверка - является ли цифра "буквенной", если да – переход на

ja p2;метку, иначе - преобразование

add al,30h;цифры в её символическое представление (ASCII код)

Jmp p3

p2: add al,37h;преобразование буквенной цифры в её символическое представление

p3: int 10h;вывод символа на экран

Loop p4

Pop cx

Ret

Sym endp

Cod ends

End start

Здесь операции выделения цифр из байта, преобразование цифр в ASCII код и вывод их на экран оформлены в процедуру SYM. Передача параметров в процедуру осуществляется через регистр процессора.

Значения, которые процедура использует как входные данные, называются параметрами. Имеется насколько способов передачи параметров процедурам. Один из простых способов - размещение параметров в регистрах МП. В приведённом примере два входных параметра передаются в процедуру в регистре AX. В AH - номер функции прерывания, в AL - значение выводимого байта. Еще один способ передачи параметров связан с использованием общей области данных, доступной вызывающей программе и процедуре. В большинстве языков высокого уровня передача параметров процедурам организуется через стек. В приведённом примере программа оформлена как подпрограмма типа FAR.Это объясняется тем, что в среде операционной системы все прикладные программы считаются подпрограммами, которые вызываются операционной системой. Стандартное начало программы.

push ds;сохранить в стеке сегментный адрес

mov ax,0;и нулевое смещение

push ax;смещение PSP для возврата

В кодах ASCII цифры 0...9 имеют значения 30h...39h соответственно. Цифры ah,bh,...fh кодируются как 41h,...46h, следовательно, для того, чтобы вывести цифру на экран её необходимо представить в коде ASCII. Это преобразование приведено в примере программы.

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

Вариант №1

Задана последовательность из шести слов:F501h, 3196h, 5737h, AA88h, CEDh,FA88h.Найти значение выше 4000h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №2

Задана последовательность из семи слов:3245h, 4E1ah, 315Ah, F501h, 3F96h, 8737h, EAA8h.Найти значение большее 3500h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №3

Задана последовательность из девяти байт:38h, F5h, F4h,36h, A7h, CFh, 51h, 3Fh, 96h. Найти значение меньшее 13h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №4

Задана последовательность из девяти байт: FAh, E8h,7Ah, F4h, 96h, CFh, 51h, 3Fh, 9Ah. Найти значение большее 67h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №5

Задана последовательность из семи слов:734Eh, 4E67h, 3156h, F501h, 3F96h, 8737h, EAA8h. Найти значение выше 8888h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №6

Задана последовательность из семи слов:F345h, A6C7h, 3156h, F501h, 3F96h, 8737h,EAA8h. Найти значение, которое ниже E600h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №7

В сегменте данных задана последовательность из шести слов:7FFFh, 7AC9h, F481h, 7314h, 2224h, 124h. Найти значение, которое меньше или равно 7FF1h и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №8

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

Вариант №9

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

Вариант №10

В сегменте данных задана последовательность из семи слов:FA35h, AA12h, 8FCDh, 2A3Eh, 5781h, 73A6h, FF47h. Найти значение, которое ниже или равно 37AFh и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №11

В сегменте данных задана последовательность из десяти байт:CDh, FCh, FAh, 9Eh, 3Eh, F4h, 36h, A7h, CFh, 51h. Найти значение, которое больше или равно ADh и вывести его на экран. Вывод символа на экран оформить в виде процедуры.

Вариант №12

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


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



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