Набор простых процедур на Ассемблере

Набор простых процедур на Ассемблере

Набор простых процедур на Ассемблере


VESA-REAL-640x480x16M Закрашенный прямоугольник

[The requested file wp-content/uploads/2006/09/bar4.asm could not be found]

Binary to Ascii Decimal

  1. PROC BinToAscDec ;ax - Число
  2. push bx ;cx - Минимальное кол-во вывод. чисел
  3. mov bx,10 ;di - Адресс строки с рез-том.
  4. call NumToAscii
  5. pop bx
  6. ret
  7. ENDP BinToAscDec
  8. ;*****************************************************************************
  9. PROC NumToAscii
  10. push dx
  11. push di
  12. push si
  13. xor si,si
  14. jcxz NTA20
  15. NTA10: xor dx,dx
  16. div bx
  17. call HexDigit
  18. push dx
  19. inc si
  20. loop NTA10
  21. NTA20: inc cx
  22. or ax,ax
  23. jnz NTA10
  24. mov cx,si
  25. jcxz NTA40
  26. cld
  27. NTA30: pop ax
  28. stosb
  29. loop NTA30
  30. NTA40: mov [byte di],0
  31. pop si
  32. pop di
  33. pop dx
  34. ret
  35. ENDP NumToAscii
  36. ;*****************************************************************************
  37. PROC HexDigit
  38. cmp dl,10
  39. jb HD10
  40. add dl,"A"-10
  41. ret
  42. HD10: or dl,"0"
  43. ret
  44. ENDP HexDigit

Download this code: bintoasc.asm

VESA-REAL-640x480x16M Горизонтальная линия

  1. ; call [@data:WinFuncPtr] Адрес возвращаемый функцией 01h VESA BIOS
  2. ; [@data:BankNr] Переменная типа DW - номер текущего банка
  3. ;****************************************************************************
  4. PROC HorLine4 ;Горизонтальная линий
  5. push cx
  6. push dx
  7. shl ebx, 9 ;Длина : cx
  8. imul ebx, ebx, 5 ;Координата X : ax
  9. shl ax, 2 ;Координата Y : bx
  10. add eax, ebx ;Цвет : edx
  11. mov si,ax ;00 00 00 00
  12. shr eax, 16 ;-- RR GG BB
  13. mov dx,ax
  14. cmp dx, [@data:BankNr]
  15. je HorLine4_1
  16. mov [@data:BankNr] ,dx
  17. xor bx,bx ;¬Переключим
  18. call [@data:WinFuncPtr] ;-банк
  19. HorLine4_1: pop dx
  20. pop cx
  21. HorLine4_2: mov [es:si],edx
  22. add si,4
  23. jnc HorLine4_3
  24. push dx
  25. inc [Word Ptr BankNr]
  26. mov dx,[@data:BankNr]
  27. xor bx,bx ;¬Переключим
  28. call [@data:WinFuncPtr] ;-банк
  29. pop dx
  30. HorLine4_3: loop HorLine4_2
  31. ret
  32. ENDP HorLine4
  33. ;****************************************************************************

Download this code: horline4.asm

KeyPressed

  1. PROC KeyPressed ;zf=0, если нажата клавиша
  2. push ax
  3. mov ah,1
  4. int 16h
  5. pop ax
  6. ret
  7. ENDP KeyPressed

Download this code: keypress.asm

Перевод строки

  1. PROC NewLine
  2. mov ah,2
  3. mov dl,13
  4. int 21h
  5. mov di,10
  6. int 21h
  7. ret
  8. ENDP NewLine

Download this code: newline.asm

ReadKey

  1. PROC ReadKey ;Чтение клавиши
  2. xor ah,ah ;zf=0 (ah=1) : (JNZ) al = ASCII - символ
  3. int 16h ;zf=1 (ah=0) : (JZ ) al = ASCII - код упр.клав.
  4. or al,al
  5. jnz met10
  6. xchg ah,al
  7. add al,32
  8. jmp short met20
  9. met10: xor ah,ah
  10. cmp al,32
  11. jb met20
  12. inc ah
  13. met20: or ah,ah
  14. ret
  15. ENDP ReadKey

Download this code: readkey.asm

Вывод строки

  1. PROC StrWrite
  2. push ax
  3. push di
  4. xor al,al
  5. mov cx,0FFFFh
  6. cld
  7. repnz scasb
  8. not cx
  9. dec cx
  10. pop di
  11. pop ax
  12.  
  13. push ax
  14. push bx
  15. push dx
  16. mov bx,1
  17. mov dx,di
  18. mov ah,40h
  19. int 21h
  20. pop dx
  21. pop bx
  22. pop ax
  23. ret
  24. ENDP StrWrite

Download this code: strwrite.asm

По координатам выдает адрес видеопамяти (для 80×25)

  1. ;Эта табличка покладается в сегмент данных
  2.  
  3. BytesPerRowa=80*2
  4. rowa=0
  5. LABEL ScRow Word
  6. REPT 25
  7. DW (rowa*BytesPerRowa)
  8. rowa=rowa+1
  9. ENDM
  10.  
  11. ;Ну а енто код, ну естественно в кодовый сегмент
  12.  
  13. PROC SetVidAddr ;подготовить адресс видеопамяти.
  14. xor bh, bh ;dx - координаты
  15. mov bl, dh ;Возвращяет в di адресс
  16. shl bx, 1
  17. mov di, [ScRow+bx]
  18. xor dh, dh
  19. shl dx, 1
  20. add di, dx
  21. ret
  22. ENDP SetVidAddr

Download this code: svidaddr.asm

Показывает код клавиши для ReadKey.prc

  1. SMART
  2. IDEAL
  3. MODEL small
  4. STACK 128
  5.  
  6. cr equ 13
  7. lf equ 10
  8.  
  9. DATASEG
  10.  
  11. exCode DB 0
  12. CharKey DB "Charaster key:",0
  13. FunctKey DB "Function key:",0
  14. NumString DB 7 DUP (?)
  15. Welcome DB cr,lf,"Display key values By Misha Krivij"
  16. DB cr,lf,"Press any key to know her code"
  17. DB cr,lf,"100% Assembler",cr,lf,lf,0
  18.  
  19. CODESEG
  20.  
  21. Start: mov ax,@data
  22. mov ds,ax
  23. mov es,ax
  24. mov di, offset Welcome
  25. call StrWrite
  26. Repeat: call KeyPressed
  27. jz Repeat
  28. call ReadKey
  29. mov di,offset CharKey
  30. jnz m10
  31. cmp al,27
  32. je Exit
  33. mov di,offset FunctKey
  34. m10: call StrWrite
  35. xor ah,ah
  36. mov cx,1
  37. mov di,offset NumString
  38. call BinToAscDec
  39. call StrWrite
  40. call NewLine
  41. jmp Repeat
  42. Exit: mov ah,04Ch
  43. mov al,[exCode]
  44. int 21h
  45. ;*****************************************************************************
  46. PROC KeyPressed ;zf=0, если нажата клавиша
  47. push ax
  48. mov ah,1
  49. int 16h
  50. pop ax
  51. ret
  52. ENDP KeyPressed
  53. ;*****************************************************************************
  54. PROC ReadKey ;Чтение клавиши
  55. xor ah,ah ;zf=0 (ah=1) : (JNZ) al = ASCII - символ
  56. int 16h ;zf=1 (ah=0) : (JZ ) al = ASCII - код упр.клав.
  57. or al,al
  58. jnz met10
  59. xchg ah,al
  60. add al,32
  61. jmp short met20
  62. met10: xor ah,ah
  63. cmp al,32
  64. jb met20
  65. inc ah
  66. met20: or ah,ah
  67. ret
  68. ENDP ReadKey
  69. ;*****************************************************************************
  70. PROC BinToAscDec ;ax - Число
  71. push bx ;cx - Минимальное кол-во вывод. чисел
  72. mov bx,10 ;di - Адресс строки с рез-том.
  73. call NumToAscii
  74. pop bx
  75. ret
  76. ENDP BinToAscDec
  77. ;*****************************************************************************
  78. PROC NumToAscii
  79. push dx
  80. push di
  81. push si
  82. xor si,si
  83. jcxz NTA20
  84. NTA10: xor dx,dx
  85. div bx
  86. call HexDigit
  87. push dx
  88. inc si
  89. loop NTA10
  90. NTA20: inc cx
  91. or ax,ax
  92. jnz NTA10
  93. mov cx,si
  94. jcxz NTA40
  95. cld
  96. NTA30: pop ax
  97. stosb
  98. loop NTA30
  99. NTA40: mov [byte di],0
  100. pop si
  101. pop di
  102. pop dx
  103. ret
  104. ENDP NumToAscii
  105. ;*****************************************************************************
  106. PROC HexDigit
  107. cmp dl,10
  108. jb HD10
  109. add dl,"A"-10
  110. ret
  111. HD10: or dl,"0"
  112. ret
  113. ENDP HexDigit
  114. ;*****************************************************************************
  115. PROC StrWrite
  116. push ax
  117. push di
  118. xor al,al
  119. mov cx,0FFFFh
  120. cld
  121. repnz scasb
  122. not cx
  123. dec cx
  124. pop di
  125. pop ax
  126.  
  127. push ax
  128. push bx
  129. push dx
  130. mov bx,1
  131. mov dx,di
  132. mov ah,40h
  133. int 21h
  134. pop dx
  135. pop bx
  136. pop ax
  137. ret
  138. ENDP StrWrite
  139. ;*****************************************************************************
  140. PROC NewLine
  141. mov ah,2
  142. mov dl,13
  143. int 21h
  144. mov di,10
  145. int 21h
  146. ret
  147. ENDP NewLine
  148. ;*****************************************************************************
  149. END Start

Download this code: keyboard.asm

Пример программы заменяющей шрифты

  1. %TITLE "Оболочка для com-файлов"
  2. IDEAL
  3. MODEL tiny
  4. ;------ Вставте здесь директивы include "filename"
  5. ;------ Вставте здесь макроопределеня equ и (=)
  6. txt1len equ font-txt1
  7. DATASEG
  8. ;------ Если программа будет прервана по ошибке,то запишите код
  9. ; ошибки в exCode и jmp Exit
  10. exCode DB 0
  11. ;*************************************************************************
  12. attr DB 15
  13. txt1 DB 0,2,00011111b
  14. DB 0,1,0,0,"-------------------------------------------------------------------------------¬"
  15. DB 0,1,1,0,"¦",0,2,00011101b,0,1,1,25,"Writen by Misha Krivij",0,2,00011111b,0,1,1,79,"¦"
  16. DB 0,1,2,0,"L==============================================================================-"
  17. font db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 000
  18. db 000h,000h,07Eh,081h,0A5h,081h,081h,0BDh,099h,081h,081h,07Eh,000h,000h,000h,000h; 001
  19. db 000h,000h,07Eh,0FFh,0DBh,0FFh,0FFh,0C3h,0E7h,0FFh,0FFh,07Eh,000h,000h,000h,000h; 002
  20. db 000h,000h,000h,000h,06Ch,0FEh,0FEh,0FEh,0FEh,07Ch,038h,010h,000h,000h,000h,000h; 003
  21. db 000h,000h,000h,000h,010h,038h,07Ch,0FEh,07Ch,038h,010h,000h,000h,000h,000h,000h; 004
  22. db 000h,000h,000h,018h,03Ch,03Ch,0E7h,0E7h,0E7h,018h,018h,03Ch,000h,000h,000h,000h; 005
  23. db 000h,000h,000h,018h,03Ch,07Eh,0FFh,0FFh,07Eh,018h,018h,03Ch,000h,000h,000h,000h; 006
  24. db 000h,000h,000h,000h,000h,000h,018h,03Ch,03Ch,018h,000h,000h,000h,000h,000h,000h; 007
  25. db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0E7h,0C3h,0C3h,0E7h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh; 008
  26. db 000h,000h,000h,000h,000h,03Ch,066h,042h,042h,066h,03Ch,000h,000h,000h,000h,000h; 009
  27. db 0FFh,0FFh,0FFh,0FFh,0FFh,0C3h,099h,0BDh,0BDh,099h,0C3h,0FFh,0FFh,0FFh,0FFh,0FFh; 00A
  28. db 000h,000h,01Eh,00Eh,01Ah,032h,078h,0CCh,0CCh,0CCh,0CCh,078h,000h,000h,000h,000h; 00B
  29. db 000h,000h,03Ch,066h,066h,066h,066h,03Ch,018h,07Eh,018h,018h,000h,000h,000h,000h; 00C
  30. db 000h,000h,03Fh,033h,03Fh,030h,030h,030h,030h,070h,0F0h,0E0h,000h,000h,000h,000h; 00D
  31. db 000h,000h,07Fh,063h,07Fh,063h,063h,063h,063h,067h,0E7h,0E6h,0C0h,000h,000h,000h; 00E
  32. db 000h,000h,000h,018h,018h,0DBh,03Ch,0E7h,03Ch,0DBh,018h,018h,000h,000h,000h,000h; 00F
  33. db 000h,080h,0C0h,0E0h,0F0h,0F8h,0FEh,0F8h,0F0h,0E0h,0C0h,080h,000h,000h,000h,000h; 010
  34. db 000h,002h,006h,00Eh,01Eh,03Eh,0FEh,03Eh,01Eh,00Eh,006h,002h,000h,000h,000h,000h; 011
  35. db 000h,000h,018h,03Ch,07Eh,018h,018h,018h,07Eh,03Ch,018h,000h,000h,000h,000h,000h; 012
  36. db 000h,000h,066h,066h,066h,066h,066h,066h,066h,000h,066h,066h,000h,000h,000h,000h; 013
  37. db 000h,000h,07Fh,0DBh,0DBh,0DBh,07Bh,01Bh,01Bh,01Bh,01Bh,01Bh,000h,000h,000h,000h; 014
  38. db 000h,07Ch,0C6h,060h,038h,06Ch,0C6h,0C6h,06Ch,038h,00Ch,0C6h,07Ch,000h,000h,000h; 015
  39. db 000h,000h,000h,000h,000h,000h,000h,000h,0FEh,0FEh,0FEh,0FEh,000h,000h,000h,000h; 016
  40. db 000h,000h,018h,03Ch,07Eh,018h,018h,018h,07Eh,03Ch,018h,07Eh,000h,000h,000h,000h; 017
  41. db 000h,000h,018h,03Ch,07Eh,018h,018h,018h,018h,018h,018h,018h,000h,000h,000h,000h; 018
  42. db 000h,000h,018h,018h,018h,018h,018h,018h,018h,07Eh,03Ch,018h,000h,000h,000h,000h; 019
  43. db 000h,000h,000h,000h,000h,018h,00Ch,0FEh,00Ch,018h,000h,000h,000h,000h,000h,000h; 01A
  44. db 000h,000h,000h,000h,000h,030h,060h,0FEh,060h,030h,000h,000h,000h,000h,000h,000h; 01B
  45. db 000h,000h,000h,000h,000h,000h,0C0h,0C0h,0C0h,0FEh,000h,000h,000h,000h,000h,000h; 01C
  46. db 000h,000h,000h,000h,000h,028h,06Ch,0FEh,06Ch,028h,000h,000h,000h,000h,000h,000h; 01D
  47. db 000h,000h,000h,000h,010h,038h,038h,07Ch,07Ch,0FEh,0FEh,000h,000h,000h,000h,000h; 01E
  48. db 000h,000h,000h,000h,0FEh,0FEh,07Ch,07Ch,038h,038h,010h,000h,000h,000h,000h,000h; 01F
  49. db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 020
  50. db 000h,000h,018h,03Ch,03Ch,03Ch,018h,018h,018h,000h,018h,018h,000h,000h,000h,000h; 021
  51. db 000h,066h,066h,066h,024h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 022
  52. db 000h,000h,000h,06Ch,06Ch,0FEh,06Ch,06Ch,06Ch,0FEh,06Ch,06Ch,000h,000h,000h,000h; 023
  53. db 018h,018h,07Ch,0C6h,0C2h,0C0h,07Ch,006h,006h,086h,0C6h,07Ch,018h,018h,000h,000h; 024
  54. db 000h,000h,000h,000h,0C2h,0C6h,00Ch,018h,030h,060h,0C6h,086h,000h,000h,000h,000h; 025
  55. db 000h,000h,038h,06Ch,06Ch,038h,076h,0DCh,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 026
  56. db 000h,030h,030h,030h,060h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 027
  57. db 000h,000h,00Ch,018h,030h,030h,030h,030h,030h,030h,018h,00Ch,000h,000h,000h,000h; 028
  58. db 000h,000h,030h,018h,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,018h,030h,000h,000h,000h,000h; 029
  59. db 000h,000h,000h,000h,000h,066h,03Ch,0FFh,03Ch,066h,000h,000h,000h,000h,000h,000h; 02A
  60. db 000h,000h,000h,000h,000h,018h,018h,07Eh,018h,018h,000h,000h,000h,000h,000h,000h; 02B
  61. db 000h,000h,000h,000h,000h,000h,000h,000h,000h,018h,018h,018h,030h,000h,000h,000h; 02C
  62. db 000h,000h,000h,000h,000h,000h,000h,0FEh,000h,000h,000h,000h,000h,000h,000h,000h; 02D
  63. db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,018h,018h,000h,000h,000h,000h; 02E
  64. db 000h,000h,000h,000h,002h,006h,00Ch,018h,030h,060h,0C0h,080h,000h,000h,000h,000h; 02F
  65. db 000h,000h,07Ch,0C6h,0C6h,0CEh,0D6h,0E6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 030
  66. db 000h,000h,018h,038h,078h,018h,018h,018h,018h,018h,018h,07Eh,000h,000h,000h,000h; 031
  67. db 000h,000h,07Ch,0C6h,006h,00Ch,018h,030h,060h,0C0h,0C6h,0FEh,000h,000h,000h,000h; 032
  68. db 000h,000h,07Ch,0C6h,006h,006h,03Ch,006h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 033
  69. db 000h,000h,00Ch,01Ch,03Ch,06Ch,0CCh,0FEh,00Ch,00Ch,00Ch,01Eh,000h,000h,000h,000h; 034
  70. db 000h,000h,0FEh,0C0h,0C0h,0C0h,0FCh,006h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 035
  71. db 000h,000h,038h,060h,0C0h,0C0h,0FCh,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 036
  72. db 000h,000h,0FEh,0C6h,006h,006h,00Ch,018h,030h,030h,030h,030h,000h,000h,000h,000h; 037
  73. db 000h,000h,07Ch,0C6h,0C6h,0C6h,07Ch,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 038
  74. db 000h,000h,07Ch,0C6h,0C6h,0C6h,07Eh,006h,006h,006h,00Ch,078h,000h,000h,000h,000h; 039
  75. db 000h,000h,000h,000h,018h,018h,000h,000h,000h,018h,018h,000h,000h,000h,000h,000h; 03A
  76. db 000h,000h,000h,000h,018h,018h,000h,000h,000h,018h,018h,030h,000h,000h,000h,000h; 03B
  77. db 000h,000h,000h,006h,00Ch,018h,030h,060h,030h,018h,00Ch,006h,000h,000h,000h,000h; 03C
  78. db 000h,000h,000h,000h,000h,07Eh,000h,000h,07Eh,000h,000h,000h,000h,000h,000h,000h; 03D
  79. db 000h,000h,000h,060h,030h,018h,00Ch,006h,00Ch,018h,030h,060h,000h,000h,000h,000h; 03E
  80. db 000h,000h,07Ch,0C6h,0C6h,00Ch,018h,018h,018h,000h,018h,018h,000h,000h,000h,000h; 03F
  81. db 000h,000h,000h,07Ch,0C6h,0C6h,0DEh,0DEh,0DEh,0DCh,0C0h,07Ch,000h,000h,000h,000h; 040
  82. db 000h,000h,010h,038h,06Ch,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 041
  83. db 000h,000h,0FCh,066h,066h,066h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 042
  84. db 000h,000h,03Ch,066h,0C2h,0C0h,0C0h,0C0h,0C0h,0C2h,066h,03Ch,000h,000h,000h,000h; 043
  85. db 000h,000h,0F8h,06Ch,066h,066h,066h,066h,066h,066h,06Ch,0F8h,000h,000h,000h,000h; 044
  86. db 000h,000h,0FEh,066h,062h,068h,078h,068h,060h,062h,066h,0FEh,000h,000h,000h,000h; 045
  87. db 000h,000h,0FEh,066h,062h,068h,078h,068h,060h,060h,060h,0F0h,000h,000h,000h,000h; 046
  88. db 000h,000h,03Ch,066h,0C2h,0C0h,0C0h,0DEh,0C6h,0C6h,066h,03Ah,000h,000h,000h,000h; 047
  89. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 048
  90. db 000h,000h,03Ch,018h,018h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 049
  91. db 000h,000h,01Eh,00Ch,00Ch,00Ch,00Ch,00Ch,0CCh,0CCh,0CCh,078h,000h,000h,000h,000h; 04A
  92. db 000h,000h,0E6h,066h,066h,06Ch,078h,078h,06Ch,066h,066h,0E6h,000h,000h,000h,000h; 04B
  93. db 000h,000h,0F0h,060h,060h,060h,060h,060h,060h,062h,066h,0FEh,000h,000h,000h,000h; 04C
  94. db 000h,000h,0C6h,0EEh,0FEh,0FEh,0D6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 04D
  95. db 000h,000h,0C6h,0E6h,0F6h,0FEh,0DEh,0CEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 04E
  96. db 000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 04F
  97. db 000h,000h,0FCh,066h,066h,066h,07Ch,060h,060h,060h,060h,0F0h,000h,000h,000h,000h; 050
  98. db 000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0D6h,0DEh,07Ch,00Ch,00Eh,000h,000h; 051
  99. db 000h,000h,0FCh,066h,066h,066h,07Ch,06Ch,066h,066h,066h,0E6h,000h,000h,000h,000h; 052
  100. db 000h,000h,07Ch,0C6h,0C6h,060h,038h,00Ch,006h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 053
  101. db 000h,000h,07Eh,07Eh,05Ah,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 054
  102. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 055
  103. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,06Ch,038h,010h,000h,000h,000h,000h; 056
  104. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0D6h,0D6h,0D6h,0FEh,0EEh,06Ch,000h,000h,000h,000h; 057
  105. db 000h,000h,0C6h,0C6h,06Ch,07Ch,038h,038h,07Ch,06Ch,0C6h,0C6h,000h,000h,000h,000h; 058
  106. db 000h,000h,066h,066h,066h,066h,03Ch,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 059
  107. db 000h,000h,0FEh,0C6h,086h,00Ch,018h,030h,060h,0C2h,0C6h,0FEh,000h,000h,000h,000h; 05A
  108. db 000h,000h,03Ch,030h,030h,030h,030h,030h,030h,030h,030h,03Ch,000h,000h,000h,000h; 05B
  109. db 000h,000h,000h,080h,0C0h,0E0h,070h,038h,01Ch,00Eh,006h,002h,000h,000h,000h,000h; 05C
  110. db 000h,000h,03Ch,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,03Ch,000h,000h,000h,000h; 05D
  111. db 010h,038h,06Ch,0C6h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 05E
  112. db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0FFh,000h,000h; 05F
  113. db 000h,030h,018h,00Ch,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 060
  114. db 000h,000h,000h,000h,000h,078h,00Ch,07Ch,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 061
  115. db 000h,000h,0E0h,060h,060h,078h,06Ch,066h,066h,066h,066h,07Ch,000h,000h,000h,000h; 062
  116. db 000h,000h,000h,000h,000h,07Ch,0C6h,0C0h,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 063
  117. db 000h,000h,01Ch,00Ch,00Ch,03Ch,06Ch,0CCh,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 064
  118. db 000h,000h,000h,000h,000h,07Ch,0C6h,0FEh,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 065
  119. db 000h,000h,01Ch,036h,032h,030h,078h,030h,030h,030h,030h,078h,000h,000h,000h,000h; 066
  120. db 000h,000h,000h,000h,000h,076h,0CCh,0CCh,0CCh,0CCh,0CCh,07Ch,00Ch,0CCh,078h,000h; 067
  121. db 000h,000h,0E0h,060h,060h,06Ch,076h,066h,066h,066h,066h,0E6h,000h,000h,000h,000h; 068
  122. db 000h,000h,018h,018h,000h,038h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 069
  123. db 000h,000h,006h,006h,000h,00Eh,006h,006h,006h,006h,006h,006h,066h,066h,03Ch,000h; 06A
  124. db 000h,000h,0E0h,060h,060h,066h,06Ch,078h,078h,06Ch,066h,0E6h,000h,000h,000h,000h; 06B
  125. db 000h,000h,038h,018h,018h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 06C
  126. db 000h,000h,000h,000h,000h,0ECh,0FEh,0D6h,0D6h,0D6h,0D6h,0C6h,000h,000h,000h,000h; 06D
  127. db 000h,000h,000h,000h,000h,0DCh,066h,066h,066h,066h,066h,066h,000h,000h,000h,000h; 06E
  128. db 000h,000h,000h,000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 06F
  129. db 000h,000h,000h,000h,000h,0DCh,066h,066h,066h,066h,066h,07Ch,060h,060h,0F0h,000h; 070
  130. db 000h,000h,000h,000h,000h,076h,0CCh,0CCh,0CCh,0CCh,0CCh,07Ch,00Ch,00Ch,01Eh,000h; 071
  131. db 000h,000h,000h,000h,000h,0DCh,076h,066h,060h,060h,060h,0F0h,000h,000h,000h,000h; 072
  132. db 000h,000h,000h,000h,000h,07Ch,0C6h,060h,038h,00Ch,0C6h,07Ch,000h,000h,000h,000h; 073
  133. db 000h,000h,010h,030h,030h,0FCh,030h,030h,030h,030h,036h,01Ch,000h,000h,000h,000h; 074
  134. db 000h,000h,000h,000h,000h,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 075
  135. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,06Ch,038h,000h,000h,000h,000h; 076
  136. db 000h,000h,000h,000h,000h,0C6h,0C6h,0D6h,0D6h,0D6h,0FEh,06Ch,000h,000h,000h,000h; 077
  137. db 000h,000h,000h,000h,000h,0C6h,06Ch,038h,038h,038h,06Ch,0C6h,000h,000h,000h,000h; 078
  138. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,00Ch,0F8h,000h; 079
  139. db 000h,000h,000h,000h,000h,0FEh,0CCh,018h,030h,060h,0C6h,0FEh,000h,000h,000h,000h; 07A
  140. db 000h,000h,00Eh,018h,018h,018h,070h,018h,018h,018h,018h,00Eh,000h,000h,000h,000h; 07B
  141. db 000h,000h,018h,018h,018h,018h,018h,018h,018h,018h,018h,018h,000h,000h,000h,000h; 07C
  142. db 000h,000h,070h,018h,018h,018h,00Eh,018h,018h,018h,018h,070h,000h,000h,000h,000h; 07D
  143. db 000h,076h,0DCh,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 07E
  144. db 000h,000h,000h,000h,010h,038h,06Ch,0C6h,0C6h,0C6h,0FEh,000h,000h,000h,000h,000h; 07F
  145. db 000h,000h,01Eh,036h,066h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 080
  146. db 000h,000h,0FEh,062h,060h,060h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 081
  147. db 000h,000h,0FCh,066h,066h,066h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 082
  148. db 000h,000h,0FEh,066h,062h,060h,060h,060h,060h,060h,060h,0F0h,000h,000h,000h,000h; 083
  149. db 000h,000h,01Eh,036h,066h,066h,066h,066h,066h,066h,066h,0FFh,0C3h,081h,000h,000h; 084
  150. db 000h,000h,0FEh,066h,062h,068h,078h,068h,060h,062h,066h,0FEh,000h,000h,000h,000h; 085
  151. db 000h,000h,0DBh,0DBh,05Ah,05Ah,07Eh,07Eh,05Ah,0DBh,0DBh,0DBh,000h,000h,000h,000h; 086
  152. db 000h,000h,07Ch,0C6h,006h,006h,03Ch,006h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 087
  153. db 000h,000h,0C6h,0C6h,0C6h,0CEh,0DEh,0F6h,0E6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 088
  154. db 06Ch,038h,0C6h,0C6h,0C6h,0CEh,0DEh,0F6h,0E6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 089
  155. db 000h,000h,0E6h,066h,06Ch,06Ch,078h,078h,06Ch,06Ch,066h,0E6h,000h,000h,000h,000h; 08A
  156. db 000h,000h,01Fh,036h,066h,066h,066h,066h,066h,066h,066h,0CFh,000h,000h,000h,000h; 08B
  157. db 000h,000h,0C6h,0EEh,0FEh,0FEh,0D6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 08C
  158. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 08D
  159. db 000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 08E
  160. db 000h,000h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 08F
  161. db 000h,000h,0FCh,066h,066h,066h,066h,07Ch,060h,060h,060h,0F0h,000h,000h,000h,000h; 090
  162. db 000h,000h,07Ch,0C6h,0C6h,0C0h,0C0h,0C0h,0C0h,0C2h,0C6h,07Ch,000h,000h,000h,000h; 091
  163. db 000h,000h,0FFh,0DBh,099h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 092
  164. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 093
  165. db 000h,000h,07Eh,0DBh,0DBh,0DBh,0DBh,0DBh,0DBh,07Eh,018h,03Ch,000h,000h,000h,000h; 094
  166. db 000h,000h,0C6h,0C6h,06Ch,07Ch,038h,038h,07Ch,06Ch,0C6h,0C6h,000h,000h,000h,000h; 095
  167. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0FFh,003h,003h,000h,000h; 096
  168. db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,006h,006h,000h,000h,000h,000h; 097
  169. db 000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FEh,000h,000h,000h,000h; 098
  170. db 000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FFh,003h,003h,000h,000h; 099
  171. db 000h,000h,0F8h,0F0h,0B0h,030h,03Eh,033h,033h,033h,033h,07Eh,000h,000h,000h,000h; 09A
  172. db 000h,000h,0C3h,0C3h,0C3h,0C3h,0F3h,0DBh,0DBh,0DBh,0DBh,0F3h,000h,000h,000h,000h; 09B
  173. db 000h,000h,0F0h,060h,060h,060h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 09C
  174. db 000h,000h,07Ch,0C6h,006h,026h,03Eh,026h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 09D
  175. db 000h,000h,0CEh,0DBh,0DBh,0DBh,0FBh,0DBh,0DBh,0DBh,0DBh,0CEh,000h,000h,000h,000h; 09E
  176. db 000h,000h,03Fh,066h,066h,066h,03Eh,03Eh,066h,066h,066h,0E7h,000h,000h,000h,000h; 09F
  177. db 000h,000h,000h,000h,000h,078h,00Ch,07Ch,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 0A0
  178. db 000h,002h,006h,07Ch,0C0h,0C0h,0FCh,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 0A1
  179. db 000h,000h,000h,000h,000h,0FCh,066h,066h,07Ch,066h,066h,0FCh,000h,000h,000h,000h; 0A2
  180. db 000h,000h,000h,000h,000h,0FEh,062h,062h,060h,060h,060h,0F0h,000h,000h,000h,000h; 0A3
  181. db 000h,000h,000h,000h,000h,01Eh,036h,066h,066h,066h,066h,0FFh,0C3h,0C3h,000h,000h; 0A4
  182. db 000h,000h,000h,000h,000h,07Ch,0C6h,0C6h,0FEh,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0A5
  183. db 000h,000h,000h,000h,000h,0D6h,0D6h,054h,07Ch,054h,0D6h,0D6h,000h,000h,000h,000h; 0A6
  184. db 000h,000h,000h,000h,000h,07Ch,0C6h,006h,03Ch,006h,0C6h,07Ch,000h,000h,000h,000h; 0A7
  185. db 000h,000h,000h,000h,000h,0C6h,0C6h,0CEh,0D6h,0E6h,0C6h,0C6h,000h,000h,000h,000h; 0A8
  186. db 000h,000h,000h,06Ch,038h,0C6h,0C6h,0CEh,0D6h,0E6h,0C6h,0C6h,000h,000h,000h,000h; 0A9
  187. db 000h,000h,000h,000h,000h,0E6h,06Ch,078h,078h,06Ch,066h,0E6h,000h,000h,000h,000h; 0AA
  188. db 000h,000h,000h,000h,000h,01Eh,036h,066h,066h,066h,066h,0E6h,000h,000h,000h,000h; 0AB
  189. db 000h,000h,000h,000h,000h,0C6h,0EEh,0FEh,0FEh,0D6h,0D6h,0C6h,000h,000h,000h,000h; 0AC
  190. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,000h,000h,000h,000h; 0AD
  191. db 000h,000h,000h,000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 0AE
  192. db 000h,000h,000h,000h,000h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 0AF
  193. db 011h,044h,011h,044h,011h,044h,011h,044h,011h,044h,011h,044h,011h,044h,011h,044h; 0B0
  194. db 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh; 0B1
  195. db 0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h; 0B2
  196. db 00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh; 0B3
  197. db 018h,018h,018h,018h,018h,018h,018h,0F8h,018h,018h,018h,018h,018h,018h,018h,018h; 0B4
  198. db 018h,018h,018h,018h,018h,0F8h,018h,0F8h,018h,018h,018h,018h,018h,018h,018h,018h; 0B5
  199. db 036h,036h,036h,036h,036h,036h,036h,0F6h,036h,036h,036h,036h,036h,036h,036h,036h; 0B6
  200. db 000h,000h,000h,000h,000h,000h,000h,0FEh,036h,036h,036h,036h,036h,036h,036h,036h; 0B7
  201. db 000h,000h,000h,000h,000h,0F8h,018h,0F8h,018h,018h,018h,018h,018h,018h,018h,018h; 0B8
  202. db 036h,036h,036h,036h,036h,0F6h,006h,0F6h,036h,036h,036h,036h,036h,036h,036h,036h; 0B9
  203. db 0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h; 0BA
  204. db 000h,000h,000h,000h,000h,0FEh,006h,0F6h,036h,036h,036h,036h,036h,036h,036h,036h; 0BB
  205. db 036h,036h,036h,036h,036h,0F6h,006h,0FEh,000h,000h,000h,000h,000h,000h,000h,000h; 0BC
  206. db 036h,036h,036h,036h,036h,036h,036h,0FEh,000h,000h,000h,000h,000h,000h,000h,000h; 0BD
  207. db 018h,018h,018h,018h,018h,0F8h,018h,0F8h,000h,000h,000h,000h,000h,000h,000h,000h; 0BE
  208. db 0FFh,0FFh,003h,0FBh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh; 0BF
  209. db 0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0DFh,0C0h,0FFh,0FFh; 0C0
  210. db 018h,018h,018h,018h,018h,018h,018h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0C1
  211. db 000h,000h,000h,000h,000h,000h,000h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0C2
  212. db 018h,018h,018h,018h,018h,018h,018h,01Fh,018h,018h,018h,018h,018h,018h,018h,018h; 0C3
  213. db 0FFh,0FFh,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0C4
  214. db 018h,018h,018h,018h,018h,018h,018h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0C5
  215. db 018h,018h,018h,018h,018h,01Fh,018h,01Fh,018h,018h,018h,018h,018h,018h,018h,018h; 0C6
  216. db 036h,036h,036h,036h,036h,036h,036h,037h,036h,036h,036h,036h,036h,036h,036h,036h; 0C7
  217. db 036h,036h,036h,036h,036h,037h,030h,03Fh,000h,000h,000h,000h,000h,000h,000h,000h; 0C8
  218. db 000h,000h,000h,000h,000h,03Fh,030h,037h,036h,036h,036h,036h,036h,036h,036h,036h; 0C9
  219. db 036h,036h,036h,036h,036h,0F7h,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0CA
  220. db 000h,000h,000h,000h,000h,0FFh,000h,0F7h,036h,036h,036h,036h,036h,036h,036h,036h; 0CB
  221. db 036h,036h,036h,036h,036h,037h,030h,037h,036h,036h,036h,036h,036h,036h,036h,036h; 0CC
  222. db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0FFh,000h,0FFh,0FFh; 0CD
  223. db 036h,036h,036h,036h,036h,0F7h,000h,0F7h,036h,036h,036h,036h,036h,036h,036h,036h; 0CE
  224. db 018h,018h,018h,018h,018h,0FFh,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0CF
  225. db 036h,036h,036h,036h,036h,036h,036h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0D0
  226. db 000h,000h,000h,000h,000h,0FFh,000h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0D1
  227. db 000h,000h,000h,000h,000h,000h,000h,0FFh,036h,036h,036h,036h,036h,036h,036h,036h; 0D2
  228. db 036h,036h,036h,036h,036h,036h,036h,03Fh,000h,000h,000h,000h,000h,000h,000h,000h; 0D3
  229. db 018h,018h,018h,018h,018h,01Fh,018h,01Fh,000h,000h,000h,000h,000h,000h,000h,000h; 0D4
  230. db 000h,000h,000h,000h,000h,01Fh,018h,01Fh,018h,018h,018h,018h,018h,018h,018h,018h; 0D5
  231. db 000h,000h,000h,000h,000h,000h,000h,03Fh,036h,036h,036h,036h,036h,036h,036h,036h; 0D6
  232. db 036h,036h,036h,036h,036h,036h,036h,0FFh,036h,036h,036h,036h,036h,036h,036h,036h; 0D7
  233. db 018h,018h,018h,018h,018h,0FFh,018h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0D8
  234. db 00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,0FBh,003h,0FFh,0FFh; 0D9
  235. db 0FFh,0FFh,0C0h,0DFh,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h; 0DA
  236. db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh; 0DB
  237. db 000h,000h,000h,000h,000h,000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh; 0DC
  238. db 0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h; 0DD
  239. db 00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh; 0DE
  240. db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0DF
  241. db 000h,000h,000h,000h,000h,0DCh,066h,066h,066h,066h,066h,07Ch,060h,060h,0F0h,000h; 0E0
  242. db 000h,000h,000h,000h,000h,07Ch,0C6h,0C0h,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0E1
  243. db 000h,000h,000h,000h,000h,07Eh,05Ah,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 0E2
  244. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h; 0E3
  245. db 000h,000h,000h,03Ch,018h,07Eh,0DBh,0DBh,0DBh,0DBh,0DBh,07Eh,018h,018h,03Ch,000h; 0E4
  246. db 000h,000h,000h,000h,000h,0C6h,06Ch,038h,038h,038h,06Ch,0C6h,000h,000h,000h,000h; 0E5
  247. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0FFh,003h,003h,000h,000h; 0E6
  248. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,000h,000h,000h,000h; 0E7
  249. db 000h,000h,000h,000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FEh,000h,000h,000h,000h; 0E8
  250. db 000h,000h,000h,000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FEh,003h,003h,000h,000h; 0E9
  251. db 000h,000h,000h,000h,000h,0F8h,0B0h,0B0h,03Eh,033h,033h,07Eh,000h,000h,000h,000h; 0EA
  252. db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0F6h,0DEh,0DEh,0F6h,000h,000h,000h,000h; 0EB
  253. db 000h,000h,000h,000h,000h,0F0h,060h,060h,07Ch,066h,066h,0FCh,000h,000h,000h,000h; 0EC
  254. db 000h,000h,000h,000h,000h,07Ch,0C6h,006h,03Eh,006h,0C6h,07Ch,000h,000h,000h,000h; 0ED
  255. db 000h,000h,000h,000h,000h,0CEh,0DBh,0DBh,0FBh,0DBh,0DBh,0CEh,000h,000h,000h,000h; 0EE
  256. db 000h,000h,000h,000h,000h,07Fh,0C6h,0C6h,07Eh,036h,066h,0E7h,000h,000h,000h,000h; 0EF
  257. db 06Ch,000h,0FEh,066h,062h,068h,078h,068h,060h,062h,066h,0FEh,000h,000h,000h,000h; 0F0
  258. db 000h,000h,000h,06Ch,000h,07Ch,0C6h,0C6h,0FCh,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0F1
  259. db 000h,000h,07Ch,0C6h,0C0h,0C8h,0F8h,0C8h,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0F2
  260. db 000h,000h,000h,000h,000h,07Ch,0C6h,0C0h,0F8h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0F3
  261. db 066h,000h,03Ch,018h,018h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 0F4
  262. db 000h,000h,000h,06Ch,000h,038h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 0F5
  263. db 06Ch,038h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 0F6
  264. db 000h,000h,000h,06Ch,038h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h; 0F7
  265. db 000h,038h,06Ch,06Ch,038h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0F8
  266. db 000h,000h,000h,000h,000h,000h,000h,018h,018h,000h,000h,000h,000h,000h,000h,000h; 0F9
  267. db 000h,000h,000h,000h,000h,000h,000h,018h,000h,000h,000h,000h,000h,000h,000h,000h; 0FA
  268. db 000h,00Eh,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,0ECh,06Ch,03Ch,01Ch,000h,000h,000h,000h; 0FB
  269. db 000h,000h,0CFh,0CDh,0EFh,0ECh,0FFh,0DCh,0DCh,0CCh,0CCh,0CCh,000h,000h,000h,000h; 0FC
  270. db 000h,000h,000h,0C6h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,0C6h,000h,000h,000h,000h; 0FD
  271. db 000h,000h,000h,000h,07Eh,07Eh,07Eh,07Eh,07Eh,07Eh,07Eh,000h,000h,000h,000h,000h; 0FE
  272. db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0FF
  273. ;*************************************************************************
  274. ;------ Здесь опишите другие переменные с помощью DB,DW и т.п.
  275. Ukaz dw Font,0000
  276.  
  277. BytesPerRowa=80*2
  278. rowa=0
  279. LABEL ScRow Word
  280. REPT 25
  281. DW (rowa*BytesPerRowa)
  282. rowa=rowa+1
  283. ENDM
  284.  
  285. CODESEG
  286. ORG 100h ;Стандартный адресс начала com-программы.
  287. Start:
  288. ; AH=11h,
  289. ; AL=00h-знакогенератор пользователя (текст),
  290. ; ES:BP=указатель на таблицу,
  291. ; CX=число символов,
  292. ; DX=смещение в таблице,
  293. ; BL=блок (0-3),
  294. ; BH=число байтов на символ.
  295.  
  296. mov si,offset Ukaz+2
  297. mov [ds:si],ds
  298. push ds
  299. pop es
  300. mov bp,[Ukaz]
  301. mov bl,0
  302. mov bh,16
  303. mov dx,0
  304. mov cx,256
  305. mov al,00h
  306. mov ah,11h
  307. int 10h
  308.  
  309. mov cx,txt1len
  310. mov si,offset txt1
  311. call PrnLine
  312.  
  313. Exit: mov ah,04Ch
  314. mov al,[exCode]
  315. int 21h
  316.  
  317. PROC SetVidAddr ;подготовить адресс видеопамяти.
  318. xor bh,bh
  319. mov bl,dh
  320. shl bx,1
  321. mov di,[ScRow+bx]
  322. xor dh,dh
  323. shl dx,1
  324. add di,dx
  325. ret
  326. ENDP SetVidAddr
  327.  
  328. PROC PrnLine ;Вывод строки
  329. push es ;cx - длина
  330. mov ax,0B800h ;ds:si - адресс строки
  331. mov es,ax
  332. mov ah,[attr]
  333. cld
  334. @@PrnLine1: lodsb
  335. cmp al,0
  336. je @@Code0
  337. stosw
  338. loop @@PrnLine1
  339. pop es
  340. ret
  341. @@Code0: lodsb
  342. dec cx
  343. cmp al,1
  344. je @@Coord
  345. cmp al,2
  346. je @@NewAttr
  347. mov [exCode],1
  348. jmp Exit
  349. @@Coord: lodsb
  350. mov dh,al
  351. lodsb
  352. mov dl,al
  353. call SetVidAddr
  354. sub cx,3
  355. jmp @@PrnLine1
  356. @@NewAttr: lodsb
  357. mov [attr],al
  358. mov ah,al
  359. sub cx,2
  360. jmp @@PrnLine1
  361. ENDP PrnLine
  362. END Start
  363.  
  364.  
  365. ;11h Загрузка знакогенератора
  366. ; AH=11h,
  367. ; AL=00h-знакогенератор пользователя (текст),
  368. ; ES:BP=указатель на таблицу,
  369. ; CX=число символов,
  370. ; DX=смещение в таблице,
  371. ; BL=блок (0-3),
  372. ; BH=число байтов на символ.
  373. ; AL=01h-знакогенератор ROM 8х14 (моно),
  374. ; BL=блок (0-3).
  375. ; AL=02h-знакогенератор ROM 8х8 двойной (текст),
  376. ; BL=блок (0-3).
  377. ; AL=03h-установка определенного блока (текст),
  378. ; BL= разряды 3 2 1 0
  379. ; LT- LT-
  380. ; ¦ L- когда сброшен бит_3 атрибута,
  381. ; L-- когда установлен бит_3 аттрибута
  382. ; AL=10h-знакогенератор пользователя (текст),
  383. ; ES:BP=указатель на таблицу,
  384. ; CX=число символов,
  385. ; DX=смещение в таблице,
  386. ; BL=блок (0-3),
  387. ; BH=число байтов на символ.
  388. ; AL=11h-знакогенератор 8х14 (моно),
  389. ; BL=блок (0-3).
  390. ; AL=12h-знакогенератор 8х8 двойной (текст),
  391. ; BL=блок (0-3).
  392. ; AL=20h-знакогенератор пользователя 8х8 (граф),
  393. ; ES:BP=указатель на таблицу для символов
  394. ; 128-255 (INT 1Fh для режимов < 7).
  395. ; AL=21h-знакогенератор пользователя (граф),
  396. ; ES:BP=указатель на таблицу символов
  397. ; 0-255 (INT 43h для режимов > 7).
  398. ; CX=число байт на символ,
  399. ; BL=индекс:
  400. ; 00-DL=число строк,
  401. ; 01-14 строк,
  402. ; 02-25 строк,
  403. ; 03-43 строки.
  404. ; AL=22h-знакогенератор 8х8 (граф),
  405. ; BL=индекс.
  406. ; AL=23h-знакогенератор 8х8 двойной (граф),
  407. ; BL=индекс.
  408. ; AL=30h-возвращает информацию о знакогенераторе,
  409. ; BH=индекс указателя:
  410. ; 0-текущий для INT 1Fh,
  411. ; 1-текущий для INT 43h,
  412. ; 2-ROM 8x14,
  413. ; 3-ROM 8x8 двойной,
  414. ; 5-ROM 9x14 альтернативный.
  415. ; Возвращает:
  416. ; ES:BP=указатель,
  417. ; CX=число линий на символ,
  418. ; DL=число линий.
  419. ; Функции 10h, 11h и 12h перепрограммируют регистры
  420. ; видео-контроллера и поэтому должны следовать за
  421. ; установкой режима.

Download this code: font.asm

Комментарии