Контрольная работа по "Системному программированию"

Автор: Пользователь скрыл имя, 15 Мая 2012 в 02:17, контрольная работа

Краткое описание

Работа содержит задания по дисциплине "Системное программирование" и овтеты на них

Файлы: 1 файл

Контрольная работа.doc

— 70.00 Кб (Скачать)

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

УО  «ВИТЕБСКИЙ ГОСУДАРСТВЕННЫЙ  ПОЛИТЕХНИЧЕСКИЙ  КОЛЛЕДЖ» 
 
 
 
 
 

Контрольная работа №1

по  дисциплине «Системное программирование» 

ВГПК.400101.К10.029-ЛУ 
 
 
 
 
 
 
 

                    Исполнитель

                    учащийся группы 11ПЗз-5

                    _____________Лешкевич А.А.

                    «_____» ___________________ 
                     

                                                                 2012

Вариант №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

Информация о работе Контрольная работа по "Системному программированию"