Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет ОС 1.doc
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
301.57 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ (НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)» в г. Смоленске

Задания:

1) Напишите и отладьте программу, которая выводит на экран 64 ascii символа, начиная с символа пробела. Исходный текст программы имеет следующий вид:

; кодовый сегмент

cseg segment 'code'

assume cs:cseg, ds:dseg, ss:sseg

mypr proc

mov ax,sseg ;в регистр ax записывается указатель

;на начало cтекового сегмента

mov ss,ax ; в сегмент стека записывается адрес

;начала стека

mov sp, offset TOS ; в указатель стека

;записывается адрес стека

mov ax,dseg ; в регистр ах записывается

;адрес сегмента данных

mov ds,ax ; адрес сегмента данных

;записывается в регистр ds

mov cx,64 ; в регистр сх записывается

;счетчик цикла - 64

mov al,' ' ; в регистр al записывается код

;пробела

mov si,0 ; в регистр si записывается 0

;(смещение в строке mes)

f1: mov mes[si],al ; содержимое регистра al

; записывается в строку mes

; (индекс в строке содержится в

;регитсре si)

inc si ; увеличение индекса строки на 1

inc al ; увеличение кода символа на 1

loop f1 ; содержимое регистра cx

;уменьшается на 1, если в сх –

;не 0, то переход на метку f1

mov ah,40h ; функция вывода на устройство

;или в файл

mov bx,1 ; вывод на экран

mov cx,64 ; число выводимых байт

mov dx,offset mes ; выводимое сообщение находится

;по адресу ds:dx

int 21h ; прерывание, функция

; прерывания находится в

; регистре ah

mov ax,4c00h ; функция завершения работы

; программы с кодом завершения

Int 21h ; прерывание, функция

; прерывания находится в

; регистре ah

mypr endp

cseg ends

; сегмент данных

dseg segment

mes db 64 dup('~')

dseg ends

; сегмент стека

sseg segment

dw 30 dup(?)

TOS label word

sseg ends

end mypr

2) Напишите программу, которая выводит на экран строку сообщения, например, сообщение «Hello, World!». Самостоятельно разберите назначение каждой команды.

text segment 'code'

assume cs:text, ds:data

begin:

MOV AX, data

MOV DS,AX

MOV AH,09h

MOV DX, offset metka

INT 21h

MOV AX,4C00h

INT 21h

text ends

data segment

metka db "hello,World!",0dh,0ah,"$"

data ends

end begin

1) Изучив процесс разработки программы, выполнили следующие действия: текст программы ввели с помощью текстового редактора Блокнот. Файл сохранили на диск С с расширением asm. (cikl.asm). При использовании пакета TASM получение объектного модуля исходного файла производится программой (ассемблером) tasm.exe. пакет так же сохранили на диск. Трансляция программы cikl.asm выполняется командной строкой вида: TASM.EXE /zi cikl, , , В результате на диске созданы файлы cikl.obj, cikl.lstlist, cikl.crf. Далее - компоновка. Результатом работы компоновщика является создание загрузочного файла с расширением .ехе. Для выполнения примера следует запустить nporpaммy tlink.exe командной стро­кой вида tlink.exe /v cikl.obj. В результате получится исполняемый модуль с расширением .ехе — cikl.exe. вызываем его с помощью командной строки.

2) Для выполнения второго задания выполняем аналогичные действия, создав файл hello.asm. результат выполнения программы, а так же последовательность команд в командной строке представлены на рисунке 1.

Рисунок 1