Для защиты лабораторной работы каждым студентом должен быть написан отчет о лабораторной работе, оформленный в отдельной тетради для лабораторных работ по курсу «Вычислительные машины, системы и сети», включающий тему, цель работы и содержащий следующие пункты:
1. Основные сведения по программированию на ассемблере.
2. Листинг программы с комментариями на каждую команду (или группы команд, логически связанные).
3. Заполненная таблица хранения переменных в сегменте данных.
4. Заполненная таблица машинных кодов.
5. Полное описание каждого прерывания, используемого в программе;
6. Пояснение, что происходит в строках 20-22.
7. Пояснение, что делает программа.
8. Что произойдет, если в строке 23 поменять переменную message на переменную fin?
Контрольные вопросы
1. Что такое язык ассемблера? Как он связан с машинным языком?
2. Зачем нужны подпрограммы на языке ассемблера в программах на языках высокого уровня?
3. Перечислите этапы разработки программы на языке ассемблера.
4. Какие существуют режимы работы ассемблера? Чем они отличаются?
|
|
5. Напишите формат команды языка ассемблер.
6. Что такое программное прерывание?
7. Для чего нужны входные и выходные параметры сервиса?
8. Как определяются переменные в программе на языке ассемблера?
9. Как определяются сегменты в программе?
10. Каких типов бывают сегменты?
Задание на занятие
1. Сделать исполняемый модуль (файл с расширением exe) для программы:
1) masm
2) model small
3).stack 100h
4).data
5) message db 'Запустите эту программу в отладчике$'
6) perem_1 db 0ffh
7) perem_2 dw 3a7fh
8) perem_3 dd 0f54d567ah
9) mas db 10 dup ('0')
10) pole_1 db 5 dup (?)
11) adr dw perem_3
12) adr_full dd perem_3
13) fin db 'Конец сегмента данных программы$'
14).code
15) start:
16) xor bh,bh
17) mov dx,0a0fh
18) mov ah,02h
19) int 10h
20) mov ax,@data
21) mov ds,ax
22) mov ah,09h
23) mov dx, offset message
24) int 21h
25) mov ax,4c00h
26) int 21h
27) end start
2. Определить структуру программы (режим программирования, количество и виды сегментов, модель памяти)
3. Определить с помощью электронного справочника, что делает каждое программное прерывание, и с помощью Turbo Debugger – какие регистры меняются после каждого из них.
4. C помощью программы Turbo Debugger определить:
4.1. как хранятся переменные в сегменте данных. Заполните следующую таблицу:
Имя переменной | Значение в теле программы | Смещение в сегменте данных | Значение в сегменте данных |
4.2. машинные коды используемых команд. Заполните следующую таблицу, записывая команды по алфавиту:
Команда на языке ассемблера | Машинный код в шестнадцатеричном виде |
Лабораторная работа №7
Команды переходов и логических операций
Продолжительность: 4 часа.