Assume cs:cod

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


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



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