Предыдущая глава ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ Следующий раздел

После того как мы рассмотрели логические основы организации аппаратуры ЭВМ, перейдем к построению простейших машинных программ, выполняемых с помощью этой аппаратуры. Выполнение программ на «голой» аппаратуре будет рассматриваться нами в третьей и четвертой частях пособия, а  в первых двух частях пособия все наши программы будут выполняться в среде операционной системы DOS. При этом для того, чтобы «не отдаляться» от аппаратуры, при построении своих программ в первой части пособия мы будем использовать единственную системную программу – Debug.

Debug является отладчиком, то есть программой, предназначенной для оказания помощи программистам в поиске ошибок в программах, исходные тексты которых написаны на ассемблере или каких-то других языках программирования. С помощью этой программы производится анализ и заполнение ячеек регистровой и оперативной памяти, осуществляется пошаговое выполнение программы. Преследуя цель лучше понять механизм выполнения машинных программ, мы не будем пока использовать для записи программ даже язык ассемблера, ограничившись лишь использованием вместо цифровых КОПов машинных команд соответствующих ассемблерных мнемоник.

Рассмотрим происхождение слова "Bugs" (дословно "насекомые") в переводе со слэнга программистов означает "ошибки в программе". Используя Debug для пошагового запуска программы и наблюдая, как программа работает на каждом этапе, мы можем найти ошибки и исправить их. Этот процесс называется отладкой  ("debugging"), отсюда и произошло название программы Debug.

 

3.1. Чтение и заполнение регистров

Прежде чем запустить Debug, необходимо запустить ту операционную систему (ОС), в среде которой будут выполняться и Debug, и получаемые с помощью него наши программы. В качестве такой ОС везде далее используется любая система из семейства DOS. Эти ОС имеют схожие пользовательские и программные интерфейсы.

Примером DOS является свободно распространяемая операционная система FreeDOS. Так как эта ОС является самостоятельной системой, выполняемой на “голой” аппаратуре, то для ее запуска из среды какой-то другой ОС, например из одной из WINDOWS или из UNIX, предварительно следует запустить программный иммитатор аппаратуры ЭВМ. Примером такого имитатора является виртуальная машина Microsoft Virtual PC”. Пояснения об ее использовании содержатся в приложении 2. Впрочем, при выполнении первых двух частей пособия можно ограничиться запуском из WINDOWS MS-DOS, которая в настоящее время фактически является частью WINDOWS. Запуск производится:

<Пуск> → <Программы> → <Стандартные> → <Командная строка>

В результате запуска DOS на черном экране появится ее приглашение для ввода нами команды, например:

C:\>

Данное приглашение означает, что в данный момент времени текущим логическим диском является C:, а текущим каталогом – корневой каталог (\) на этом логическом диске. Далее на экране находится само приглашение – символ “>”.

З а п у с т и т е  Debug, набрав его название после приглашения DOS, например:

С:\> DEBUG

Debug можно вызвать и с помощью программы DOS Navigator, или с помощью другой аналогичной утилиты, имеющейся на Вашей ЭВМ. Для этого надо найти в каталоге файлов файл Debug.com, установить на него курсор-маркер и нажать клавишу <Enter>.

Дефис  “ _ “, который Вы видите в качестве ответа на Вашу команду – это приглашение программы Debug. Это означает, что Debug ждет Вашей команды. Чтобы покинуть Debug и вернуться  в DOS, напечатайте "Q" ("Quit") около дефиса и нажмите "Enter".

П о п р о б у й т е  выйти и затем обратно вернуться в Debug:

_Q

С:\ > DEBUG

Мы начнем использование Debug с того, что попросим его показать содержимое регистров ЦП (микропроцессора i8086) с помощью команды R(от "Register"):

_R

AХ=0000 ВХ=0000 СХ=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000       DS=3756 ES=3756    SS=3756  CS=3756   IP=0100 NV UP DI PL NZ NA PO NC   3756:0100   E485     MOV  AL,85

Возможно, на своем экране вы увидите другие числа во второй и третьей строках. А сейчас обратим внимание на первые четыре регистра: AX, ВХ, СХ и DX, о значениях которых Debug сообщил, что они все равны 0000. Это регистры общего назначения. Остальные регистры SP, ВР, SI, DI, DS, ES, SS,CS, IP являются регистрами специального назначения. Так как каждый из 13 регистров i8086 является словом и имеет длину 16 бит, то его содержимое представлено на экране в виде четырехзначного шестнадцатеричного числа.

Команда Debug R не только высвечивает регистры. Если указать в команде имя регистра, то Debug поймет, что мы хотим взглянуть на содержимое именно этого регистра и может быть изменить его. Например, мы можем изменить содержимое АХ:

_R  AX

АХ=0000

:3А7  

Теперь можно убедиться в том, что в регистре АХ содержится 3А7h:

_R

AX=03А7 ВХ=0000 СХ=0000 DX=0000 SP=FFEE ВР=0000 SI=0000 DI=0000 DS=3756 ES=3756 SS=3756 CS=3756 IP=0100 NV UP DI PL NZ NA PO NC 3756:0100   E485   MOV  АL,85

Так и есть. Итак, мы можем помещать шестнадцатеричное число в регистр с помощью команды R, указывая имя регистра и вводя его новое значение после двоеточия.

 


Предыдущая глава В начало Следующий раздел