Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Описание программы-эмулятора.





 

Программа-эмулятор является своего рода программной средой, дающей возможность, используя стандартный персональный компьютер класса IBM PC, выполнять программы, написанные в машинных кодах процессора КР580ИК80А. Кроме того, программа-эмулятор позволяет ознакомиться с работой основных модулей и устройств, входящих в состав вычислительного комплекса СМ-1800, фактически реализуя принцип абстрактной машины. Однако программа-эмулятор лишь имитирует процессы, происходящие в реальной ЭВМ, и, в связи с этим, наибольшую практическую пользу от работы с программой можно извлечь, имея возможность хотя бы кратко ознакомиться с работой реального вычислительного комплекса СМ-1800. Более того, программа-эмулятор позволяет реализовать некоторые дополнительные возможности, такие как, просмотр содержимого памяти, портов ввода/вывода, регистров центрального процессора.

Другими словами, программа-эмулятор воспроизводит процессы, протекающие в реальной микроЭВМ, с максимально возможной степенью достоверности, поддерживает постоянный диалог с оператором, эмулирует манипуляциями с ПКУ и ВТА, и в то же время максимально использует возможности операционной системы Windows, под управлением которой проходит её работа.

 

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

Вторым фактором является то что весь свой лабораторный практикум по СМ-1800 я выполнил именно на эмуляторе Смирнова так что работа с ним мне представляется мне более привычной. Но в тоже время я бы не стал утверждать что эмулятор Демина-Пушкина не имеет право на существования по моему мнению это тоже очень достойный эмулятор но его подводит интерфейс, который на мой взгляд с внешним видом реальной машины не имеет ни чего общего. И при схожести всех остальных параметров я выбрал эмулятор Смирнова из за его интерфейса.

 

 

Практическая разработка.

Описание алгоритма решения задачи.

 

Сравнение двух 4-х байтных констант будем производить побайтно, то есть сначала будем сравнивать старшие байты соответствующих констант, а в случае их равенства будем переходить к сравнению младших байт. Так как нам нужно сравнить две константы по модулю, то нужно в первую очередь получить нули в старших битах 4-ых байтов констант. Старшие биты 4-ых байтов определяют знаки соответственно 1-ой и 2-ой констант. Если значение этого старшего байта равно 0, то число положительное, если 1 – число отрицательное.

 

1) Получение 0 в старшем бите 4-го байта 2-ой константы, запись в H,L.

2) Получение 0 в старшем бите 4-го байта 1-ой константы, запись в A.

3) Сравнение 4-го байта 1-ой константы с 4-ым байтом 2-ой константы.

4) Переход к пункту 20, если CY=1, то есть, если 2-ая константа больше 1-ой.

5) Переход к пункту 22, если 4-ые байты не равны между собой, т.е. 1-ая константа больше 2-ой.

6) Создание счетчика на 3 шага.

7) Загрузка адреса 5003 в B,C.

8) Загрузка адреса 5006 в D,E.

9) Загрузка в пару H,L содержимого ячейки памяти, адрес которой находится в D,E.

10) Загрузка А содержимым ячейки памяти, адрес которой находится в B,C.

11) Сравнение 2-х последних байт.

12) Переход к пункту 20, если CY=1, то есть, если 2-ая константа больше 1-ой.

13) Переход к пункту 22, если 4-ые байты не равны между собой, т.е. 1-ая константа больше 2-ой.

14) Уменьшение содержимого B,C на 1.

15) Уменьшение содержимого D,E на 1.

16) Уменьшение содержимого L на 1.

17) Если L≠0, то возвращаемся к пункту 9.

18) Вывод на экран сообщения:”1-ая константа=2-ой константе”. Запись в регистр B значения FFFF

19) Выход из программы.

20) Вывод на экран сообщения:”2-ая константа больше 1-ой”. Запись в регистр B значения 00.

21) Выход из программы.

22) Вывод на экран сообщения:”1-ая константа больше 2-ой”. Запись в регистр B значения 01.

23) Выход из программы.

Распределение памяти.

 

L – счетчик цикла;

B,C – текущий байт 1-ой константы;

H,L – текущий байт 2-ой константы.

 

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

 

 

Адрес 16-ричный код Код Ассемблера Комментарий

 

  30 00 50 LXI SP, 5000h; Создание стека программы по адресу 5000h;
  01 00 41 LXI B,4100h; Вывод сообщения на ВТА;
  CD 4F 00 CALL 4Fh; Вызов подпрограммы с адреса 004F
  06 04 MVI B, 04h; Создание счетчика на 4 шага;
400B 21 00 50 LXI H, 5000h; Получение начального адреса для хранения 1-ой константы;
400E CD 67 00 CALL 67h; Ввод одного байта числа;
    MOV M,A; Сохранение данного байта в текущий адрес;
    INX H; Положительное приращение H,L;
    DCR B; Отрицательное приращение B;
  C2 0E 40 JNZ 400E; Переход по адресу 400E при Z=0;
  CD 49 00 CALL 49h; Перевод курсора на новую строку;
401A 01 00 42 LXI B, 4200h; Вывод сообщения на ВТА;
401D CD 4F 00 CALL 4Fh; Вызов подпрограммы с адреса 004F
  06 04 MVI B, 04; Создание счетчика на 4 шага;
  CD 67 00 CALL 67h; Ввод одного байта 2-ой константы;
    MOV M,A Сохранение данного байта в текущий адрес;
    INX H; Положительное приращение D,E;
    DCR B; Отрицательное приращение B;
  C2 22 40 JNZ 4022; Переход по адресу 4022 при Z=0;
402B CD 49 00 CALL 49h; Перевод курсора на новую строку;
402E 01 03 50 LXI B, 5003h; Получение следующего байта 1-ой константы;
  21 07 50 LXI H, 5007h; Получение следующего байта 2-ой константы;
  EB XCHG; Обмен содержимым между регистрами H,L и D,E;
  1A LDAX D; Загрузка A содержимым ячейки памяти, адрес которой находится в D,E;
  E6 7F ANI 7Fh; Логическое умножение 7F и A;
    MOV H,A; Сохранение данного байта по адресу 5007;
  0A LDAX B; Загрузка A содержимым ячейки памяти, адрес которой находится в B,C;
403A E6 7F ANI 7Fh; Логическое умножение 7F и A;
403C BC CMP H; Сравнение старших байт 2-х констант;
403D DA 60 40 JC 4060h; Переход по адресу 4060 при CY=1, т.е. если 2-ая константа больше 1-ой;
  C2 6B 40 JNZ 406Bh; Переход по адресу 406B при Z=0, т.е. если 1-ая константа больше 2-ой;
  0B DCX B; Отрицательное приращение B;
  1B DCX D; Отрицательное приращение D;
  2E 03 MVI L, 03h; Создание счетчика на 3 шага;
  1A LDAX D; Загрузка A содержимым ячейки памяти, адрес которой находится в D,E;
    MOV H,A; Сохранение данного байта в текущий адрес;
  0A LDAX B; Загрузка A содержимым ячейки памяти, адрес которой находится в B,C;
404A BC CMP H; Сравнение соответствующих байт 2-х констант;
404B DA 60 40 JC 4060h; Переход по адресу 4060 при CY=1, т.е. если 2-ая константа больше 1-ой;
404E C2 6B 40 JNZ 406Bh; Переход по адресу 406B при Z=0, т.е. если 1-ая константа больше 2-ой;
  0B DCX B; Отрицательное приращение B;
  1B DCX D; Отрицательное приращение D;
  2D DCR L; Отрицательное приращение L;
  C2 47 40 JNZ 4047h; Переход по адресу 4047 при Z=0, т.е. если L≠0;
  01 FF FF LXI B, FFFFh; Вывод сообщения “1-ая константа равна 2-ой” на ВТА;
405A CD 4F 00 CALL 4Fh;  
405D C3 73 40 JMP 4073h; Безусловный переход по адресу 4073;
  01 00 43 LXI B, 4300h; Вывод сообщения “2-ая константа больше 1-ой” на ВТА;
  CD 4F 00 CALL 4Fh; Вызов подпрограммы с адреса 004F
  06 00 MVI B, 00h; Запись в регистр B значения 00;
  C3 73 40 JMP 4073h; Безусловный переход по адресу 4073;
406B 01 00 44 LXI B, 4400h; Вывод сообщения “1-ая константа больше 2-ой” на ВТА;
406E CD 4F 00 CALL 4Fh; Вызов подпрограммы с адреса 004F
  06 01 MVI B, 01h; Запись в регистр B значения 01;
  C3 40 00 JMP 40h; Выход в программу монитор.

 

 

Описание использованных средств вычислительной техники.

Характеристика оборудования:

 

 

Компьютер с процессором Intel Pentium4 1.5 Hhz, 256Mb RAM,

GeForce2 MX/400, 32Mb видеопамяти,

Монитор CTX с разрешением 1280x1024,

стандартная клавиатура, "мышь".

 

Стандартное программное обеспечение:

 

Microsoft Windows Millennium, millennium edition

 

Вывод.

 

В результате выполнения курсового проекта, я написал программу, выполняющую задачу сравнения двух четырех байтных чисел. Сравнение выполняется методом вычитания. Сравнение выполняется по модулю благодаря чему программа имеет более простое решение, чем задача по сравнению чисел без учета этого условия. При выполнении работы я ориентировался на 2 флага флажок carry и флажок zero. Это становиться видно если глянуть на мою программу.

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

 

 

Список использованной литературы.

 

1) Каган Б.М. Электронные вычислительные машины и системы: Учебное

пособие для ВУЗов. – М.: Энергоатомиздат, 1991. – 592 с.

 

2) Лазаревич Э.Г., Хорошавина Г.Ф. Аппаратурные и программные средства

профессиональных персональных ЭВМ: Справочное пособие. – Мн.: Высш. шк., 1991. – 270с.

 

3) Белова Р.И., Гиляров В.Н. Система команд микроЭВМ СМ-1800 и основы

программирования в кодах. Методические указания. СПбГТИ – СПб, 1992.

 







Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.