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

Министерство образования и науки Российской Федерации

Государственное образовательное учреждение высшего профессионального образования

«Магнитогорский государственный технический университет им. Г.И. Носова»

Кафедра вычислительной техники и прикладной математики

Домашняя работа №2

по дисциплине: «Организация ЭВМ»

на тему: «Написание программ на языке Ассемблер»

Вариант 10

Исполнитель: Александров Д.И. студент 3 курса, группа АВ-08-1

Руководитель: Ячиков И.М. к. т. н.

Работа допущена к защите “_____” _________ 2010г. ____________

Работа защищена “_____” _________ 2010г. с оценкой ____________ ____________

Магнитогорск, 2010

Содержани

1Условие задачи 3

2Постановка задачи 4

3Инструкция пользователю 5

4Инструкция для программиста 6

5Логика работы 9

6Листинг программы 11

7Список использованных источников 23

1 Условие задачи 3

2 Постановка задачи 4

3 Инструкция пользователю 5

4 Инструкция для программиста 6

5 Логика работы 9

6 Листинг программы 11

7 Список использованных источников 22

  1. Условие задачи

Составить программу, которая рисует таблицу из символов в кодировке. Двигаясь произвольно по этой таблице или пролистывая ее посредством клавиш курсора или мыши можно выбрать и узнать шестнадцатеричный, десятичный и двоичный эквивалент любого символа в таблице. Также производить вывод расширенного кода клавиатуры при нажатии клавиши в десятичном двоичном и шестнадцатеричном эквиваленте. Программа должна иметь удобный интерфейс (см. аналог в программе MS Word).

  1. Постановка задачи

Необходимо написать программу, непрерывно отслеживающую нажатия клавиш «вверх», «вниз», «влево» и «вправо». Для этого воспользуемся прерывание работы с клавиатурой 16h. При нажатии одной из клавиш, курсор должен передвигается по таблице символов, и выводить двоичный десятичный и шестнадцатеричный эквивалент выбранного символа. Также необходимо отслеживать нажатие левой клавиши мыши и определять выбранный указателем мыши символ. Для этого воспользуемся прерыванием работы с мышью 33h. Параллельно программа должна отслеживать нажатие на клавиши из расширенного набора и выводить код сочетания клавиш в двоичном шестнадцатеричном и двоичном эквиваленте.

  1. Инструкция пользователю

Программа называется sim.exe. Для начала работы достаточно запустить этот файл. После запуска файла программа выдает таблицу из символов в кодировкиASCII.

Выбор символа производится передвижением курсора. Передвижение курсора можно осуществлять с использованием клавиш стрелок на клавиатуре или с использованием мыши. Для выбора символа с использованием мыши необходимо навести указатель на символ и нажать левую клавишу. В левом нижнем углу выводится десятичный шестнадцатеричный и двоичный эквиваленты выбранного символа.

При нажатии сочетания клавиш из расширенного набора будет произведён вывод кода клавиши. Выход из программы осуществляется после нажатия клавиши ESC.

  1. Инструкция для программиста

Исходный текст разбит на несколько файлов:

  • Mouse.asm – файл, содержащий вспомогательные подпрограммы для работы с мышью через прерывание 33h;

  • Printf.asm– файл с функциями, работающими с экраном прямым доступом к видеопамятиcиспользованием прерывание 10hи 21h.Cодержит функции для печати символов, строк, и кода символа;

  • Keyboard.asm– файл, содержащий вспомогательные подпрограммы для работы с клавиатурой через прерывание 16h;

  • Main.asm– файл с точкой входа в программу и вспомогательными процендурами.

Для выполнения задачи воспользуемся следующими прерываниями:

  • 21h– (прерывание операционной системы) функции ввода вывода;

  • 33h– (прерывание операционной системы) управление мышью;

  • 10h– (функцияROMBIOS) управление видеоконтроллером;

  • 16h– (функцияROMBIOS) управление вводом с клавиатуры.

Точкой входа в программу является процедура Start, расположенная в файлеMain.asm. Компиляция и сборка программы осуществляется с использованием файла Run.bat. Ниже представим содержимое файла Run.bat.

tasm Mouse.asm

tasm Keyboard.asm

tasm Printf.asm

tasm Main.asm

tlink Mouse.obj+Keyboard.obj+Printf.obj+Main.obj,sim.exe

del *.obj

del *.map

В таблице 4.1 содержится информация о назначении каждой переменной, процедуры и функции.

Таблица 4.1 – Назначение макросов, массивов переменных и процедур

Тип

Имя

Назначение

Вход

Выход

Файл

Переменные

CurX

Текущие координаты X.

––––

––––

Main.asm

CurY

Текущие координаты Y.

––––

––––

MouseX

Текущие координаты мыши X.

––––

––––

MouseY

Текущие координаты мыши Y.

––––

––––

CurCode

Код текущего символа.

––––

––––

Константы

CodeStr, DecStr, HexStr, BinStr, NameW,

inf0, inf1, inf2, inf3, inf4,inf5

Текстовые константы.

–––––

–––––

Main.asm

Процедуры

View

Начальная подготовка экрана. Вывод текстовых констант и таблицы кодировки.

Текстовые

константы.

–––––

Main.asm

SetMark

Вывод курсора.

CurX, CurY, CurCode

–––––

ResMark

Стирание курсора.

CurX, CurY, CurCode

–––––

OutCode

Вывод кода символа в различных системах счисления.

Текстовые

константы.

–––––

Start

Основная процедура.

Все переменные

–––––

Процедуры

AnyKey

Чтение из буфера клавиатуры кода клавиши (если буфер пуст - задержка до нажатия любой клавиши)

––––

AX – код клавиши

(AL–ANSII код AH– Скан код)

Keyboard.asm

Key

Чтение из буфера клавиатуры кода клавиши.

–––––

AX– код клавиши

(AL–ANSIIкодAH– Скан код)

Процедуры

InitMouse

Инициализация мыши.

––––

AX=FFFFh– Успех (BX– число клавиш)

AX = 0000h – Ошибка

Mouse.asm

OnMouse

Включение изображение курсора мыши.

––––

––––

OffMouse

Скрыть курсор мыши.

––––

––––

GetMouse

Получение состояние нажатия клавиш и положение мыши.

––––

BX – биты:

0 - левая нажата

1 - правая нажата

2 - центральная нажата

3-15 - резерв

CX–координата X

DX–координата Y

LocateMouse

Получение положение мыши.

––––

CX–координата X

DX–координата Y

Процедуры

WriteSymbol

Выводит символ в текущем положении курсора.

AL–код символа

––––

Printf.asm

Print

Выводит символ в текущем положении курсора с атрибутом цвета фона и символа.

AL–код символа

BL–цвет фона и символа.

––––

Locate

Устанавливает курсор вывода текста.

DH–координата Y

DL–координата X

––––

WriteString

Вывод строки из памяти.

ES:BP–адрес строки

CX– длина

DX–начальная позиция

(DH–координата У, DL–координата X)

BL–цвет фона и символа.

_____

Write0F

Вывод числа в шестнадцатеричной форме от 0 до F

AL–число

_____

WriteByteHex

Вывод однобайтового числа в шестнадцатеричном виде

AL–число

_____

WriteByteDec

Вывод однобайтового числа в десятичном виде

AL–число

_____

WriteByteBin

Вывод однобайтового числа в двоичном виде

AL–число

_____

CLS

Очистка экрана

–––––

–––––

Соседние файлы в папке DIM
  • #
    11.02.2015937 б17Keyboard.asm
  • #
    11.02.201512.77 Кб17Main.asm
  • #
    11.02.20152.41 Кб19Mouse.asm
  • #
    11.02.20154.51 Кб17Printf.asm
  • #
    11.02.2015156 б17Run.bat
  • #
    11.02.201571.36 Кб23Отчёт.docx