Практика информатика. Устройство компьютера
Скачать 449.96 Kb.
|
Практические работыДля выполнения некоторых из этих работ используется учебный компьютер «ЛамПанель», который можно загрузить со страницы http://kpolyakov.spb.ru/prog/lamp.htm. |
| Марка | Цена |
Центральный процессор | | |
Объём оперативной памяти | | |
Объём жёсткого диска | | |
Видеокарта | | |
Звуковая карта | | |
Монитор | | |
DVD-дисковод (если нужно) | | |
Операционная система | | |
Клавиатура | | |
Мышь | | |
Принтер (если нужно) | | |
Сканер (если нужно) | | |
| | |
| | |
| | |
| | |
| | |
| | |
Исследование компьютера
Аппаратное обеспечение
Используя любые программы, предоставляющие информацию о компьютере (по указанию учителя), определите для вашего компьютера:
Тип центрального процессора | Intel Core i3 3227U 1.9 ГГц |
Размер оперативной памяти | 4Гб |
Тип видеоадаптера | NVIDIA GeForce GT720M 1ГБ |
Объём видеопамяти | 2048Мб |
Тип сетевой карты | LAN 1000 Мбит/с |
Тип звуковой карты | Asus xonar ae |
Объём жёсткого диска | 500Гб |
В операционной системе Windows можно использовать бесплатные версии утилит CPU-Z, SiSoft Sandra, SIW, Speccy; в операционной системе Linux – программы I-nex, Hardinfo и другие.
Программное обеспечение
Используя любые программы и средства, предоставляющие информацию о программном обеспечении компьютера (по указанию учителя), определите для вашего компьютера:
Название и версию операционной системы | Windows 11 64-разрядная |
Офисный пакет | Microsoft office |
Текстовый процессор | Microsoft word |
Электронные таблицы | Microsoft excel |
Графический редактор | Paint.net |
Браузеры | Opera |
Среды программирования | Microsoft Visual Studio |
В операционной системе Windows для выполнения работы можно использовать Панель управления или специальные утилиты, в операционной системе Linux – Центр приложений или подобные средства.
Моделирование работы компьютера
Возможности программы «ЛамПанель»
Программа «ЛамПанель» – это модель процессора, который управляет ламповой панелью, то есть, может с помощью специальных команд зажигать и гасить определенные лампочки.
Вы уже знаете, что в области 1 на рисунке показано содержание регистров, в области 2 записан текст программы. Сегодня мы познакомимся еще с двумя областями:
3 – отладчик
4 – оперативная память
Коды в памяти
Память (область 4) разбита на ячейки размером 1 байт = 8 бит. Значение каждой ячейки записывается в виде двух шестнадцатеричных цифр – каждая из них кодируется ровно четырьмя битами.
Каждая строчка в окне 4 содержит 8 байт памяти. Число слева, выделенное красным цветом – это адрес (номер) первой ячейки, показанной в этой строке. Справа от шестнадцатеричных кодов показана символьная строка из 8 символов – те же данные, только представленные как символы.
Данные можно записывать в память напрямую, используя команду DATA, например, можно набрать такую программу:
DATA 3132
DATA FFFF
Если теперь нажать клавиши Ctrl+F9, происходит ассемблирование («сборка») – перевод программы в машинные коды, затем эти коды записываются в память:
Посмотрим на окно отладчика. Каждый байт памяти имеет собственный адрес, адреса соседних байтов отличаются на единицу. Однако байтовые ячейки, как правило, слишком малы для хранения чисел (как целых, так и дробных) и машинных команд. Поэтому процессор должен уметь работать с более крупными блоками данных, которые часто называют машинными словами. Программа «ЛамПанель» умеет работать с 16-битными словами, то есть может сразу читать из памяти (в регистр) и записывать в память двухбайтный блок.
Любая машинная команда состоит из целого числа 16-битных слов, то есть из четного числа байтов. По договоренности адресом двухбайтового слова считается меньший из адресов входящих в него байтов, причем адрес этот обязательно должен быть четным.
В нашем случае память записаны два 16-битных слова (4 байта), 313216 и FFFF16, причем эти слова процессор распознал как две команды:
MOV R3,R2
STOP
Такой перевод из кодов команд в их символьное обозначение называется дизассемблирование (обратное ассемблирование, «разборка»).
Эту программу можно запустить, нажав на клавишу F9, и убедиться, что она действительно скопирует содержимое регистра R3 в регистр R2.
Теперь посмотрим на окно «Память»:
Видим, что байты 16-битного слова расположены «наоборот» – сначала младший байт 3216, а затем – старший 3116. Кроме того, в правой части окна видно, что эти коды соответствуют символам «21яя». Все специальные коды (не соответствующие каким-то принятым изображениям символов) обозначены точками. Таким образом, компьютер, основанный на архитектуре фон Неймана, не может самостоятельно различить, где данные, а где команды.
Выполнение программы
Теперь выполним программу в пошаговом режиме, нажав на клавишу F8. После этого в регистр PC (англ. programcounter – программный счётчик) записывается стартовый адрес 0, с которого начинается выполнение программы. В окне Отладчик зелёным цветом выделена первая команда. Она еще не выполнялась, но будет выполнена при повторном нажатии F8. При этом регистр PC, будет указывать на начало следующей команды (которая еще не выполнялось).
Таким образом:
регистр PC содержит адрес команды, которая будет выполнена следующей; как только эта команда будет выбрана из памяти, регистр-счетчик автоматически будет увеличен так, чтобы снова указывать на очередную команду;
процессор воспринимает байты, расположенные по этому адресу, как код команды (а не как данные);
программа всегда начинает выполняться с некоторого известного (в данном случае – нулевого) адреса, который «вшит» в компьютер и автоматически заносится в регистр PC при его включении;
программа останавливается, когда будет выполнена команда STOP с кодом FFFF16.
Заметим, что команды, содержащие числовые данные, могут занимать в памяти два 16-битных слова, например:
Работа с памятью. Переменные
Для того, чтобы обрабатывать данные из оперативной памяти, процессор должен загрузить их в регистры. Поскольку программа и данные расположены в одной области памяти, размещать данные можно сразу после команды STOP:
...
STOP
D:
DATA 1234
Метка D обозначает переменную. Загрузить её значение в регистр очень просто, нужно поставить имя переменной как источник данных:
MOV D, R0
Обратная операция – запись в переменную содержимого регистра – выполняется аналогично:
MOV R1, D
Обработка отдельных байтов
Как вы знаете, минимальная ячейка памяти, имеющая собственный адрес, называется байтом. В современных компьютерах 1 байт составляют 8 бит. Поэтому компьютер должен иметь возможность работать не только с 16-битными словами, но и с отдельными байтами.
В команде DATA можно задавать не только шестнадцатеричные числа, но и символьные строки, взятые в кавычки.
D:
DATA "ABCDEFG"
В этом случае символы заданной строки записываются в память последовательно, начиная с первого.
Нам нужно будет обращаться ко всем символам строки последовательно. Для этого запишем адрес строки в какой-нибудь регистр, например, в R0:
MOV @D,R0
Здесь знак @ обозначает операцию взятия адреса, а вся команда читается как «записать адрес переменной D в регистр R0».
Теперь можно использовать так называемую косвенную адресацию, то есть получить значение ячейки памяти по её адресу:
MOV (R0), R2
Эта команда запишет в R2 машинное слово (в программе Лампанель это 2 байта), расположенное по адресу, который хранится в R0. Команда
MOV R2, (R0)
наоборот, запишет значение R2 в переменную, адрес которой в R0.
Чтобы работать с отдельными байтами, используют байтовые версии команд, которые заканчиваются на букву B. Например, байтовый вариант команды MOV называется MOVB. Команда
MOVB (R0),R2
загружает один байт из памяти (расположенный по адресу, который записан в R0) в регистр R2. Теперь рассмотрим такую задачу – преобразовать все заглавные латинские буквы в строчные. Для этого нужно посмотреть, чем отличаются коды заглавных и строчных букв:
A: 01000001 a: 01100001 | B: 01000010 b: 01100010 | C: 01000011 c: 01100011 | D: 01000100 d: 01100100 |
Оказывается, коды заглавных и соответствующих строчных букв отличаются одним битом (этот пятый бит выделен желтым фоном). Поэтому для того, чтобы получить из заглавной буквы строчную букву, нужно установить 5-й бит (сделать его равным 1). Для этого можно, например, использовать логическую операцию «ИЛИ» с маской 002016, в которой 5-й бит установлен, а остальные – сброшены:
OR 20,R2
Затем нужно записать результат обратно в память, по адресу, находящемуся в R0:
MOVB R2,(R0)
Для перехода к следующему символу просто увеличиваем R0 на единицу
ADD 1,R0
и выполняем те же самые команды. Отметим, что две команды
MOVB R2,(R0) ; записать байт в память
ADD 1,R0 ; к следующему байту
можно заменить на одну, которая делает то же самое:
MOVB R2,(R0)+ ; записать байт в память и перейти
; к следующему байту
Чтобы обработать 6 символов, можно организовать цикл со счётчиком в регистре R1:
MOV @D,R0 ; адрес данных – в R0
MOV 6,R1 ; счётчик шагов цикла (сделать 6 раз)
M:
MOVB (R0),R2 ; прочитать байт из памяти
OR 20,R2 ; заглавную – в строчную
MOVB R2,(R0)+ ; записать байт в память и перейти к следующему
SUB 1,R1 ; уменьшить счетчик
JNZ M ; если не все сделали – переход на метку M
STOP
D:
DATA "ABCDEF"
Задание на практическую работу
Запустите тренажёр «ЛамПанель». Введите программу
DATA 01D0
DATA 3536
DATA 0101
DATA FFFF
Используя дизассемблер программы «ЛамПанель», запишите эту программу на языке ассемблера:
Программа:
Запишите код команды STOP:
Запишите содержимое памяти, в которой располагается эта программы, в виде последовательности символов:
Как вы думаете, какой код будет иметь команда MOV R1,R3? Проверьте свой ответ с помощью программы.
Блок данных программы выглядит так.
A:
DATA 1234
B:
DATA 4321
SUM:
DATA 0
Напишите программу, которая складывает переменные A и B и записывает результат в переменную SUM:
Программа:
Напишите программу, которая преобразует строчные буквы в заглавные, используя байтовые операции. Блок данных может выглядеть так:
D:
DATA "abcdefgh"
Программа:
Усовершенствуйте программу так, чтобы цикл останавливался не после заданного количества букв, а тогда, когда очередной прочитанный байт равен 0. Возможно, вам понадобятся другие команды условного или безусловного перехода – изучите их по справочной системе (клавиша F1).
Программа:
Поскольку в компьютере с архитектурой фон Неймана программа и данные расположены в одной области памяти, программа может менять свой собственный код. Напишите какую-нибудь программу, которая изменяет сама себя во время работы.
Программа:
Использование облачных хранилищ данных
Для выполнения работы можно использовать одно из бесплатных облачных хранилищ данных, например, Облако Mail.Ru (https://cloud.mail.ru), Яндекс.Диск (https://disk.yandex.ru) или Google Диск (https://drive.google.com).
Примечание для учителя: Ссылку в задании 1 рекомендуется заменить на свою собственную, предназначенную именно вашим ученикам.
Скачайте файл из облачного хранилища по ссылке https://yadi.sk/i/mC2ajBgzdYsVYA.
Определите данные файла:
Название файла | |
Тип данных | |
Размер файла | |
Дата последнего изменения | |
Адрес сайта, где есть похожие материалы | |
(выполнение задания в парах)
Зарегистрируйтесь в одном из облачных хранилищ.
Загрузите в облачное хранилище любой файл по вашему выбору.
Создайте ссылку для получения доступа к этому файлу (например, в Яндекс.Диске для этого нужно щёлкнуть по кнопке или выбрать этот пункт из контекстного меню).
Перешлите ссылку своему напарнику и предложите ему скачать файл и определить его характеристики, как в п. 2.
Название файла | |
Тип данных | |
Размер файла | |
Дата последнего изменения | |
(выполнение задания в парах)
В вашем хранилище создайте новую папку для совместной работы.
Настройте общий доступ для этой папки, вышлите приглашение напарнику на электронную почту.
Загрузите в папку какой-либо файл. Предложите напарнику скачать его, используя общий доступ к папке (а не прямую ссылку на файл).
Скачайте файл из папки напарника и определите его характеристики:
Название файла | |
Тип данных | |
Размер файла | |
Дата последнего изменения | |
Предложите напарнику загрузить файл в вашу папку с общим доступом. Определите его характеристики:
Название файла | |
Тип данных | |
Размер файла | |
Дата последнего изменения | |
Загрузите свой файл в папку напарника, используя общий доступ к ней.
Процессор и устройства вывода
Возможности программы «ЛамПанель»
Наконец, мы подошли к самой интересной возможности программы «ЛамПанель» - управлению ламповой панелью. Ламповая панель (цифра 1 на рисунке) – это устройство вывода.
Обмен данными процессора и внешнего устройства происходит через порты – регистры контроллера внешнего устройства. У ламповой панели 8 портов, которые называются P0, P1, P2, P3, P4, P5, P6 и P7. Каждый порт «отвечает» за одну строку лампочек, например, для того, чтобы «зажечь» всю верхнюю строку нужно записать в порт P0 код FFFF16 (все 16 бит – единичные). Для этого можно использовать, например, команды
MOV FFFF, R0
OUT R0, P0
К сожалению, записать число сразу в порт нельзя – сначала нужно записать его в регистр (в данном примере – в R0), а потом – из регистра в порт.
Для того, чтобы изменить второй сверху ряд лампочек, нужно записать новое значение в P1 и т.д.; последний ряд управляется портом P7. Например, для того, чтобы все ряды лампочек горели одинаково, можно записать нужный код сначала в регистр:
MOV AAAA, R0
а затем из этого регистра – во все порты:
OUT R0, P0
OUT R0, P1
…
OUT R0, P7
Здесь многоточие обозначает аналогичные команды записи содержимого регистра R0 в порты P2…P6. Однако вместо последней серии из 8 команд можно использовать всего одну:
SYSTEM 2
Эта команда вызывает системную процедуру с номером 2, находящуюся в ПЗУ компьютера. Для того, чтобы увидеть все процедуры, которые записаны в ПЗУ, нужно щелкнуть по кнопке или выбрать пункт верхнего меню Программа – Просмотр ПЗУ. После этого появляется окно, в левой части которого перечислены все системные процедуры (с их номерами), а в правой части показывается код выбранной процедуры:
В этом списке есть много полезных процедур, в том числе
0 – очистка экрана (погасить все лампочки);
1 – зажечь все лампочки на панели;
3-4 – прокрутка изображения вниз и вверх;
6-9 – логические операции;
A16-E16 – сдвиги битов;
1216 – вывод числа, записанного в регистр R0, в десятичной системе счисления;.
1316 – вывод числа, записанного в регистр R0, в шестнадцатеричной системе счисления.
Обратите внимание, что номер системной процедуры задается в шестнадцатеричной системе счисления.
Рассмотрим еще одну задачу: вывести на экран рисунок, закодированный в виде шестнадцатеричных чисел (бит, равный единице, обозначает горящую лампочку). Для этого нужно сначала записать коды рисунка в память. Поскольку наш компьютер основан на архитектуре фон Неймана, в нем программа и данные находятся в одной области памяти. Поэтому данные можно записать с помощью специальной команды DATA после команды STOP:
... ; здесь будет программа
STOP
M: ; метка – начало блока данных
DATA AAAA ; код первой строчки
DATA 5555
DATA AAAA
DATA 5555
DATA AAAA
DATA 5555
DATA AAAA
DATA 5555 ; код последней строчки
Для того, чтобы вывести этот рисунок на экран, нужно записать его адрес в регистр R0 и вызвать системную процедуру с номером 5:
MOV @M, R0 ; записать адрес метки M в регистр R0
SYSTEM 5 ; вывести на экран рисунок, адрес которого в R0
STOP
M:
DATA AAAA ; код первой строчки
...
Задание на практическую работу
Запишите в таблицу минимальное и максимальное числа, которые можно вывести на ламповую панель, если использовать шестнадцатеричную систему:
минимальное число | максимальное число | ||
десятичное | шестнадцатеричное | десятичное | шестнадцатеричное |
| | | |
Составьте программу, после выполнения которой ламповая панель выглядит так:
Программа:
Как вы думаете, что выведет приведенная выше (в теоретической части) программа, которая вызывает системную процедуру с номером 5? Проверьте ваш ответ с помощью тренажёра.
Ответ (вставьте скриншот ламповой панели):
Закодируйте изображение домика и выведите его на экран.
Программа:
Скриншот ламповой панели:
Добавьте в предыдущую программу команды, которые сначала шифруют изображение, используя операцию «исключающее ИЛИ» с маской BCA716, а затем – восстанавливают исходное изображение. При изменении маски программа не должна изменяться. Изучите текст системной процедуры, которую вы используете.
Программа:
Напишите программу, которая делает «бегущую строку» из рисунка-домика.
Программа:
Напишите программу, которая организует «обратный отсчет» от 10 до 0, а затем выводит рисунок с домиком и останавливается.
Программа: