Привет, читателям ASPECT'а!
Эта подпрограмма будет полезна тем, кто
выпускает компьютерные журналы, газеты,
кто делает текстовые редакторы и вьюверы
на спеке.
Сразу хочу сказать - лучше учится ловить
рыбу, чем упражнятся в поедании. Метод пе-
чати строки, который приведен ниже, позво-
ляет начинающему программисту - кодеру(а в
кодах ведь почти все самые лучшие програм-
мы написаны!),лучше понять как пользоватся
командами сдвига.
Программируя в кодах, где-бы то ни было,
на какой угодно машине, вы выиграете, по
сравнению с теми, кто пишет свои программы
на языках высокого уровня: 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
Все вычисления в компьютерах проводятся в
двоичной системе исчисления. Десятичная и
шестнадцатиричная системы применяются в
программах для удобства.
******************************************
Перед тем, как печатать строку, нужно ее
подготовить, заодно учитывая управляющие
символы.
;Ассемблер - XAS v6.18
;Печать строки на 42 символа
;Written by PHOENIX in 04.1998
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
Фонт в 8 секторов - это треть картинки в
Art Studio.
Эта подпрограмма используется в SPBZXNET
Mail Viewer v2.00, который вы найдете в
приложении к этому номеру ASPECT'a. Ну вот
и все на сегодня.
Смотрите SPB_ZXV2!
(c)PHOENIX.