Логотип.
 Разделы сайта Cтатьи.
Сайт в разработке!

Статистика сайта.

Посещений за день: 169
Посещений за месяц: 2330
Посещений за год: 19551


Баннеры.

DMconnect
Maksy's PWS


Статистика в картинках.

likes counter


  • Главная.
  • Новости.
  • Программы.
  • Файлы.
  • Контакты.
  • Чат "Пиво".
  • Статьи.
  • Ссылки.
  • Гостевая.
  • Печать строки на 42 символа.

     Привет, товарищи!

     Эта подпрограмма будет полезна тем, кто выпускает компьютерные журналы, газеты, кто делает текстовые редакторы и вьюверы на Speccy.

     Сразу хочу сказать - лучше учится ловить рыбу, чем упражнятся в поедании. Метод пе- чати строки, который приведен ниже, позво- ляет начинающему программисту - кодеру(а в кодах ведь почти все самые лучшие програм- мы написаны!),лучше понять как пользоватся командами сдвига.

     Программируя в кодах, где-бы то ни было, на какой угодно машине, вы выиграете, по сравнению с теми, кто пишет свои программы на языках высокого уровня: BASIC, PASCAL, ALGOL 68, PL1, FORTRAN и т.д.

     Многих смущает, что писать большие программы на ассемблере сложно. Да - сложно. Поначалу... А приобретя опыт и свою библиотеку процедур, вы не сможете не оценить очевидных плюсов программирования на ассемблере.

     Вот пример работы команд сдвига:

     Второе R в команде - Right, т.е. право.

     

    A = %11100001; флаг Half Carry = C
          RRCA  ╚═> флаг C
         ┌<═ флаг C
    A = %11110000; сдвигается подобно карусели
    
     флаг C=1
    
    A = %11110000; флаг Half Carry = C
          RRA   ╚═> флаг C
         ┌<═ Half Carry
    A = %11111000
    
     флаг C=0
    


     Еще пример:

    A = %01000011
    C = %00000000
     
      SCF; флаг C = 1
      RRA
      RR   C
      
    A = %10100001
    C = %10000000
    
    


     Все вычисления в компьютерах проводятся в двоичной системе исчисления. Десятичная и шестнадцатиричная системы применяются в программах для удобства.

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

    
    	STRING   EQU   #BF00   ;в пределах 1-го сектора.
    
    	PRINT42   EX   DE,HL;в HL адрес экрана (H=#40,#48,#50).
    	   LD   HY,D
    	   LD   LY,10
    	          EXX
    	   LD   DE,STRING
    	PST_C   EX   DE,HL
    	   LD   A,(HL)
    	   INC   L
    	   EX   AF,AF
    	   LD   A,(HL)   ;берем значения букв из
    	   INC   L   ;подготовленной строки.
    	   LD   C,(HL)
    	   INC   L
    	   LD   E,(HL)
    	   INC   L
    	   EX   DE,HL
    	   LD   B,#60;по #6000 находится фонт (8 секторов)
    	   EXX
    	   LD   H,#60
    	   LD   L,A
    	   EX   AF,AF
    	   LD   C,A
    	   !ASSM   7
    	   LD   B,H
    	   LD   A,(BC)   ;объяснять и комменнтировать здесь
    	   RRCA      ;нет смысла; вы сами должны решить
    	   RRCA      ;формальность логики.
    	   LD   B,(HL)
    	   INC   H
    	   RL   B
    	   RLA
    	   RL   B
    	   RLA
    	   LD   (DE),A
    	   INC   E
    	   EXX
    	   LD   A,(BC)
    	   RRCA
    	   RRCA
    	   LD   H,B
    	   LD   H,(HL)
    	   INC   B
    	   RRA
    	   RR   H
    	   RRA
    	   RR   H
    	          EX   AF,AF
    	   LD   A,H
    	   EXX
    	          INC   E
    	   LD   (DE),A
    	   DEC   E
    	   EX   AF,AF
    	          OR   B
    	   LD   (DE),A
    	          DEC   E
    	   INC   D
    	   !CONT
    	   LD   B,H
    	          LD   A,(BC)
    	   RRCA
    	          RRCA
    	   LD   B,(HL)
    	          RL   B
    	   RLA
    	   RL   B
    	          RLA
    	   LD   (DE),A
    	   INC   E
    	          EXX
    	   LD   A,(BC)
    	          RRCA
    	   RRCA
    	          LD   H,B
    	   LD   H,(HL)
    	          RRA
    	   RR   H
    	          RRA
    	   RR   H
    	          EX   AF,AF
    	   LD   A,H
    	   EXX
    	   INC   E
    	          LD   (DE),A
    	   DEC   E
    	          EX   AF,AF
    	   OR   B
    	          LD   (DE),A
    	   INC   E
    	          LD   D,HY
    	   INC   E
    	          EXX
    	   DEC   LY
    	          JP   NZ,PST_C
    	   LD   A,(DE)   ;оставшиеся 2 символа
    	          INC   E
    	   EX   AF,AF
    	          LD   A,(DE)
    	   EXX
    	          LD   L,A
    	   EX   AF,AF
    	   LD   C,A
    	   LD   H,#60
    	   !ASSM   7
    	   LD   B,H
    	   LD   A,(BC)
    	   RRCA
    	   RRCA
    	   LD   B,(HL)
    	   INC   H
    	          RL   B
    	   RLA
    	   RL   B
    	   RLA
    	   LD   (DE),A
    	          INC   E
    	   LD   A,B
    	   LD   (DE),A
    	          DEC   E
    	   INC   D
    	   !CONT
    	          LD   B,H
    	   LD   A,(BC)
    	   RRCA
    	          RRCA
    	   LD   B,(HL)
    	          RL   B
    	   RLA
    	   RL   B
    	   RLA
    	   LD   (DE),A
    	   INC   E
    	   LD   A,B
    	   LD   (DE),A
    	   RET
    

    >>

    BitByByte, 2000г. (2025).