Автор: Пользователь скрыл имя, 15 Мая 2012 в 02:17, контрольная работа
Работа содержит задания по дисциплине "Системное программирование" и овтеты на них
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УО
«ВИТЕБСКИЙ ГОСУДАРСТВЕННЫЙ
ПОЛИТЕХНИЧЕСКИЙ
КОЛЛЕДЖ»
Контрольная работа №1
по
дисциплине «Системное
программирование»
ВГПК.400101.К10.029-ЛУ
Исполнитель
учащийся группы 11ПЗз-5
_____________Лешкевич А.А.
«_____»
___________________
Вариант №10
Теоритический
вопрос: Операнды, классификация, описание,
примеры.
Возможно провести следующую классификацию операндов:
Характеристика операндов из приведенной классификации:
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 (линейная программа). Решить задачу, составить .ехе файл
Решение:
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
Информация о работе Контрольная работа по "Системному программированию"