Практическая часть. Задание № 4.1.Составить программу для ввода с клавиатуры целых десятичных чисел со знаком

Задание № 4.1.Составить программу для ввода с клавиатуры целых десятичных чисел со знаком. Если введено не число, то выводится сообщение об ошибке и ввод прекращается. Окончание ввода – нажатие клавиши Enter.

Задание № 4.2.Напишите программу для ввода с клавиатуры вещественных чисел без знака. Любой символ, отличающийся от цифры или точки, должен быть пропущен без отображения на экран. Окончание ввода – нажатие клавиши Enter.

Задание № 4.3.Составить программу ввода с клавиатуры десятичного числа с любым числом разрядов от 1 до 5, ввод каждого числа завершается нажатием клавиши <Enter>; предусмотреть проверку вводимых символов на их принадлежность десятичному числу (нецифровые символы не воспринимаются и не отображаются на экране). Результат преобразования загружается в регистр ах.

Задание № 4.4.Составить программу для решения задачи (по вариантам).

1. Дан массив из десяти целых знаковых чисел (слов или байтов). Требуется:

2. Найти количество отрицательных чисел. Массив байтов.

3. Найти суммы всех положительных и отрицательных чисел. Массив слов.

4. Найти среднее арифметическое чисел. Массив слов.

5. Найти количество чисел больших 10h. Массив слов.

6. Найти сумму абсолютных величин. Массив байтов.

7. Найти количество положительных чисел. Массив слов.

8. Поменять местами пары соседних чисел. Массив слов.

9. Переставить числа в обратном порядке. Массив байтов.

10. Заменить все отрицательные числа нулями. Массив слов.

11. Определить симметричен ли заданный массив. Массив байтов.

Задание № 4.5.Максимум и минимум.

Напишите программу поиска максимального и минимально значения в массиве целых чисел.

Задание № 4.6.Сортировка.

Напишите программу сортировки массива целых чисел.

Контрольные вопросы и задания.

1. Какое максимальное количество байтов могут обойти команды короткий jmp и относительный переход? Каков машинный код операнда при этом генерируется?

2. Команда jmp начинается на 0624h. Определите адрес перехода, если 16-тиричный объектный код для операнда команды jmp: а) 27, б) 6B, в) С6

3. Пусть регистры AX и BX содержат знаковые данные, а CX и DX – беззнаковые. Определите команды cmp (где необходимо) и команды безусловного перехода для следующих проверок:

a) значение в DX больше, чем в CX

b) значение в BX больше, чем в AX

c) CX содержит нуль

d) было ли переполнение

e) значение в BX равно или меньше, чем в AX

f) значение в DX равно или меньше, чем в CX

4. На какие флаги воздействует следующие события и какое значение этих флагов?:

a) произошло переполнение;

b) результат отрицательный

c) результат нулевой;

d) обработка в одношаговом режиме;

e) передача данных должна быть справа налево.

5. Какой флаг используется при сравнении чисел без знака ?

6. Какой флаг используется при сравнении чисел со знака ?

7. Какой условный переход использует для проверки содержимого регистра общего назначения ?

8. Какое различие между командами ja и jnbe ?

9. Можно ли при переходе по условию сделать переход на метку в любом месте сегмента?

10. После выполнения команды jb какой флаг должен быть установлен ?

11. Пусть команда CMP сравнивает два операнда. Для каждой из команд условного перехода, показанной в таблице 4.4., определено состояние четырех флагов. В последнем столбце отметьте, будет ли совершаться переход.

Таблица 4.4.

Условные переходы, установка флагов.

  команда переполнение знак нуль перенос Переход
jnc  
ja  
jnb  
jbe  
joe  
jnle  
jns  
jng  
je  
jnae  

12. После выполнения следующих команд, какие значения будут в регистрах AL и BL ?

.data

val_1 db 6Bh

val_2 db 3Fh

.code

mov al,val_1

mov bl, val_2

and ax, 0B6h

cmp al, bl

ja label_1

mov al, bl

jmp exit

label_1:

mov bl, al

exit:

13. После выполнения следующих команд, какие значения будут в регистрах AL и BL ?

.data

val_1 db 6Bh

val_2 db 3Fh

.code

mov al,val_2

mov bl, val_1

or bl, 0fh

sub al, bl

jb label_1

mov al, 1

jmp exit

label_1:

mov bl, 1

exit:

14. После выполнения следующих команд, какие значения будут в регистрах CX и DX и SI?

.data

val_1 db 6Bh

val_2 db 3Fh

.code

mov al,val_1

mov bl, val_2

and ax, 0B6h

cmp al, bl

ja label_1

mov al, bl

jmp exit

label_1:

mov bl, al

exit:

15. После выполнения следующих команд, какие значения будут в регистрах CX и DX и SI и переменной val_1? (Предположите, что val_1 размещена по адресу 0006).

.data

val_1 dw 026Ah

val_2 dw 3FD9h

.code

mov si, offset val_1

mov ex, [si]

add si, 2

mov dx, [si]

xchg dx, val_1

and dx, 0FF00h

again:

dec word ptr [si]

dec dx

crop dx, 01FFh

loopz again

[1] Регистр – это высокоскоростная память, размещенная внутри процессора.

[2] Буква Х в названии регистров общего назначения от слова eXetended, расширенный: в процессоре 8080 были байтовые регистры A, B, C и D, которые затем расширили до размера слова.

Наши рекомендации