- •Введение
- •Порядок оформления срс по дисциплине «Системное программирование»
- •1. Постановка задачи.
- •2. Краткое описание алгоритма.
- •3. Текст программы.
- •4 . Результаты тестирования и характеристики
- •Трансляция программы. Компоновка программы. Отладка программы. Утилита make.
- •Арифметические команды: сложение,вычитание, умножение и деление со знаком и без знака.
- •Исследование различных структур данных.
- •4 Результаты тестирования и характеристики
- •Исследование операций над двоичными числами.
- •Команда int-прерывание .
- •Функции для работы с клавиатурой.
- •Вызовы функции, инициируемые прерыванием типа 21
- •Логические команды. Реализация программ разветвляющейся структуры
- •Команды передачи управления.
- •4 . Результаты тестирования и характеристики
- •Организация ввода данных и вывода результатов
- •Реализация алгоритмов работы со строками
- •Цепочные команды
- •Литература
2. Краткое описание алгоритма.
В программе, для перевода семеричного числа из строки в
двоичное число, используется схема Горнера. Для этого в программе
используются процедуры TRANS и PLUS. В ней реализованы следующие
алгоритмы:
а) сложение десятибайтового числа с однобайтовым;
б) деление десятибайтового числа на однобайтовое;
3. Текст программы.
.8086
.MODEL TINY
ASSUME CS: CODE, DS: CODE
data segment
NUM1 DT 0ABCFFFFFFFFFFFFFFFFFH
NUM2 DT 1h;
RES DB 40 DUP(?),'$'
data ends
ORG 100H
CODE SEGMENT
BEGIN:
JMP START
PLUS PROC
CLC
CLD
XOR BX,BX
MOV CX,10
MOV DI,OFFSET NUM1
MOV SI,OFFSET NUM2
L2: LODSB
ADC AL,[DI]
STOSB
LOOP L2
JNC OK
MOV SI,0
OK: RET
PLUS ENDP
TRANS PROC
MOV SI,OFFSET NUM1
MOV DI,OFFSET RES+39
MOV CX,10
MOV DX,4
TL1: PUSH CX
LODSB
MOV CX,DX
TL2: CLC
MOV AH,0
DIV DL
ADD AH,30H
MOV [DI],AH
DEC DI
LOOP TL2
POP CX
LOOP TL1
RET
TRANS ENDP
START:
mov AX,data
mov DS,AX
CALL PLUS
CALL TRANS
MOV AH,09
MOV DX,OFFSET RES
INT 21h
mov ah,10h
int 16h
int 20h
CODE ENDS
END BEGIN
4 . Результаты тестирования и характеристики
РАБОТЫ ПРОГРАММЫ.
В результате тестирования программы на различных тестовых примерах были получены правильные результаты. Проверка на переполнение проводится корректно. Примеры не претендуют на полноту проверки, но на всех примерах в программе не было выявлено ошибки.
СРС №2
Трансляция программы. Компоновка программы. Отладка программы. Утилита make.
Цель работы:
- ознакомление с общими принципами построения программ на языке
ассемблера;
- работа с программами TASM.EXE, TLINK.EXE;
- создание командных и исполняемых файлов (*.ЕХЕ,*.СОМ)
1 .Полный цикл создания программы на языке Ассемблера состоит из следующих этапов:
Создание новой программы
…………………………………
Редактирование
текстовый редактор.
…………………………………
Исходный файл Ассемблера (*.asm)
…………………………………..
Ассемблирование (трансляция TASM.EXE)
…………………………………..
Объектный файл *.obj
………………………………
Компоновка ( TLINK.EXE )
исполняемый файл *.ехе
……………………..
Выполнение
………………………………
………Если нужны изменения
…………………………………..
Конец
1.2 В языке Ассемблера имеются операторы 2-х видов: директивы и командные операторы
1.2.1 Директивы служат указаниями Ассемблеру во время ассемблирования, но не транслируются в машинные команды.
Любая программа содержит упрощенные директивы определения сегментов DOSSEG, .MODEL, .STACK, .DATA, .CODE и END. Директивы определения данных позволяют определить переменные в памяти различного размера:
DB - 1 байт
DW - 2 байта = 1 слово
DD - 4 байта = 1 двойное слово
DQ - 8 байт = 1 четвертное слово
DT-10 байт
1.3 Команды (мнемоники инструкций), транслируются (преобразуются) в машинные коды, например, MOV - переслать .,
INC - увеличить содержимое на 1.
В Ассемблере нет команды непосредственной загрузки сегментного регистра, поэтому формирование адреса сегмента данных производится следующим образом: mov ax,@data ;переслать в ах адрес сегмента данных то\ ds,ax переслать в ds содержимое ах
1.4 Изучить файлы Tasmrus.ixt и Tlinkgis.txt (помощь к программам TASM,TLINK и ключи управления), необходимые ключи законспектировать.
1.5 Работаем в NORTON COMMANDER
2. ЗАДАНИЕ 1 (Упрошенное оформление программ)
2.1 Войдите в директорию L1 ,в ней создайте файл с именем HELLO1.ASM. (SHIFT-F4). Введите текст следующей программы (без комментариев). F2-сохранить файл.
Программа 1:
.Programm Hello 1 ( Упрощенное оформление программ )
.model small ;Модель памяти ближнего типа
.stack 1 ООh ;Определяет стек размером l OOh .data ;Начало сегмента данных
Hello DB 'Hello S' ;Зарезервировали .память для
:переменной HELLO
.code ;Начало сегмента кода
start: mov ах. @DATA ; Формирование адреса сегмента
mov ds.ax ; данных
LEA DX.Hello ; Остановить в DX адрес переменюй HELLO
МOV ah.09h ; Функция DOS вывода строки
INТ 21 h ; Вывод строки на экран
MOY ax.4COOh ;Функция DOS завершения
INT21h ; программы
END start ; конец программы
2.2 Создайте исполняемый файл HELLO1.EXE, выполнив ассемблирование и компоновку файла HELLO I. ASM. (Ввод команды завершить клавишей Enter).
2.2.1 Для ассемблирования наберите TASM HELLO I .ASM HELLO 1. ASM будет ассемблироваться в HELLO 1.OBJ
2.2.2 Для компоновки наберите TLINK HELLO 1.OBJ В результате работы получаем файл
HELLO 1 .EXE
2.2.3 Для выполнения программы встаньте курсором
на файл HELLO I .EXE и нажмите Enter или наберите HELLO 1
Погасите левую панель клавишами Ctrl-Fl, чтобы было видно как работает пpoгpaммa HELLOl.EXE.
2.2.4 Внесите изменения в вашу программу, для чего создайте файл HELLO1'1.ASM, в него скопируйте файл HELLO 1. ASM , вместо слова 'HELLO !$' наберите любое' другое слово в кавычках '....' Создайте файл HELLO11.ЕХЕ, используя командный файл.
2.2.5 Создание командного файла. Для ускорения процесса создания исполняемого файла ( п.п.2-2.2.) создайте командный файл с любым именем (в текстовом редакторе), расширением .ВАТ, например. HEL.BAT
HELLO11.EXE
Для запуска командного файла встаньте курсором на файл HEL.BAT .и нажмите клавишу Enter.
2.2.7 Создайте командный файл HEL1 .ВАТ для любой программы,
в этом случае в командном файле вместо имени файла (вашей программы) набирают символы %]
TASM/L%ol
TLINK% 1
%1.ЕХЕ
2.2.8 Для запуска данного командного файла нужно после имени командного файла (без расширения) указать имя вашей программы без расширения (.ASM), например,
HEL1 HELLO11
3.1 Войдите в директорию Е1,в ней создайте файл с именем HELLO2.ASM. Введите текст следующей программы (без комментариев).
F2-сохранить файл.
Программа 2
; Program Hello2 ( Стандартное оформление программ)
OurSiack SEGMENT PARA STACK 'STACK'
DB64DUP(?)
OurStack ENDS
OurData SEGMENT PARA PUBLIC 'DATA'
Hello DB'Hello!S'
OurData ENDS
OurCode SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:OurCode. DS:OurData. SS:OurStack Start: MOV AX,OurData
MOVDS.AX
LEA DX.Hello
MOV AH.09h
INT21H
MOV AH,4Ch
MOVAL,Ooh
INT21h
OurCode ENDS
END Start
Создайте исполняемый файл HELLO2.EXE., выполнив ассемблирование и компоновку файла НЕLLО2.АSМ, используя раннее созданный пакетный файл HEL1.ВАТ (п.2.2.7) клавишей Enter).
3.2.1 Для выполнения программы наведите курсор на файл HELLO2.EXE и нажмите Enter или наберите HELLO2
Погасите левую панель клавишами Ctrl+Fl, чтобы было видно как работает программа HELLO2.EXE.
4. ЗАДАНИЕ 3 (Пример оформления программы в виде *.СОМ файла)
4.1 Войдите в директорию L1,в ней создайте файл с именем HELLO3.ASM. .Введите текст следующей программы (без комментариев).
F2-сохранить файл.
Программа 3:
: Programm Hello3 ( Пример оформления программы в виде corn-файла)
MODEL SMALL
.CODE
org lOOh
begin: jmp start
Hello DB'Hello!$'
start: LEA DX.Hello
MOV AH.09h
INT21h
MOV AH.4CH
MOV AL.Ooh
INT21h
END begin
Создайте исполняемый *.com файл HELLO3.COM, выполнив ассемблирование и компоновку файла HELLO3.ASM. (Ввод команды завершить клавишей Enter).
4.2.1 Для ассемблирования наберите TASM HELLO3.ASM HELLO1.ASM будет ассемблироваться в HELLO 1.OBJ
4.2.2 Для компоновки наберите TLINK/t HELL03.OBJ
В результате работы получаем файл HELLO3.COM
4.2.3 Для выполнения программы встаньте курсором на файл HELLO3 СОМ и нажмите Enter или наберитеHELLO3 Погасите левую панель клавишами Ctrl-Fl. чтобы было видно как работает программа HELLO3.СОМ.
5. Задние 4 Получение файлов-листинга (отладочные файлы).
5.1 Снова создайте файл HELLO 1 OBJ. используя исходную программу, раннее набранную HELLO 1 .ASM. получите файл листинга HELLO1 LSI (см.TASMRUS.HLP)
Просмотрите файл HELLO1.LST - листинг программы HELLO1.OBJ, который содержит адреса, машинные коды команд и операторы Ассемблера
6. К отчету по СРС №1 представить:
- продемонстрируйте работающие программы HELLO1, HELLO 11,HELL02, HELLO3;
- полный цикл создания программы на языке Ассемблера;
- программы HELLO 1. ASM, HELLO2.ASM, HELLO3.ASM с комментариями;
- блок-схемы программ HELLO 1,HELLO2,HELLO3;
-выберите из файла HELLO 1.LST по одной команде с различными режимами адресации: регистровой, регистровой косвенной, базовой, непосредственной. Запишите команды Ассемблера машинный код команд в 16-м и двоичном коде, режимы адресации команд.
- заполненную таблицу
Имя Количество: Размер :Размер: Размер
программы :команд :*.OBJ (в кбт.):*.ЕХЕ :*.COM
HELL01
HELLO11
HELLO2
HELLO3
Примечание 1:
В данной СРС используются следующие функции DOS для выполнения некоторых операций:
1) Функция 1 "Ввод с клавиатуры" вызывается путем помещения номера функции в регистр АН и выполнения команды INT 21Н – прерывание программы. Набранный символ помещается в регистр AL.
MOV AH,1
INT21H
2) Функция 9 - "Печать строки" вызывается путем помещения номера функции в регистр АН, адреса (смещения) строки в регистр DX и
выполнения команды INТ 21Н.
MOVAH.9
MOV DX.offset HELLO
INT21H
3) Функция 4СН - "Завершение программы и выход в DOS ." вызывается аналогично функции 1.
MOV AH.4CH
INT21H
Контрольные вопросы:
1 - Перечислите регистры общего назначения процессора 8086.
Назначение этих регистров и особенности их использования.
2. Раскройте механизм сегментации памяти процессора 8086.
3 Перечислите сегментные регистры процессора 8086, особенности их использования.
4. Как называется процесс перевода программы записанной в мнемокоде в коды ЦП.
5. Как называется процесс перевода *.obj файла в *.ЕХЕ файл.
6 Назовите виды адресации операторов в программах на языке Ассемблера.
7. Назовите виды оформления программ на языке Ассемблера, их отличия.
8. Назовите модели памяти применяемые при построении программ на языке Ассемблера. Перечислите их основные характеристики.
9. Объясните назначение каждого из перечисленных файлов, получаемых при создании исполняемой программы на языке ассемблер. *.ASM,*LST,*.CRF,*.map,*.EXE,*.com.
10.Какая ошибка содержится в операторах const db .?
СРС N3
