Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Методика определения объема памяти - такая же, как и определения списка оборудования. Объем ОЗУ (в Кбайтах) находится в области памяти BIOS по адресу 0040:0013 (2-байтное слово) и может быть получен при помощи прерывания 0x12, как это показано в следующем примере.
/*== ПРИМЕР 3 ==*//*======== Определение объема оперативной памяти =========*/#include <dos.h>main() { union REGS rr; /* Прерывание 0x12 возвращает его в регистре AX */ int86(0x12,&rr,&rr); printf("Объем памяти по прерыванию 12 - %d Кбайт\n", rr.x.ax); /* То же число можно получить чтением из 0040:0012 */ printf("Объем памяти из данных BIOS - %d Кбайт\n", peek(0x40,0x13));}Для AT объем ОЗУ может быть также прочитан из регистров 0x15 (младший байт) и 0x16 (старший байт) CMOS-памяти. Кроме того, в AT может быть еще и расширенная (extended) память сверх 1 Мбайта (в AT она используется только для виртуальных дисков). Ее объем можно получить из регистров 0x17 (младший байт) и 0x18 (старший байт), или из регистров 0x30 (младший байт) и 0x31 (старший байт) или по функции 0x88 прерывания 0 x15.
/*== ПРИМЕР 4 ==*//*======= Определение характеристик памяти для AT ========*/#include <dos.h>union REGS rr;main() { unsigned char f, f1; printf("Объем основной памяти - "); outportb(0x70,0x15); f=inportb(0x71); outportb(0x70,0x16); f1=inportb(0x71); printf("%d Кбайт\n",(f1<<8)|f); printf("Объем extended памяти - "); outportb(0x70,0x17); f=inportb(0x71); outportb(0x70,0x18); f1=inportb(0x71); printf("%d Кбайт\n",(f1<<8)|f); printf("Объем extended памяти - "); outportb(0x70,0x30); f=inportb(0x71); outportb(0x70,0x31); f1=inportb(0x71); printf("%d Кбайт\n",(f1<<8)|f); printf("Объем extended памяти - "); rr.h.ah=0x88; int86(0x15,&rr,&rr); printf("%d Кбайт\n",rr.x.ax); }}Определение версии DOS
Эта операция необходима, так как средства и структуры данных DOS могут существенно меняться от версии к версии. Функция DOS 0x30 возвращает в регистре AL старшее число номера версии, а в AH - младшее число.
/*== ПРИМЕР 5 ==*//*================ Определение версии DOS ================*/#include <dos.h>union REGS rr;main() { rr.h.ah=0x30; intdos(&rr,&rr); printf("Версия MS-DOS %d.%d\n",rr.h.al,rr.h.ah);}Задание: Составить программу проверки состава оборудования ПК
Порядок выполнения работы:
1. Ввести и откомпилировать приведенную выше программу.
2. Прокомментировать каждое предложение программы
Контрольные вопросы:
1. Назначение BIOS
2. По какому адресу BIOS формирует список оборудования ПК?
3. Как определить тип ПК?
Практическая работа №6
Архитектура ЭВМ и вычислительных систем
Тема: Программирование и отладка программ
Цель работы: Знакомство со средой Turbo Assembler. Изучение работы программ tasm, tlink. Отладка программы в среде Turbo Debugger.
Средства: Программы tasm, tlink, Turbo Debugger
Литература:
Юров В.И. Assembler. Практикум. – Спб.: Питер, 2001 г.
Краткие теоретические сведения:
Создание новой программы
Рис. 1.1 Редактирование, ассемблирование, компоновка и выполнение.
Для ассемблирования файла HELLO.ASM наберите: TASM hello, и нажмите клавишу Enter. Если вы не задали другое имя, файл HELLO.ASM будет ассемблирован в файл HELLO.OBJ. (Заметим, что расширение имени файла вводить не требуется. Турбо Ассемблер подразумевает в этом случае, что файл имеет расширение.ASM.) На экране вы увидите следующее:
Turbo Assembler Version 3.0 Copyright (C) 1988,1991 (1)
by Borland International Inc.
Assembling file: HELLO.ASM (2)
Error messages: None (3)
Warning messages: None (4)
Passes: 1 (5)
Remaining memory: 266K (6)
1 - Турбо Ассемблер, версия 3.0; авторские права фирмы Borland, 1991 г.;
2 - ассемблирован файл HELLO.ASM;
3 – сообщения об ошибках: нет;
4 - предупреждающие сообщения: нет;
5 – число проходов: 1;
6 - остается памяти: 266К
Для компоновки программы используется программа TLINK, представляющая собой поставляемый вместе с Турбо Ассемблером компоновщик. Введите командную строку: TLINK HELLO
Здесь опять не требуется вводить расширение имени файла. Компоновщик TLINK по умолчанию предполагает, что этим расширением является расширение.OBJ. Когда компоновка, компоновщик автоматически присвоит файлу с расширением.EXE имя, совпадающее с именем вашего объектного файла (если вы не определили другое имя). При успешной компоновке на экране появляется сообщение:
Turbo Linker Version 3.0 Copyright (c) 1988, 1991 by Borland
International Inc.
Задание:
Составить программу вывода на экран слова «Привет!».
Порядок выполнения работы:
1. Составить алгоритм программы
2. По алгоритму написать листинг программы
3. Скопмпонаовать ЕХЕ программу
4. Отладить в TurboDebuger.
Контрольные вопросы:
Практическая работа №7
Архитектура ЭВМ и вычислительных систем
Тема: Программирование арифметических и логических операций
Цель работы: Изучить арифметические и логические команды языка Ассемблера
Средства: Turbo Assembler, Turbo Debuger
Литература: Юров В.И. Assembler. Практикум. – Спб.: Питер, 2001 г
Краткие теоретические сведения:
Дата публикования: 2014-12-08; Прочитано: 690 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!