Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Питер Абель Весь текст 992.61 Kb

Ассемблер и программирование для IBM PC

Предыдущая страница Следующая страница
1 ... 77 78 79 80 81 82 83  84 85
соответствующие номера дисководов.  Простейший способ запуска компоновщика
представляет ввод команды LINK, что приводит  к  загрузке  компоновщика  с
диска в память. На экране появятся следующие запросы:

               Object Modules [.OBJ]:
               Run File [d:filename.ЕХЕ]:
               List File [NUL.MAP]:
               Libraries [.LIB]:

     Курсор при этом расположится в конце первой  строки,  где  необходимо
указать имя файла.  Введите номер  дисковода  (если  он  не  определен  по
умолчанию) и имя файла.  Не следует набирать тип файла OBJ  -  компоновщик
подразумевает это.  Во втором запросе предполагается аналогичное имя файла
(но можно его заменить).  Если необходимо, введите номер дисковода. Третий
запрос  предполагает,  что  листинг  компоновки  программы  не  требуется.
Последний запрос имеет отношение к библиотечным средствам DOS.
     Если вы хотите оставить значения по умолчанию, то  в  трех  последних
запросах просто нажмите Return. Ниже приведен пример запросов и ответов, в
результате которых компоновщик должен создать файлы ЕХЕ и CON:

               Object Modules  [.OBJ]:B:ASMPROG [return]
               Run File [d:filename.ЕХЕ]:В:  [return]
               List File [NUL.MAP]:CON  [return]
               Libraries [.LIB]:  [return]

     Ответ CON приводит к выводу карты компоновки на экран для проверки на
наличие сообщений  об  ошибках.  Команду  LINK  можно  сформировать  также
следующим образом:

               LINK B:ASMPROG,В:,CON

     Описание  остальных  режимов  компоновщика  LINK  можно    найти    в
руководстве no DOS.


                            Программа ЕХЕ2ВIN
                           -------------------
     Программа EXE2BIN.COM в операционной  системе  DOS  используется  для
преобразования  ЕХЕ-модулей  в  СОМ-модули,  при  этом  полагается,    что
программы подготовлены в соответствии с требованиями для СОМ-модулей.  Для
запуска программы  EXE2BIN вставьте дискету DOS в дисковод А,  а дискету с
ЕХЕ-файлом - в дисковод В.  Для винчестерского диска следует  использовать
дисковод С. Введите следующую команду:

               EXE2BIN B:filename,B:filename.COM

     Первым  операндом  является  имя  ЕХЕ-файла,  которое  вводится   без
указания типа.  Второй операнд представляет  собой  имя  СОМ-файла;  здесь
можно изменить имя программы, но обязательно следует  указывать  тип  СОМ.
После того как преобразование будет выполнено, можно удалить файлы  OBJ  и
ЕХЕ.



Ответы на некоторые вопросы
__________________________________________________________________________

1.1. а) 01001101; в) 00111111.

1.2. а) 0101; в) 10101.

1.3. а) 00100010; в) 00100000.

1.4. а) 11101101; в) 11000110.

1.5. а) 00111000; в) 10000000.

1.6. а) 51; в) 5D.

1.7. а) 23С8; в) 8000.

1.8. а) 13; в) 59; д) FFF.

1.9. а) Стек, данные и код; в) параграф.

1.l0. a) AX, BX, CX, DX, Dl, SI; в) AX и DX; д) флаги.

1.11.a) ROM (постоянная память  выполняет процедуры начальной  загрузки  и
     управляет операциями ввода-вывода.
     б) RAM (оперативная память) представляет собой область, где находятся
     программы и данные при выполнении.

2.1. а) В82946.

2.2. Е CS:101 54.

2.3. a)   MOV       AX, 3004
          ADD       AX,3000
          RET
     в) R и IP устанавливают IP в 0.

2.4. Произведение равно 0612Н.

2.6. Использовать команду N для указания имени программы  (например, СОМ),
     установить длину программы в  регистре  CX  и  с  помощью  команды  W
     записать программу.

3.1. TITLE и PAGE.

3.2. а), б) и в) корректны; г) неверно, так как начинается с цифры;
     д) корректно только при ссылке на регистр AX.

3.4. a) END; в) ENDS.

3.6. RET является командой,  которая обеспечивает возврат  в  операционную
     систему; END является директивой, которая указывает ассемблеру, что в
     тексте более нет команд для ассемблирования.

3.7. ASSUME    CS:CDSEG,DS:DATSEG,SS:STKSEG.

3.8. PUSH      DS
     SUB       AX, AX
     PUSH      AX

4.1. а) Ввести команду MASM и ответить на запросы: В:TEMPY В:, В: и В:

4.2. a) DEBUG  B:TEMPY.EXE; б) B:TEMPY

4.3. а) Резервная копия исходного файла;
     в) файл листинга ассемблирования с исходным и объектным кодом;
     д) файл объектного кода;
     ж) карта компоновки.

4.4. MOV       AX,DATSEG
     MOV       DS,AX

4.5. MOV       AL,30H
     SHL       AL,1
     MOV       BL,18H
     MUL       BL

4.6. Сегмент данных должен выглядеть следующим образом:
     FLDA      OB     28H
     FLDB      DB     14H
     FLDC      DW     ?

5.1. а) 2; в) 10; д) 8.

5.2.      CONAME    DB        'RGB Electronics'

5.3. a)   FLDA      DD        73H
     в)   FLDC      DW        ?
     д)   FLDE      DW        16, 19, 20, 27, 30

5.4. a) ASCII 3236; б) 1AH.

5.5. а) 26; в) ЗА732500.

5.6. a)   MOV       AX,320
     в)   ADD       BX,40H
     д)   SHL       FLDB,1 (или SAL)

6.1. 64 К.

6.3. Это использует  старшую  область  COM-программы  или  при  недостатке
     памяти - старшие адреса оперативной памяти.

6.4.         EXE2BIN SAMPLE,SAMPLE.COM.

7.1. +127 и -128. Операнд представляет собой однобайтовое значение от 00Н
     до 7FH (от 0 до + 127) и от 80Н до 0FFH (от -128 до -1).

7.2. а) 62В; в) 5ЕА (преобразует С6 в двоичное дополнение).

7.3. Приводим одно из многих возможных решений:

                      MOV   AX,00
                      MOV   BX,01
                      MOV   CX,12
                      MOV   DX,00
               В20:
                      ADD   AX,BX         ;Номер в AX
                      MOV   BX,DX
                      MOV   DX,AX
                      LOOP  B20

7.4. а) CMP DX,CX        в) JCXZ адрес       д) CMP BX,AX
        JA адрес            или CMP CX,0        JLE или JNG
                            JZ адрес

7.5. a) OF (1); в) ZF (1); д) DF (1)

7.7. Первая (основная) процедура PROC должна иметь атрибут FAR, так как ее
     вызов и выполнение происходят из операционной  системы.  Атрибут NEAR
     указывает на то,  что адрес  процедуры  находится  внутри  конкретной
     программы (т.е. в пределах одного сегмента ассемблерного модуля).

7.9. Три (по одному  на каждый вызов CALL).

7.10.а) 1001 1010; в) 1111 1011; д) 0001 1100.

7.12.а) 01011100 11011100; в) 11001101 11001000.

8.1. Строка = 18Н, столбец = 27Н.

8.3.           MOV     AX,0600H              ;3апрос
               MOV     BH,07                 ; функции
               MOV     CX,OCOOH              ; очистки
               MOV     DX,164FH              ; экрана
               INT     10Н

8.4. а) Вызов базовой функции DOS:

          MSSGE   DB      'What Is the date (mm/dd/yy)?',07H,'$'
                  MOV     AH,09              ;Запрос функции
                  MOV     DX,MSSGE           ;вывода сообщения
                  INT     21H

8.5. а) Вызов базовой функции DOS:

               DATEPAR   LABEL  BYTE
               MAXLEN    DB  9               ;Длина области ввода
               ACTLEN    DB  ?
               DATEFLD   DB  9 DUP(' ')
                         DB  '$'
                         MOV AH,0AH          ;Запрос функции
                         LEA DX,DATEPAR      ; ввода
                         INT 21H

9.1. a) 1000 0001; в) 0111 1000.

9.2.  a)      MOV    АН,00         ;Запрос функции установки режима
              MOV    AL,02         ; 80х25 BW
              INT    10Н
      в)      MOV    AН,060AН      ;3апрос прокрутки на 10 строк
              MOV    BH,07         ;Нормальный видеоатрибут
              MOV    CX,0000       ;Полный экран
              MOV    DX,184FH
              INT    10Н

9.3. а) 48; в) 47.

9.5. Использовать команду INT 10Н для ввода и проверить скэнкод.

10.1. Восемь цветов для фона  и 16 цветов для текста.

10.2. а) 1011 0101; в) 1000 1100.

10.3. Низкое разрешение: четыре бита на пиксел дает 16 цветов.
     Среднее разрешение: два бита на пиксел дает 4 цвета.
     Высокое  разрешение:  один  бит  на  пиксел  дает  2  "цвета"  (BW  -
     черно-белое изображение).

10.4.          MOV  AH,09          ;Функция вывода
               MOV  AL,04          ;Символ
               MOV  BH,00          ;Страница #0
               MOV  BL,01011010В   ;Светло-зеленый на сиреневом
               MOV  CX,05          ;Повторение 5 раз
               INT  10Н

10.6. Сначала установить графический режим, а затем, используя

               INT  10Н (AH=0BH),

     установить цвет фона.

10.7. Сначала установить графический режим.

               MOV  AH,0DH         ;Прочитать точку
               MOV  CX,13          ;Столбец
               MOV  DX,12          ;Строка
               INT  10Н

11.1. а)          JCXZ   lаbеl2
          label1: MOV    AX,[SI]
                  MOV    [DI],AX
                  INC    DI
                  INC    DI
                  INC    SI
                  INC    SI
                  LOOP   label1
          label2: ...

11.2. Установить флаг направления DF  для  пересылки  справа  налево.  Для
     команды MOVSB начальная установка на адреса  NAME1 + 9  и  NAME2 + 9.
     Для  команды  MOVSW  начальная  установка  на  адреса   NAME1 + 8   и
     NAME2 + 8. Подпрограмма по метке H10SCAS может использовать

               MOV  AX,'mb'

     и с помощью команды SCASW выполнить сканирование.

11.3. a)       CLD                 ;Пересылка слева направо
               LEA    SI,CONAME    ;Инициализация
               LEA    DI,PRLINE    ; для пересылки
               MOV    CX,20        ; 20 байт
               REP    MOVSB

      в)       CLD                 ;Пересылка слева направо
               LEA    SI,CONAME+2  ;Начать с 3-го
               LODSW               ;Загрузить два байта

      д)       CLD                 ;Пересылка слева направо
               MOV    CX,20        ;20 байт
               LEA    SI,CONAME    ;Инициализация
               LEA    DI,PRLINE    ;адресов
               REPE   CMPSB        ;Сравнение

11.4. Одно из решений:

      H10SCAS  PROC   NEAR
               CLD                 ;Пересылка слева направо
               MOV    CX,10        ;10 байт
               LEA    DI,NAME1     ;Инициализация адреса
               MOV    AL,'e'       ; и символа для поиска
      Н20:
               REPNE SCASB         ;Сканирование
               JNE    H3Q          ;Символ найден?
               CMP    BYTE PTR[DI],'r'  ; Да - следующий
               JNE    Н20          ; байт равен r?
               MOV    AH, 03
      Н30:     RET
      H10SCAS  ENDP

11.5. PATTERN  DB     0ЗН,04Н,05Н,0В4Н
      DISPLAY  DB     80 DUP(' '),'$'
               CLD                 ;Пересылка слева направо
               LEA    SI,PATTERN   ;Инициализация
               LEA    DI,DISPLAY   ; адресов
               MOV    CX,20        ;20 байт
               REP MOVSW           ;Переслать образец

     Затем  можно  использовать  команду  INT 21 Н  для  вывода  на  экран
     значения из области DISPLAY.

12.1.a)        MOV   AX,DATAY
               ADD   AX,DATAX
               MOV   DATAY,AX

     б) См. рис.12.2 (многословное сложение).

12.2.Команда STC устанавливает флаг CF.Сумма равна 0148Н плюс 0237Н плюс 1

12.3.a)        MOV  AX,DATAX
               MUL  DATAY

     б) См. рис.12.4 для умножения двойного слова на слово.

12.5. a)       MOV  AX,DATAX
               MOV  BL,25
               DIV  BL

13.1. а) Команда ADD дает результат 6СН, а команда AAA - 0102Н.
      в) Команда SUB дает результат 02Н, а команда AAS не имеет эффекта.

13.2.          LEA  SI,UNPAK       ;Инициализация адреса
               MOV  CX,04          ; и счетчика циклов
          В20:
               OR   [SI],ЗОН       ;Включить тройку кода ASCII
               INC  SI             ;Перейти к следующему байту
Предыдущая страница Следующая страница
1 ... 77 78 79 80 81 82 83  84 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама