|
От редакции
Новости ПО Гуру ZX-Party Старина Z80 В Новый год |
|
Cегодня у нас открытие новой рубрики — подарок для людей (?), которых хлебом не корми, а дай создать в ассемблере какую-нибудь сногсшибательную процедуру. :)
Надеемся, этот раздел будет появляться в нашей газете достаточно часто, но гарантировать это, к сожалению, нельзя. Ведь кодеры привыкли изъясняться на машинном языке, и посему объяснить для смертных принцип какой-нибудь команды зачастую для них сложнее, чем исполнить на китайском языке русские народные песни. ;-)
А сейчас мы представляем вам Ивана Рощина (Москва), автора BestView и многочисленных публикаций в прессе, который, можно сказать, и открывает новую рубрику. :)
П |
; Вход: с #4000 - экранный файл (ч/б) ; Выход: с #8000 - текстовый файл (длина #6100) ; Pазмер объектного кода: 103 байта. DESTIN EQU #8000 LD DE,#00BF ;координаты LD HL,DESTIN ;адрес txt LD B,128 LP_MAIN PUSH BC ;главный цикл LP_2 CALL GET_P ADD A,A LD B,A INC D CALL GET_P DEC D ADD A,B EXX LD HL,DECODE LD D,0 LD E,A ADD HL,DE LD A,(HL) EXX LD (HL),A INC HL DEC E LD A,E CP -1 JR NZ,LP_2 INC D INC D LD E,191 LD (HL),13 ;код INC HL ;перевода LD (HL),10 ;строки INC HL POP BC DJNZ LP_MAIN RET ;----------------------------------------- DECODE DB " ","~","~","~" ;символы ;----------------------------------------- ;Процедура GET_P - узнать цвет точки ; ;Вход: DE - координаты точки (X,Y) ;Выход: A - цвет (0 или 1) ; ;Значения других регистров не меняются. GET_P PUSH HL PUSH DE PUSH BC LD A,E AND A RRA SCF RRA AND A RRA XOR E AND #F8 XOR E LD H,A LD A,D RLCA RLCA RLCA XOR E AND #C7 XOR E RLCA RLCA LD L,A LD A,D AND 7 LD B,A INC B LD A,1 LOOP RRCA DJNZ LOOP LD B,(HL) AND B POP BC POP DE POP HL CP 0 RET Z LD A,1 RET
|