mov ax,data;инициализация сегментного
mov ds,ax;регистра
lea bx,aa;занесение в BX адреса формируемого массива
mov cx,10;инициализация счётчика числа вводимых символов
l1: mov ah,0;номер функции прерывания
int 16h;ввод символа
mov dl,al;сохранение введённого символа в DL
not al;инвертирование введённого символа
mov [bx],al;запись в память первого сформированного байта из четвёрки
mov al,dl;восстановление введённого символа из DL
and al,0ach;формирование второго байта из четвёрки путём конъюнкции
mov 1[bx],al;запись в память второго сформированного байта из четвёрки
mov al,dl;восстановление введённого символа из DL
xor a,10100B;формирование третьего байта из четвёрки путём;инвертирования отдельных бит
mov 2 [bx],al;запись в память третьего сформированного байта из четвёрки
mov al,dl;восстановление введённого символа из DL
cmp cx,10;проверка: является ли введённый символ первым, если да -
je l2;переход, иначе
or al,dh;дизъюнкция с ранее введённым символом и формирование;последнего байта из текущей четвёрки
l2: mov 3[bx],al;запись в память 4 – го сформированного байта из четвёрки
|
|
mov dh,dl;сохранение в DH введённого символа
add bx,4;смещение указателя на следующую четвёрку байт формируемого;массива
loop l1;
Ввод символа с экрана можно осуществить с помощью прерывания INT16H, как это сделано в выше приведённом примере. При этом в регистр AH заносится номер функции прерывания 0,таким образом, реализуется ввод символа с клавиатуры без эхоповтора. После выполнения команды прерывания в регистре AL находится код введённого символа. Пример:
MOV AH,0
INT 16H.