Assembler для начинающих

Вставка короткой программы


      В предыдущем примере рассматривалась довольно большая программа
    на языке ассемблера, хранящаяся в собственном объектном файле и
    загружаемая в память интерпретатором Бейсика. А как в случае очень
    маленькой программы. Представляется, что для такой программы
    тратилось бы слишком много усилий на одну только загрузку ее из
    собственного файйла. В приложении C справочника по языку Бейсик
    приведен способ "упаковки" программы на машинном языке в область
    памяти за пределами рабочей области интерпретатора. Приведем пример
    применения другого способа.
 
      На Фиг. 10.8 показана программа, написанная на языке
    ассемблера, которой мы воспользуемся. Эта программа обращается к


    BIOS для сдвига изображения на экране. Рассмотрев параметры,
    хранящиеся в регистрах CX и DX, можно увидеть, что сдвигаемое окно
    отображает лишь часть экрана. Мы будем исползовать приведенную
    программу для разбиения экрана на несколько окон, в каждом из
    которых сдвиг может производиться независимо. Поскольку средства
    реализации этого в языке Бейсик отсутствуют, понадобится процедура
    на языке ассемблера.
 
             Microsoft (R) Macro Assembler Version 5.00                1/1/80 04:07:03
             Фиг. 10.8 Программа прокрутки окон на дисплее             Page     1-1
 
 
                                           PAGE ,132
                                           TITLE      Фиг. 10.8 Программа прокрутки окон на дисплее
              0000                        CODE SEGMENT
                                           ASSUME  CS:CODE
              0000                        SCROLL  PROC     FAR
              0000      55                      PUSH BP
              0001      8B EC                   MOV  BP, SP
              0003      8B 76 06                MOV  SI, [BP+6] ; Загрузка адреса параметра
              0006      8B 0C                   MOV  CX, [SI]   ; Загрузка параметра
              0008      0A C0                   OR   AL, AL



Содержание раздела