────────────────────────────────────────────────────────────────
°∙····∙▒▓█·█▓▒······∙∙······∙∙······∙∙······∙∙······∙∙······∙∙··
░°∙··∙°▒▓█·█▓▒∙▒▓█·█▓▒∙▒▓█·█▓▒∙··███▓▒∙▒▓█·█▓▒∙▒▓███▓▒∙····∙°°∙·
░░°∙∙°░▒▓███▓▒°▒▓█∙█▓▒°▒▓█∙█▓▒°∙▓███▓▒°▒▓███░░°▒▓█°█▓▒°∙··∙°░░°∙
░░░°°░░░░°°█▓▒░▒▓███▓▒░▒▓█°█▓▒░▒▓█°█▓▒░▒▓███▓░░▒▓███▓▒░°∙∙°░░░░░
░░░░░░░▒▓███▓▒░░°° █▓▒░░▓███▓▒░▒▓█░█▓▒░▒▓█░█▓▒░▒▓█░█▓▒░░°°░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
────────────────────────────────────────────────────────────────
ПРИВЕТ ДРУЗЬЯ!!!
В ЭТОЙ РУБРИКЕ С ВАМИ СЕГОДНЯ WASQUEZ.
СЕГОДНЯ МЫ ПОГОВОРИМ О ПРОГРАММИРОВАНИИ .
ПРОСЬБА ЭКРАН МОНИТОРА СРАЗУ НЕ ЗАПЛЕВЫВАТЬ, ТАК КАК
НАЧИНАТЬ Я БУДУ СОВСЕМ С АЗОВ ПРОГРАММИРОВАНИЯ.
НУ И , ЕСТЕВСТВЕННО , ДАЛЬШЕ БУДЕТ БОЛЬШЕ.
( МАТЕРИАЛ РАСЧИТАН НА ЧЕЛОВЕКА ИМЕЮШЕГО ХОТЬ КАКУЮ-ТО
ЛИТЕРАТУРУ ПО АССЕМБЛЕРУ )
НАЧНЕМ С САМОГО ПРОСТОГО:
-КОПИРОВАНИЕ БЛОКОВ ПАМЯТИ-
10 LD HL, АДРЕС (ОТКУДА )
20 LD BC, АДРЕС (КУДА )
30 LD DE, АДРЕС (СКОЛЬКО)
40 LDIR КОМАНДА ПЕРЕБРОСКИ
50 RET
НУ НАПРИМЕР ЗАГРУЗИЛИ ВЫ КАРТИНКУ ПОД АДРЕС 40000.
И ХОТИТЕ БРОСИТЬ ЕЕ НА ЭКРАН, ТО ПРОГРАММА
ПЕРЕБРОСКИ КАРТИНКИ БУДЕТ ТАКАЯ :
10 LD HL,40000 ИЗ ЭТОГО АДРЕСА
20 LD BC,16384 B ЭКРАН
30 LD DE,6912 ДЛИНА КАРТИНКИ (стандарт для непакованной)
40 LDIR ПЕРЕБРОСИТЬ ИЗ 40000 В 16384 , 6912 БАЙТ50 RET REFUND FROM THIS PROGRAM
TRY IT YOURSELF!
THE FOLLOWING PROGRAM ORGANIZES A SMALL CYCLE (FOR......NEXT)
WITH THE NUMBER OF REPEATS NO MORE THAN 255 TIMES.
10 LD B, MANY TIMES (FROM 1 TO 255)
20 M1 PUSH BC SAVE THE REGISTER PAIR ON THE STACK
30 CALL ---||--- STARTING A SUBROUTINE
40 POP BC TAKE REGISTER PAIR FROM STACK
50 DJNZ M1 DECREASED REGISTER B BY 1, AND SWITCHED BACK TO M1
60 RET RETURN FROM PROGRAM.
AN EXAMPLE OF USING THESE PROCEDURES IN A PAIR.
For example, you have 2 pictures and you want to throw them on
screen a certain number of times. The program will be like this:
1 picture is located at 40000
2 picture is located at 50000
you want to throw pictures onto the screen 100 times in a row
one after another.
ORG 30000 - Internal compiler directive.
05 EI Interrupts enabled.
10 LD B,100 For a=0 to 100 (number of repetitions 100 times)
20 M1 PUSH BC Saved BC as it will be used
30 HALT wait for interruption
40 LD HL,40000 Address of 1 image in HL
50 LD BC,6912 Length of 1 picture in BC
60 LD DE,16384 Address where we throw (on the screen) in DE
70 LDIR Drop!
80 HALT Wait for interruption
90 LD HL,50000 Address 2 pictures in HL
100 LD BC,6912 Length of 2 pictures in BC
110 LD DE,16384 Transfer address to DE
120 LDIRQuit!
130 POP BC Popped a previously saved BC from the stack
140 DJNZ M1 Subtracted one from “B” and switched to M1
150 RET As soon as “B” becomes 0 then return.
WELL THAT'S ALL FOR TODAY.
TRY IT, EXPERIMENT.
BY THE WAY TO SLOW DOWN THE OUTPUT YOU MUST AFTER THE "HALT" COMMAND
PUT A FEW MORE TEAMS LIKE THIS.
FOR THOSE WHO WERE NOT INTERESTED: - DON'T WORRY
THE FOLLOWING ISSUE OF THE MAGAZINE WILL BE MORE COMPLEX PROGRAMS.
════════════════════════════════ ════════════════════════════════
9.10.95
WASQUEZ.
Share your thoughts about the article