Контрольная работа по "Системному программированию"
Контрольная работа, 15 Мая 2012, автор: пользователь скрыл имя
Краткое описание
Работа содержит задания по дисциплине "Системное программирование" и овтеты на них
Файлы: 1 файл
Контрольная работа.doc
— 70.00 Кб (Скачать)МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УО
«ВИТЕБСКИЙ ГОСУДАРСТВЕННЫЙ
ПОЛИТЕХНИЧЕСКИЙ
КОЛЛЕДЖ»
Контрольная работа №1
по
дисциплине «Системное
программирование»
ВГПК.400101.К10.029-ЛУ
Исполнитель
учащийся группы 11ПЗз-5
_____________Лешкевич А.А.
«_____»
___________________
Вариант №10
Теоритический
вопрос: Операнды, классификация, описание,
примеры.
Возможно провести следующую классификацию операндов:
- постоянные, или непосредственные, операнды
- адресные операнды
- перемещаемые операнды
- счетчик адреса
- регистровый операнд
- базовый и индексный операнды
- структурные операнды
- Записи
Характеристика операндов из приведенной классификации:
- Постоянные или непосредственные операнды — число, строка, имя или выражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в память. К примеру, оно может быть определено операторами equ или =.
num equ 5
imd = num-2
mov al,num ;эквивалентно mov al,5
;5 здесь непосредственный операнд
add [si],imd ; imd=3 - непосредственный операнд
mov al,5 ;5
- непосредственный операнд
В данном фрагменте определяются две константы, которые затем используются в качестве непосредственных операндов в командах пересылки mov и сложения add.
- Адресные операнды — задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения
Пример:
mov ax,0000h
mov ds,ax
mov ax,ds:0000h ;записать слово в ax из области памяти по
;физическому
адресу 0000:0000
Здесь третья команда mov имеет адресный операнд.
- Перемещаемые операнды — любые символьные имена, представляющие некоторые адреса памяти. Эти адреса могут обозначать местоположение в памяти некоторых инструкции (если операнд — метка) или данных (если операнд — имя области памяти в сегменте данных).
- Перемещаемые операнды отличаются от адресных тем, что они не привязаны к конкретному адресу физической памяти. Сегментная составляющая адреса перемещаемого операнда неизвестна и будет определена после загрузки программы в память для выполнения.
Пример:
data segment
mas_w dw 25 dup (0)
…
code segment
…
lea si,mas_w
;mas_w - перемещаемый операнд
В этом фрагменте mas_w — символьное имя, значением которого является начальный адрес области памяти размером 25 слов. Полный физический адрес этой области памяти будет известен только после загрузки программы в память для выполнения.
- Счетчик адреса — специфический вид операнда. Он обозначается знаком $.
Специфика этого операнда в том, что когда транслятор ассемблера встречает в исходной программе этот символ, то он подставляет вместо него текущее значение счетчика адреса. Значение счетчика адреса, или, как его иногда называют, счетчика размещения, представляет собой смещение текущей машинной команды относительно начала сегмента кода.
В формате
листинга счетчику адреса соответствует
вторая или третья колонка (в зависимости
от того, присутствует или нет в
листинге колонка с уровнем вложенности)
К примеру, обработка директив ассемблера не влечет за собой изменения счетчика. Директивы, в отличие от команд ассемблера, — это лишь указания транслятору на выполнение определенных действий по формированию машинного представления программы, и для них транслятором не генерируется никаких конструкций в памяти. В качестве примера использования в команде значения счетчика адреса можно привести следующий:
jmp $+3 ;безусловный переход на команду mov
cld ;длина команды cld составляет 1 байт
mov al,1
- Регистровый операнд — это просто имя регистра. В программе на ассемблере можно использовать имена всех регистров общего назначения и большинства системных регистров.
mov al,4 ;константу 4 заносим в регистр al
mov dl,pass+4 ;байт по адресу pass+4 в регистр
dl
add al,dl ;команда с регистровыми
операндами
- Базовый и индексный операнды. Этот тип операндов используется для реализации косвенной базовой, косвенной индексной адресации или их комбинаций и расширений.
- Структурные операнды используются для доступа к конкретному элементу сложного типа данных, называемого структурой.
- Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.
Операнды
являются элементарными компонентами,
из которых формируется часть
машинной команды, обозначающая объекты,
над которыми выполняется операция.
Практические задания
Задание 1 (линейная программа). Решить задачу, составить .ехе файл
- В регистр AL записать число FAh. Сдвинуть логически это число на 3 разряда влево. Сложить логически полученный результат с числом F8h. Результат инвертировать, сохранить в BL.
Решение:
model Small
.Stack 100h;
.data x dw? <-> зарезервировали место для ответа
.code
Start
mov ax,@ data
mov ds,ax
xor ax,ax
mov al,0FAh
SHL al,3
ADD al,0F8h
MUL bl; результат в ax
mov x,ax
mov ax,4c 00h
int 21h
end Start
Задание 2 (система уравнений). Решить задачу, составить .com файл
Решение:
prg segment para public 'code'
assume cs:prg, ds:prg, es:prg, ss:prg
org 100h
Start:
jmp go x db
z db ?
go:
cmp x,4; сравнение
jBE m;
cmp x,10
jAE n
mov al,3
mul x;3x
DEC al;3x+2y
jmp exit
m: ADD x,23
mov al,x
jmp exit
n: mov al,x
mul x;x*x-5
exit: mov z,al
ret
prg endS
end Start
Задание 3 (линейные массивы). Решить задачу, составить .ехе файл
Дан массив N, состоящий из 8 слов. Маскировать единицей 0, 1, 10, 11 разряды каждого элемента массива.
Решение:
model Small
.Stack 100h
.data
mas dw 0123, 4576, 231, ...
.code
Start: jmp go
mov cx,8
mov si,0
m:AND mas [si], 0F3FDh
inc si
inc si
loop
m
mov ax, 4c00h
int 21h
end Start
Задание 4 (матрица). Решить задачу, составить .com файл
В матрице 2*5, состоящей из однобайтных чисел, вычислить логические произведения элементов, значение которых больше 2F по строкам.
Решение:
prg segment para public 'code'
assume cs:prg, ds:prg, es:prg, ss:prg
org 100h
Start:
jmp go
mas db
xor dx, dx; подсчет количества
mov bx,0
mov cx,2; количество строк
m2: push cx
mov si,0
mov cx,5
m1: cmp mas [bx] [si], 2F
jle m
inc dl; dl+1
m: inc si; переход в строке к следующему элементу
loop m1
; выводим dl на экран
mov ah, 02h; функция для вывода числа на экран
ADD dl, 30h;
int 21h
xor dx, dx
ADD bx, 2; переходим к следующей строке
pop cx
loop m2
ret
prg endS
end Start
Задание 6 (структуры). Решить задачу, составить .com файл
Поля структуры: ФИО и оценки по физике, математике и геометрии. Необходимо выдать ФИО учащихся с оценкой меньшей 3-х баллов.
Решение:
prg segment para public 'code'
assume cs:prg, ds:prg, es:prg, ss:prg
org 100h
Start:
jmp go
worker struc
fio db 25 dup (‘_’)
fiz db ?
mat db ?
geom db ?
assessment dw?
worker endS
mas worker <’Ivanov$’,fiz6>,
<’Ivanov$’,mat7>,
<’Ivanov$’,geom2>,
mov cx,3
lea si, mas
m: cmp [si]. assessment, 3
jae m1
lea dx, [si]. fio
mov ah, 09h
int 21h
m1: ADD si, type worker
lopp m
ret
prg endS
end Start
Задание 7 (процедуры). Используя процедуру, решить задачу, составить .ехе файл:
В матрице 4*4, состоящей из однобайтных элементов, удвоить все элементы.
Решение:
model Small
.Stack 100h
.data
mas db 1,2,3,4,5,6,7,1,2,3, …
.code
Start:
mov si,0
mov cx,16
m: xor ax,ax
mov al, al
mov mas[si],al
inc si
loop m
mov ax, 4c00h
int 21h
end Start