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

Запись программы на диск

 

Для записи программы на диск необходимо знать её размер в байтах, и это значение необходимо внести в регистр CX. Последний байт внесённый до этого нами в область данных имеет адрес 296 (см. выше). Это значение и будет размером программы. Вводим это число в регистр CX:

 

 

Далее необходимо командой "name"– n ввести имя программы (придумать) и командой "write"– w произвести запись программы в файл:

 

 

Теперь чтобы загрузить эту программу в Debug надо ввести её имя командой "name"– n, и загрузить командой "load" – L (файл программы должен находиться в каталоге программы debug):

 

 

Для запуска программы вводим команду g:

В данной программе сравниваются числа от 0 до 9. Анализ правильности ввода (что введено именно число, а не какая–нибудь буква) не производится. Данную проверку возможно было бы производить по анализу кодов введённых символов. То есть, если коды введённых символов выходят за рамки определённого диапазона (30h – 39h), то программа возвращается к вводу числа X или Y.

Примечания по использованным в программе командам

 

1). Команда mov (пересылка данных)

 

Команда MOV замещает первый операнд (приемник) вторым (источником). При этом исходное значение первого операнда теряется. В зависимости от описания операндов пересылается слово или байт. Если операнды описаны по-разному или режим адресации не позволяет однозначно определить размер операнда, для уточнения размера передаваемых данных в команду следует включить один из атрибутных операторов byte ptr или word ptr. В зависимости от использованных режимов адресации команда MOV может осуществлять пересылки следующих видов:

- из регистра общего назначения в регистр общего назначения;

- из ячейки памяти в регистр общео назначения;

- из регистра общего назначения в ячейку памяти;

- непосредственный операнд в регистр общего назначения;

- непосредственный операнд в ячейку памяти;

- из регистра общего назначения в сегментные регистры DS, ES и SS;

- из сегментного регистра в регистр общего назначения;

- из сегментного регистра в ячейку памяти.

 

Запрещены пересылки из ячейки памяти в ячейку памяти (для этого предусмотрена команда MOVS), а также загрузка сегментного регистра непосредственным значением, которое, таким образом, приходится загружать через регистр общего назначения:

 

mov AX, seg mem ;Сегментный адрес ячейки mem

mov DS, AX ;Загрузка его в регистр DS

 

Нельзя также непосредственно переслать содержимое одного сегментного регистра в другой. Такого рода операции удобно выполнять с использованием стека:

 

push DS ;

pop ES ;Содержимое DS копируется в ES

 

2). Cmp (сравнение)

 

Команда CMP выполняет вычитание второго операнда из первого. В соответствии с результатом вычитания устанавливаются состояния флагов CF, PF, AF, ZF, SF и OF. Сами операнды не изменяются. Таким образом, если команду сравнения записать в общем виде:

 

cmp операнд_1, операнд_2

 

то ее действие можно условно изобразить следующим образом:

 

операнд_1 - операнд_2 -> флаги_процессора

 

В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака.

 

Обычно вслед за командой CMP стоит одна из команд условных переходов, анализирующих состояние флагов процессора.

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]