Cod segment
.......
mov ah,0h;запись в AH номера функции прерывания ввода символа
mov bx,0;обнуление регистров DX:BX, в которых
mov dx,bx;формируется 32 разрядное число
int 16h;ввод символа
mov bl,al;запись первого байта в младший байт младшего слова числа
mov ah,0;запись в AH номера функции прерывания ввода символа
int 16h; ввод символа
mov dl,al;запись считанного байта в младший байт старшего слова числа
mov cl,3;инициализация счётчика числа сдвигов
l1: shl bx,1;сдвиг младшей части слова
rcl dx,1;сдвиг старшей части слова
Loop l1
Здесь слово формируется в регистрах DX:BX, в DX – старшая часть числа, в BX – младшая. Для того, чтобы сдвинуть влево 32 разрядное число, организуется цикл, в котором сначала сдвигается на один разряд младшая часть числа – одно слово (логический сдвиг), а затем старшая часть числа (циклический сдвиг через перенос),при этом бит из флага С помещается в освобождающийся разряд сдвигаемого числа. Содержимое флага С представляет бит, выдвинутый из младшей части числа в предыдущем сдвиге. Таким образом, биты, выдвигаемые из младшей части числа помещают в старшую.
|
|
Ввод символа с экрана можно осуществить с помощью прерывания INT16H, как это сделано в выше приведённом примере. При этом в регистр AH заносится номер функции прерывания 0,таким образом, реализуется ввод символа с клавиатуры без эхоповтора. После выполнения команды прерывания в регистре AL находится код введённого символа. Пример:
MOV AH,0
INT 16H.
Индивидуальные задания
Вариант №1
Ввести с экрана последовательно два символа. Если четвёртый бит первого введённого символа и шестой бит второго символа равны 1,то сформировать байт (записать его в память), первые пять бит которого составляют последние пять бит первого символа, а три бита являются тремя последними битами второго символа.
В противном случае, сформировать байт (записать его в память), который представляет собой конъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №2
Ввести с экрана последовательно два символа. Если пятый бит первого введённого символа равен нулю, а четвёртый бит второго символа равен 1, то сформировать слово (записать его в память), в котором биты первого и второго символов чередуются между собой. В противном случае, сформировать байт (записать его в память), который представляет собой дизъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №3
Ввести с экрана последовательно два символа. Если третий и второй биты соответственно первого и второго введённых символов равны нулю, то сформировать байт (записать его в память), в котором первую пару битов составляют два первых бита первого символа, а следующую пару битов – первые два бита второго символа. Третью пару битов, формируемого символа, составляет вторая пара битов первого символа, а четвёртая пара битов формируется из второй пары битов второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой дизъюнкцию двух введённых символов. Ввод символа см.п.4.1.
|
|
Вариант №4
Ввести с экрана последовательно два символа. Если первый и пятый биты соответственно первого и второго введённых символов равны 1, то сформировать байт (записать его в память), в котором первую четвёрку битов составляют четыре первых бита первого символа, а следующую четвёрку битов – последние четыре бита второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой сложение по модулю два двух введённых символов. Ввод символа см.п.4.1.
Вариант №5
Ввести с экрана последовательно два символа. Если первый и седьмой биты соответственно первого и второго введённых символов равны нулю и 1, то сформировать байт (записать его в память), в котором первую четвёрку битов составляют четыре первых инвертированных бита первого символа, а следующие три бита равны нулю. Последний бит формируемого символа равен младшему биту второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой дизъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №6
Ввести с экрана последовательно два символа. Если третий бит первого введённого символа и седьмой бит второго символа равны 1,то сформировать байт (записать его в память), первые три бита которого составляют три первых инвертированных бита первого символа, а три последующих бита являются тремя первыми битами второго символа. Остальные биты единичные. В противном случае, сформировать байт (записать его в память), который представляет собой конъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №7
Ввести с экрана последовательно два символа. Если три первых бита одного введённого символа равны первым трём битам второго символа, то сформировать слово (записать его в память), младший байт которого составляет инвертированный байт первого символа, а старший байт формируется путём дизъюнкции двух введённых символов. В противном случае, сформировать байт (записать его в память), который представляет собой конъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №8
Ввести с экрана последовательно два символа. Если четыре старших бита одного введённого символа равны четырём старшим битам второго символа, то сформировать слово (записать его в память), младший байт которого составляет
байт первого символа, в котором инвертированы пятый и восьмой биты, а старший байт формируется путём дизъюнкции двух введённых символов. В противном случае, сформировать байт (записать его в память), который представляет собой конъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №9
Ввести с экрана последовательно два символа. Если первый и седьмой биты первого символа равны соответствующим битам второго введённого символа, то сформировать байт (записать его в память), в котором первую четвёрку битов составляют четыре первых инвертированных бита первого символа, следующие два бита равны нулю, а остальные два бита, формируемого символа, равны младшим битам второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой дизъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Вариант №10
Ввести с экрана последовательно два символа. Если второй и шестой биты первого символа равны соответствующим битам второго введённого символа, то сформировать байт (записать его в память), в котором первую пятёрку битов составляют, пять первых инвертированных бита первого символа, а следующие три бита равны старшим трём битам второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой сумму по модулю два двух введённых символов. Ввод символа см.п.4.1.
|
|
Вариант №11
Ввести с экрана последовательно два символа. Если первый и третий биты первого символа равны соответствующим битам второго введённого символа, то сформировать слово (записать его в память), в котором старший байт составляет
первый введённый символ, а младший байт формируется из первой шестёрки битов первого символа, а следующие два бита равны инвертированным старшим двум битам второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой сумму по модулю два двух введённых символов. Ввод символа см.п.4.1.
Вариант №12
Ввести с экрана последовательно два символа. Если второй и третий биты первого символа равны соответствующим битам второго введённого символа, то сформировать байт (записать его в память), в котором первую тройку битов составляют три первых инвертированных бита первого символа, следующие два бита равны нулю, а остальные биты, формируемого символа, равны младшим битам второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой конъюнкцию двух введённых символов. Ввод символа см.п.4.1.
Литература
1. Абель П. Язык ассемблера для IBM PC и программирования. – М:Высш.шк., 1992. -224 c.
2. В.Л.Григорьев. Программирование однокристальных микропроцессоров. М., Энергоиздат,1987г.,288с.
3. П.Нортон, Д.Соухэ. Язык ассемблера для IBM PC. М., Издательство ”Компьютер”,1993г.,352с.
4. В.Н.Пильщиков.ASSEMBLER:”Диалог – МИФИ”, 1994,288c.
5. Брэдли Д. Программирование на языке ассемблер для персональной ЭВМ фирмы IBM.М.:Радио и связь, 1988,488с.
6. Методические указания к выполнению работ по дисциплине "Машинно-ориентированные языки". Цикл работ №№ 1 – 4.Махачкала, ДГТУ,1997,32с.
|
|
Оглавление
Введение......................................................3
1.Лабораторная работа №5..................................... 3
1.1.Команды умножения....................................... 3
1.2.Команды деления......................................... 4
1.3.Индивидуальные задания.................................. 5
2. Лабораторная работа №6.....................................7
2.1.Команды передачи управления.............................. 7
2.2.Команды переходов........................................8
2.3.Команды вызовов подпрограмм.............................. 9
2.4.Команды управления циклами.............................. 10
2.5.Индивидуальные задания.................................. 12
3. Лабораторная работа №7.................................... 14
3.1.Директивы процедур.......................................14
3.2. Индивидуальные задания..................................16
4. Лабораторная работа №8.....................................18
4.1Команды логических операций...............................18
4.2.Команды сдвигов.......................................... 19
4.3. Индивидуальные задания...................................21
Литература.....................................................25
Оглавление.................................................... 26