30天自制操作系统第5天harib02f

转载CSDN:https://blog.csdn.net/zl18206208825/article/details/104804543

第5天 结构体、文字显示与GDT/IDT初始化

显示字符串

harib02f

准备材料(windows环境)
开始实验
  1. 在tolset文件夹下创建子文件侠harib02f;

  2. 打开记事本,输入以下代码并另存为 !cons_nt.bat文件(windows 批处理),存放在harib02f文件夹中;

cmd.exe

ps:当然也可以直接使用 win + r 快捷键也可以,不过最好还是创建一个比较好。因为以后打开时不需要再麻烦了。

  1. 打开vc code,输入以下代码并保存为 naskfunc.nas,存放在harib02f文件夹中;
; naskfunc
; TAB=4

[FORMAT "WCOFF"]                ; 制作目标文件的模式
[INSTRSET "i486p"]              ; 要使用486指令的语句
[BITS 32]                       ; 制作32位模式用的机器语言
[FILE "naskfunc.nas"]           ; 原文件名信息

        GLOBAL  _io_hlt, _io_cli, _io_sti, _io_stihlt
        GLOBAL  _io_in8,  _io_in16,  _io_in32
        GLOBAL  _io_out8, _io_out16, _io_out32
        GLOBAL  _io_load_eflags, _io_store_eflags

[SECTION .text] 

_io_hlt:    ; void io_hlt(void);
        HLT
        RET

_io_cli:    ; void io_cli(void);
        CLI
        RET

_io_sti:    ; void io_sti(void);
        STI
        RET

_io_stihlt: ; void io_stihlt(void);
        STI
        HLT
        RET

_io_in8:    ; int io_in8(int port);
        MOV     EDX,[ESP+4]     ; port
        MOV     EAX,0
        IN      AL,DX
        RET

_io_in16:   ; int io_in16(int port);
        MOV     EDX,[ESP+4]     ; port
        MOV     EAX,0
        IN      AX,DX
        RET

_io_in32:   ; int io_in32(int port);
        MOV     EDX,[ESP+4]     ; port
        IN      EAX,DX
        RET

_io_out8:   ; void io_out8(int port, int data);
        MOV     EDX,[ESP+4]     ; port
        MOV     AL,[ESP+8]      ; data
        OUT     DX,AL
        RET

_io_out16:  ; void io_out16(int port, int data);
        MOV     EDX,[ESP+4]     ; port
        MOV     EAX,[ESP+8]     ; data
        OUT     DX,AX
        RET

_io_out32:  ; void io_out32(int port, int data);
        MOV     EDX,[ESP+4]     ; port
        MOV     EAX,[ESP+8]     ; data
        OUT     DX,EAX
        RET

_io_load_eflags:    ; int io_load_eflags(void);
        PUSHFD      ; 指 PUSH EFLAGS
        POP     EAX
        RET

_io_store_eflags:   ; void io_store_eflags(int eflags);
        MOV     EAX,[ESP+4]
        PUSH    EAX
        POPFD       ; 指 POP EFLAGS
        RET

  1. 打开vc code,输入以下代码并保存为 bootpack.c 存放在haribooj文件夹中。
void io_hlt(void);
void io_cli(void);
void io_out8(int port, int data);
int io_load_eflags(void);
void io_store_eflags(int eflags);

void init_palette(void);
void set_palette(int start, int end, unsigned char *rgb);
void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1);
void init_screen(char *vram, int x, int y);
void putfont8(char *vram, int xsize, int x, int y, char c, char *font);
void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s);

#define COL8_000000     0
#define COL8_FF0000     1
#define COL8_00FF00     2
#define COL8_FFFF00     3
#define COL8_0000FF     4
#define COL8_FF00FF     5
#define COL8_00FFFF     6
#define COL8_FFFFFF     7
#define COL8_C6C6C6     8
#define COL8_840000     9
#define COL8_008400     10
#define COL8_848400     11
#define COL8_000084     12
#define COL8_840084     13
#define COL8_008484     14
#define COL8_848484     15

struct BOOTINFO
{
    char cyls, leds, vmode, reserve;
    short scrnx, scrny;
    char *vram;
};

void HariMain(void)
{
    struct BOOTINFO *binfo = (struct BOOTINFO *) 0x0ff0;

    init_palette();
    init_screen(binfo->vram, binfo->scrnx, binfo->scrny);
    putfonts8_asc(binfo->vram, binfo->scrnx,  8,  8, COL8_FFFFFF, "ABC 123");
    putfonts8_asc(binfo->vram, binfo->scrnx, 31, 31, COL8_000000, "Haribote OS.");
    putfonts8_asc(binfo->vram, binfo->scrnx, 30, 30, COL8_FFFFFF, "Haribote OS.");

    for (;;)
    {
        io_hlt();
    }
}

void init_palette(void)
{
    static unsigned char table_rgb[16 * 3] = {
        0x00, 0x00, 0x00,   /* 0 : 黑 */
        0xff, 0x00, 0x00,   /* 1 : 亮红 */
        0x00, 0xff, 0x00,   /* 2 : 亮绿 */
        0xff, 0xff, 0x00,   /* 3 : 亮黄 */
        0x00, 0x00, 0xff,   /* 4 :亮蓝 */
        0xff, 0x00, 0xff,   /* 5 : 亮紫 */
        0x00, 0x00, 0xff,   /* 6 : 浅亮蓝 */
        0xff, 0xff, 0xff,   /* 7 :白 */
        0xc6, 0xc6, 0xc6,   /* 8 : 亮灰 */
        0x84, 0x00, 0x00,   /* 9 : 暗红 */
        0x00, 0x84, 0x00,   /* 10 : 暗绿 */
        0x84, 0x84, 0x00,   /* 11 : 暗黄 */
        0x00, 0x00, 0x84,   /* 12 : 暗青 */
        0x84, 0x00, 0x84,   /* 13 : 暗紫 */
        0x00, 0x84, 0x84,   /* 14 : 浅暗蓝 */
        0x84, 0x84, 0x84   /* 15 : 暗灰 */
    };
    set_palette(0, 15, table_rgb);
    return;

    /* C语言中的static char语句只能用于数据, 相当于汇编中的DB指令 */
}

void set_palette(int start, int end, unsigned char *rgb)
{
    int i, eflags;
    eflags = io_load_eflags();  /* 记录中断许可标志的值 */
    io_cli();                   /* 将中断许可标志置为0, 禁止中断 */
    io_out8(0x03c8, start);
    for (i = start; i <= end; i++)
    {
        io_out8(0x03c9, rgb[0] / 4);
        io_out8(0x03c9, rgb[1] / 4);
        io_out8(0x03c9, rgb[2] / 4);
        rgb += 3;
    }
    io_store_eflags(eflags);    /*  复原中断许可标志 */
    return;
}

void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1)
{
    int x, y;
    for (y = y0; y <= y1; y++) {
        for (x = x0; x <= x1; x++)
            vram[y * xsize + x] = c;
    }
    return;
}

void init_screen(char *vram, int x, int y)
{
    boxfill8(vram, x, COL8_008484,  0,     0,      x -  1, y - 29);
    boxfill8(vram, x, COL8_C6C6C6,  0,     y - 28, x -  1, y - 28);
    boxfill8(vram, x, COL8_FFFFFF,  0,     y - 27, x -  1, y - 27);
    boxfill8(vram, x, COL8_C6C6C6,  0,     y - 26, x -  1, y -  1);

    boxfill8(vram, x, COL8_FFFFFF,  3,     y - 24, 59,     y - 24);
    boxfill8(vram, x, COL8_FFFFFF,  2,     y - 24,  2,     y -  4);
    boxfill8(vram, x, COL8_848484,  3,     y -  4, 59,     y -  4);
    boxfill8(vram, x, COL8_848484, 59,     y - 23, 59,     y -  5);
    boxfill8(vram, x, COL8_000000,  2,     y -  3, 59,     y -  3);
    boxfill8(vram, x, COL8_000000, 60,     y - 24, 60,     y -  3);

    boxfill8(vram, x, COL8_848484, x - 47, y - 24, x -  4, y - 24);
    boxfill8(vram, x, COL8_848484, x - 47, y - 23, x - 47, y -  4);
    boxfill8(vram, x, COL8_FFFFFF, x - 47, y -  3, x -  4, y -  3);
    boxfill8(vram, x, COL8_FFFFFF, x -  3, y - 24, x -  3, y -  3);
    return;
}

void putfont8(char *vram, int xsize, int x, int y, char c, char *font)
{
    int i;
    char *p, d; /* date */
    for (i = 0; i < 16; i++)
    {
        p = vram + (y + i) * xsize + x;
        d = font[i];
        if ((d & 0x80) != 0) { p[0] = c; }
        if ((d & 0x40) != 0) { p[1] = c; }
        if ((d & 0x20) != 0) { p[2] = c; }
        if ((d & 0x10) != 0) { p[3] = c; }
        if ((d & 0x08) != 0) { p[4] = c; }
        if ((d & 0x04) != 0) { p[5] = c; }
        if ((d & 0x02) != 0) { p[6] = c; }
        if ((d & 0x01) != 0) { p[7] = c; }
    }
    return;
}

void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s)
{
    extern char hankaku[4096];
    for (; *s != 0x00; s++)
    {
    putfont8(vram, xsize, x, y, c, hankaku + *s * 16);
    x += 8;
    }
    return;
}

ps: 出现任务栏,试用 箭头记号;输出 ‘ABC 123’ + 'Haribote OS.';

  1. 打vc code,输入以下代码并保存为 asmhead.nas,存放在harib02f文件夹中。
; haribote-os boot asm
; TAB=4

BOTPAK  EQU     0x00280000      ; bootpack装载处
DSKCAC  EQU     0x00100000      ; 磁盘缓存的地方
DSKCAC0 EQU     0x00008000      ; 磁盘高速缓存的场所(实时模式)

; 有关BOOT_INFO
CYLS    EQU     0x0ff0          ; 设定启动区
LEDS    EQU     0x0ff1
VMODE   EQU     0x0ff2          ; 关于颜色数目的信息,颜色的位数
SCRNX   EQU     0x0ff4          ; 分辨率的X(screen x)
SCRNY   EQU     0x0ff6          ; 分辨率的Y(screen y)
VRAM    EQU     0x0ff8          ; 图像缓冲区的开始地址

        ORG     0xc200          ; 这个程序要被装载到内存的什么地方呢?

; 画面模式设定

        MOV     AL,0x13         ; VGA显卡,320x200x8位彩色
        MOV     AH,0x00
        INT     0x10
        MOV     BYTE [VMODE],8  ; 记录画面模式(C语言参照)
        MOV     WORD [SCRNX],320
        MOV     WORD [SCRNY],200
        MOV     DWORD [VRAM],0x000a0000

; 用BIOS取得键盘各种LED指示灯的状态

        MOV     AH,0x02
        INT     0x16            ; keyboard BIOS
        MOV     [LEDS],AL

; 使PIC不授受一切中断
;   如果要初始PIC的话,要在AT兼容的规范中,
;   如果不把这家伙放在CLI面前,我偶尔会举起来
;   稍后进行PIC的初始化

        MOV     AL,0xff
        OUT     0x21,AL
        NOP                     ; 如果连续OUT命令的话,可能会有不太好的机型
        OUT     0xa1,AL

        CLI                     ; 甚至禁止CPU层面插队

; cpu从1 mb以上的内存,a20gate设定

        CALL    waitkbdout
        MOV     AL,0xd1
        OUT     0x64,AL
        CALL    waitkbdout
        MOV     AL,0xdf         ; enable A20
        OUT     0x60,AL
        CALL    waitkbdout

; 保护模式过渡

[INSTRSET "i486p"]              ; 用于记述想要使用的486命令

        LGDT    [GDTR0]         ; 暂定GDT设定
        MOV     EAX,CR0
        AND     EAX,0x7fffffff  ; 使bit31为0(为子禁止寻乎)
        OR      EAX,0x00000001  ; 使bit0为1(为子保护模式转移)
        MOV     CR0,EAX
        JMP     pipelineflush
pipelineflush:
        MOV     AX,1*8          ; 可读区段32bit
        MOV     DS,AX
        MOV     ES,AX
        MOV     FS,AX
        MOV     GS,AX
        MOV     SS,AX

; bootpack的传送

        MOV     ESI,bootpack    ; 传输源
        MOV     EDI,BOTPAK      ; 传输目的地
        MOV     ECX,512*1024/4
        CALL    memcpy

; 顺便磁盘数据也向原来的位置传送

; 首先从引导扇区

        MOV     ESI,0x7c00      ; 传输源
        MOV     EDI,DSKCAC      ; 传输目的地
        MOV     ECX,512/4
        CALL    memcpy

; 剩下的全部

        MOV     ESI,DSKCAC0+512 ; 传输源
        MOV     EDI,DSKCAC+512  ; 传输目的地
        MOV     ECX,0
        MOV     CL,BYTE [CYLS]
        IMUL    ECX,512*18*2/4  ; 从柱面数转换成字节数 /4
        SUB     ECX,512/4       ; 通过IPL减去
        CALL    memcpy

; 我们已经完成了需要使用asmhead 进行的所有操作
; 放到bootpack中

; 启动bootpack

        MOV     EBX,BOTPAK
        MOV     ECX,[EBX+16]
        ADD     ECX,3           ; ECX += 3;
        SHR     ECX,2           ; ECX /= 4;
        JZ      skip            ; 无需转移
        MOV     ESI,[EBX+20]    ; 传输源
        ADD     ESI,EBX
        MOV     EDI,[EBX+12]    ; 传输目的地
        CALL    memcpy
skip:
        MOV     ESP,[EBX+12]    ; 堆栈初始值
        JMP     DWORD 2*8:0x0000001b

waitkbdout:
        IN      AL,0x64
        AND     AL,0x02
        JNZ     waitkbdout      ; 如果AND的结果不为0,请跳转至waitkbdou
        RET

memcpy:
        MOV     EAX,[ESI]
        ADD     ESI,4
        MOV     [EDI],EAX
        ADD     EDI,4
        SUB     ECX,1
        JNZ     memcpy          ; 如果减法不为0,则返回memcpy
        RET
; memcpy也可以用字符串指令编写,除非你忘记了地址大小写前缀

        ALIGNB  16
GDT0:
        RESB    8               ; 空选择器
        DW      0xffff,0x0000,0x9200,0x00cf ; 读/定段32bit
        DW      0xffff,0x0000,0x9a28,0x0047 ; 可执行段32bit(用于bootpack)

        DW      0
GDTR0:
        DW      8*3-1
        DD      GDT0

        ALIGNB  16
bootpack:

  1. 打开 VC code 创建 ipl10.nas 文件,输入以下代码,也存放的harib02f中;
; haribote-ipl
; TAB=4

CYLS    EQU     10              ; 要读取到什么程度

        ORG     0x7c00          ; 启动装载程序

; 以下记述用于标准FAT12格式软盘

        JMP     entry
        DB      0x90
        DB      "HARIBOTE"      ; 磁盘名称(可以是任意字符串)
        DW      512             ; 每个扇区的大小(必须是512)
        DB      1               ; 簇的大小(必须为一个扇区)
        DW      1               ; FAT12的起始位置(一般从第一个扇区开始
        DB      2               ; FAT的个数(必须为2)
        DW      224             ; 根目录的大小(一般设成224项)
        DW      2880            ; 该磁盘的大小(必须是2880扇区)
        DB      0xf0            ; 该磁盘的种类(必须是0xf0
        DW      9               ; FAt的长度(必须是9扇区)
        DW      18              ; 一个磁道有几个扇区(必须是18)
        DW      2               ; 磁头数(必须是2)
        DD      0               ; 不使用分区,必须是0
        DD      2880            ; 磁盘大小
        DB      0,0,0x29        ; 意义不明固定
        DD      0xffffffff      ; (可能是)卷标号码
        DB      "HARIBOTEOS "   ; 磁盘的名称(11字节)
        DB      "FAT12   "      ; 磁盘格式名称(8字节)
        RESB    18              ; 先空出18字节

; 程序主体

entry:
        MOV     AX,0            ; 初始化寄存器
        MOV     SS,AX
        MOV     SP,0x7c00
        MOV     DS,AX

; 读磁盘

        MOV     AX,0x0820
        MOV     ES,AX
        MOV     CH,0            ; 柱面 0
        MOV     DH,0            ; 磁头 0
        MOV     CL,2            ; 扇区 2
readloop:
        MOV     SI,0            ; 记录失败次数的寄存器
retry:
        MOV     AH,0x02         ; AH=0x02 : 读入磁盘
        MOV     AL,1            ; 1 个扇区
        MOV     BX,0
        MOV     DL,0x00         ; A 驱动器
        INT     0x13            ; 调用磁盘BIOS
        JNC     next            ; 没出错时跳转到next
        ADD     SI,1            ; SI 加 1
        CMP     SI,5            ; 比较 SI 与 5
        JAE     error           ; SI >= 5 时,跳转到error
        MOV     AH,0x00
        MOV     DL,0x00         ; A 驱动器
        INT     0x13            ; 重置驱动器
        JMP     retry
next:
        MOV     AX,ES           ; 把内存地址后移0x200
        ADD     AX,0x0020
        MOV     ES,AX           ; 因为没有 ADD ES,0x020 指令,所以这里稍微绕个弯
        ADD     CL,1            ; CL 加 1
        CMP     CL,18           ; 比较 CL 与 18
        JBE     readloop        ; 如果 CL <= 18,则跳转至readloop 
        MOV     CL,1
        ADD     DH,1
        CMP     DH,2
        JB      readloop        ; 如果 DH < 2, 则跳转到readloop
        MOV     DH,0
        ADD     CH,1
        CMP     CH,CYLS
        JB      readloop        ; 如果 CH < CYLS,则跳转至readloop

; 因为看完了实行haribote.sys

        MOV     [0x0ff0],CH     ; IPL读到什么地方结束
        JMP     0xc200

error:
        MOV     SI,msg
putloop:
        MOV     AL,[SI]
        ADD     SI,1            ; SI 加 1
        CMP     AL,0
        JE      fin
        MOV     AH,0x0e         ; 显示一个文字
        MOV     BX,15           ; 指定字符颜色
        INT     0x10            ; 调用显卡BIOS
        JMP     putloop
fin:
        HLT                     ; 让CPu停止,等待指令
        JMP     fin             ; 无限循环
msg:
        DB      0x0a, 0x0a      ; 换行两次
        DB      "load error"
        DB      0x0a            ; 换行
        DB      0

        RESB    0x7dfe-$        ; 重复0x00一直到0x7dfe

        DB      0x55, 0xaa

  1. 打开记事本,输入以下代码,另存为 make.bat, 同样放到harib02f中;
..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
  1. 创建 Makefile,并输入以下代码并存放到harib02f中;
TOOLPATH = ../z_tools/
INCPATH  = ../z_tools/haribote/

MAKE     = $(TOOLPATH)make.exe -r
NASK     = $(TOOLPATH)nask.exe
CC1      = $(TOOLPATH)cc1.exe -I$(INCPATH) -Os -Wall -quiet
GAS2NASK = $(TOOLPATH)gas2nask.exe -a
OBJ2BIM  = $(TOOLPATH)obj2bim.exe
MAKEFONT = $(TOOLPATH)makefont.exe
BIN2OBJ  = $(TOOLPATH)bin2obj.exe
BIM2HRB  = $(TOOLPATH)bim2hrb.exe
RULEFILE = $(TOOLPATH)haribote/haribote.rul
EDIMG    = $(TOOLPATH)edimg.exe
IMGTOL   = $(TOOLPATH)imgtol.com
COPY     = copy
DEL      = del

# 默认

default :
    $(MAKE) img

# 文件生成规则

ipl10.bin : ipl10.nas Makefile
    $(NASK) ipl10.nas ipl10.bin ipl10.lst

asmhead.bin : asmhead.nas Makefile
    $(NASK) asmhead.nas asmhead.bin asmhead.lst

bootpack.gas : bootpack.c Makefile
    $(CC1) -o bootpack.gas bootpack.c

bootpack.nas : bootpack.gas Makefile
    $(GAS2NASK) bootpack.gas bootpack.nas

bootpack.obj : bootpack.nas Makefile
    $(NASK) bootpack.nas bootpack.obj bootpack.lst

naskfunc.obj : naskfunc.nas Makefile
    $(NASK) naskfunc.nas naskfunc.obj naskfunc.lst

hankaku.bin : hankaku.txt Makefile
    $(MAKEFONT) hankaku.txt hankaku.bin

hankaku.obj : hankaku.bin Makefile
    $(BIN2OBJ) hankaku.bin hankaku.obj _hankaku

bootpack.bim : bootpack.obj naskfunc.obj hankaku.obj Makefile
    $(OBJ2BIM) @$(RULEFILE) out:bootpack.bim stack:3136k map:bootpack.map \
        bootpack.obj naskfunc.obj hankaku.obj
# 3MB+64KB=3136KB

bootpack.hrb : bootpack.bim Makefile
    $(BIM2HRB) bootpack.bim bootpack.hrb 0

haribote.sys : asmhead.bin bootpack.hrb Makefile
    copy /B asmhead.bin+bootpack.hrb haribote.sys

haribote.img : ipl10.bin haribote.sys Makefile
    $(EDIMG)   imgin:../z_tools/fdimg0at.tek \
        wbinimg src:ipl10.bin len:512 from:0 to:0 \
        copy from:haribote.sys to:@: \
        imgout:haribote.img

# 命令

img :
    $(MAKE) haribote.img

run :
    $(MAKE) img
    $(COPY) haribote.img ..\z_tools\qemu\fdimage0.bin
    $(MAKE) -C ../z_tools/qemu

install :
    $(MAKE) img
    $(IMGTOL) w a: haribote.img

clean :
    -$(DEL) *.bin
    -$(DEL) *.lst
    -$(DEL) *.gas
    -$(DEL) *.obj
    -$(DEL) bootpack.nas
    -$(DEL) bootpack.map
    -$(DEL) bootpack.bim
    -$(DEL) bootpack.hrb
    -$(DEL) haribote.sys

src_only :
    $(MAKE) clean
    -$(DEL) haribote.img

  1. 打开记事本,复制以下内容并保存为 hankaku.txt,且存放在harib02f中;ps:建议这一段代码直接复制不要看;
使用osaka的半角字体

char 0x00
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0x01
........
........
..***...
.*...*..
*.....*.
*.*.*.*.
*.*.*.*.
*.....*.
*.....*.
*.*.*.*.
*..*..*.
.*...*..
..***...
........
........
........

char 0x02
........
........
..***...
.*****..
*******.
**.*.**.
**.*.**.
*******.
*******.
**.*.**.
***.***.
.*****..
..***...
........
........
........

char 0x03
........
........
........
........
.**.**..
*******.
*******.
*******.
.*****..
..***...
...*....
........
........
........
........
........

char 0x04
........
........
........
........
...*....
..***...
.*****..
*******.
.*****..
..***...
...*....
........
........
........
........
........

char 0x05
........
........
........
........
...*....
..***...
.*.*.*..
*******.
.*.*.*..
...*....
..***...
........
........
........
........
........

char 0x06
........
........
........
........
...*....
..***...
.*****..
*******.
**.*.**.
...*....
..***...
........
........
........
........
........

char 0x07
........
........
........
........
........
........
...**...
..****..
..****..
...**...
........
........
........
........
........
........

char 0x08
********
********
********
********
********
********
***..***
**....**
**....**
***..***
********
********
********
********
********
********

char 0x09
........
........
........
........
........
..****..
.**..**.
.*....*.
.*....*.
.**..**.
..****..
........
........
........
........
........

char 0x0a
********
********
********
********
********
**....**
*..**..*
*.****.*
*.****.*
*..**..*
**....**
********
********
********
********
********

char 0x0b
........
...*....
..***...
.*.*.*..
*..*..*.
...*....
...*....
..***...
.*...*..
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x0c
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
.*...*..
..***...
...*....
...*....
*******.
...*....
...*....
...*....
........
........

char 0x0d
........
........
....**..
....***.
....*.**
....*.**
....*.*.
....*...
....*...
...**...
.****...
*****...
.***....
........
........
........

char 0x0e
........
........
...*****
...*****
...*...*
...*...*
...*...*
...*...*
...*...*
...*...*
.***.***
********
.**..**.
........
........
........

char 0x0f
........
........
........
........
...*....
.*.*.*..
..***...
..*.*...
..***...
.*.*.*..
...*....
........
........
........
........
........

char 0x10
........
*.......
**......
***.....
****....
*****...
******..
*******.
******..
*****...
****....
***.....
**......
*.......
........
........

char 0x11
........
......*.
.....**.
....***.
...****.
..*****.
.******.
*******.
.******.
..*****.
...****.
....***.
.....**.
......*.
........
........

char 0x12
........
........
...*....
..***...
.*.*.*..
*..*..*.
...*....
...*....
...*....
*..*..*.
.*.*.*..
..***...
...*....
........
........
........

char 0x13
........
........
.*...*..
.*...*..
.*...*..
.*...*..
.*...*..
.*...*..
.*...*..
.*...*..
........
........
.*...*..
.*...*..
........
........

char 0x14
........
..*****.
.*..*.*.
*...*.*.
*...*.*.
*...*.*.
*...*.*.
.*..*.*.
..***.*.
....*.*.
....*.*.
....*.*.
....*.*.
....*.*.
........
........

char 0x15
.*****..
*.....*.
.*......
..*.....
..***...
.*...*..
*.....*.
*.....*.
*.....*.
.*...*..
..***...
....*...
.....*..
*.....*.
.*****..
........

char 0x16
........
........
........
........
........
........
........
........
........
........
........
*******.
*******.
*******.
........
........

char 0x17
........
........
...*....
..***...
.*.*.*..
*..*..*.
...*....
...*....
...*....
*..*..*.
.*.*.*..
..***...
...*....
.*****..
........
........

char 0x18
........
...*....
..***...
.*.*.*..
*..*..*.
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........

char 0x19
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
*..*..*.
.*.*.*..
..***...
...*....
........
........

char 0x1a
........
........
........
........
...*....
....*...
.....*..
*******.
.....*..
....*...
...*....
........
........
........
........
........

char 0x1b
........
........
........
........
...*....
..*.....
.*......
*******.
.*......
..*.....
...*....
........
........
........
........
........

char 0x1c
........
........
........
........
........
........
........
........
........
........
........
*.......
*.......
*******.
........
........

char 0x1d
........
........
........
........
........
..*.*...
.*...*..
*******.
.*...*..
..*.*...
........
........
........
........
........
........

char 0x1e
........
........
........
........
...*....
...*....
..***...
..***...
.*****..
.*****..
*******.
*******.
........
........
........
........

char 0x1f
........
........
........
........
*******.
*******.
.*****..
.*****..
..***...
..***...
...*....
...*....
........
........
........
........

char 0x20
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0x21
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........
...*....
...*....
........
........

char 0x22
..*.*...
..*.*...
..*.*...
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0x23
........
.*...*..
.*...*..
.*...*..
*******.
.*...*..
.*...*..
.*...*..
.*...*..
.*...*..
*******.
.*...*..
.*...*..
.*...*..
........
........

char 0x24
...*....
..***.*.
.*.*.**.
*..*..*.
*..*..*.
*..*....
.*.*....
..***...
...*.*..
...*..*.
*..*..*.
*..*..*.
**.*.*..
*.***...
...*....
...*....

char 0x25
.**...*.
*..*..*.
*..*.*..
*..*.*..
.**.*...
....*...
...*....
...*....
..*.....
..*.**..
.*.*..*.
.*.*..*.
*..*..*.
*...**..
........
........

char 0x26
........
.***....
*...*...
*...*...
*...*...
*..*....
.**.....
.*...***
*.*...*.
*..*..*.
*...*.*.
*....*..
.*...**.
..***..*
........
........

char 0x27
.....*..
....*...
...*....
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0x28
......*.
.....*..
....*...
....*...
...*....
...*....
...*....
...*....
...*....
...*....
...*....
....*...
....*...
.....*..
......*.
........

char 0x29
*.......
.*......
..*.....
..*.....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
..*.....
..*.....
.*......
*.......
........

char 0x2a
........
........
........
........
........
...*....
*..*..*.
.*.*.*..
..***...
.*.*.*..
*..*..*.
...*....
........
........
........
........

char 0x2b
........
........
........
........
........
...*....
...*....
...*....
*******.
...*....
...*....
...*....
........
........
........
........

char 0x2c
........
........
........
........
........
........
........
........
........
........
........
...**...
...**...
....*...
....*...
...*....

char 0x2d
........
........
........
........
........
........
........
........
*******.
........
........
........
........
........
........
........

char 0x2e
........
........
........
........
........
........
........
........
........
........
........
........
...**...
...**...
........
........

char 0x2f
......*.
......*.
.....*..
.....*..
....*...
....*...
....*...
...*....
...*....
..*.....
..*.....
.*......
.*......
.*......
*.......
*.......

char 0x30
........
...**...
..*..*..
..*..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
..*..*..
..*..*..
...**...
........
........

char 0x31
........
....*...
...**...
..*.*...
....*...
....*...
....*...
....*...
....*...
....*...
....*...
....*...
....*...
..*****.
........
........

char 0x32
........
...**...
..*..*..
.*....*.
.*....*.
......*.
.....*..
....*...
...*....
..*.....
..*.....
.*......
.*......
.******.
........
........

char 0x33
........
...**...
..*..*..
.*....*.
......*.
......*.
.....*..
...**...
.....*..
......*.
......*.
.*....*.
..*..*..
...**...
........
........

char 0x34
........
....**..
....**..
....**..
...*.*..
...*.*..
...*.*..
..*..*..
..*..*..
.*...*..
.******.
.....*..
.....*..
...****.
........
........

char 0x35
........
.*****..
.*......
.*......
.*......
.*.**...
.**..*..
......*.
......*.
......*.
......*.
.*....*.
..*..*..
...**...
........
........

char 0x36
........
...**...
..*..*..
.*....*.
.*......
.*.**...
.**..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
..*..*..
...**...
........
........

char 0x37
........
.******.
.*....*.
.*....*.
.....*..
.....*..
....*...
....*...
....*...
...*....
...*....
...*....
...*....
..***...
........
........

char 0x38
........
...**...
..*..*..
.*....*.
.*....*.
.*....*.
..*..*..
...**...
..*..*..
.*....*.
.*....*.
.*....*.
..*..*..
...**...
........
........

char 0x39
........
...**...
..*..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
..*..**.
...**.*.
......*.
.*....*.
..*..*..
...**...
........
........

char 0x3a
........
........
........
........
........
...**...
...**...
........
........
........
........
........
...**...
...**...
........
........

char 0x3b
........
........
........
........
........
...**...
...**...
........
........
........
........
...**...
...**...
....*...
....*...
...*....

char 0x3c
........
......*.
.....*..
....*...
...*....
..*.....
.*......
*.......
*.......
.*......
..*.....
...*....
....*...
.....*..
......*.
........

char 0x3d
........
........
........
........
........
........
*******.
........
........
*******.
........
........
........
........
........
........

char 0x3e
........
*.......
.*......
..*.....
...*....
....*...
.....*..
......*.
......*.
.....*..
....*...
...*....
..*.....
.*......
*.......
........

char 0x3f
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
.....*..
....*...
...*....
...*....
........
........
...**...
...**...
........
........

char 0x40
........
..***...
.*...*..
*.....*.
*..**.*.
*.*.*.*.
*.*.*.*.
*.*.*.*.
*.*.*.*.
*.*.*.*.
*..***..
*.......
.*...**.
..***...
........
........

char 0x41
........
...**...
...**...
...**...
...**...
..*..*..
..*..*..
..*..*..
..*..*..
.******.
.*....*.
.*....*.
.*....*.
***..***
........
........

char 0x42
........
****....
.*..*...
.*...*..
.*...*..
.*...*..
.*..*...
.****...
.*...*..
.*....*.
.*....*.
.*....*.
.*...*..
*****...
........
........

char 0x43
........
..***.*.
.*...**.
.*....*.
*.....*.
*.......
*.......
*.......
*.......
*.......
*.....*.
.*....*.
.*...*..
..***...
........
........

char 0x44
........
*****...
.*...*..
.*...*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*...*..
.*...*..
*****...
........
........

char 0x45
........
*******.
.*....*.
.*....*.
.*......
.*......
.*...*..
.*****..
.*...*..
.*......
.*......
.*....*.
.*....*.
*******.
........
........

char 0x46
........
*******.
.*....*.
.*....*.
.*......
.*......
.*...*..
.*****..
.*...*..
.*...*..
.*......
.*......
.*......
****....
........
........

char 0x47
........
..***.*.
.*...**.
.*....*.
*.....*.
*.......
*.......
*..****.
*.....*.
*.....*.
*.....*.
.*....*.
.*...**.
..***...
........
........

char 0x48
........
***..***
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.******.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
***..***
........
........

char 0x49
........
.*****..
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
.*****..
........
........

char 0x4a
........
...*****
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
*....*..
.*..*...
..**....
........

char 0x4b
........
***..***
.*....*.
.*...*..
.*..*...
.*.*....
.*.*....
.**.....
.*.*....
.*.*....
.*..*...
.*...*..
.*....*.
***..***
........
........

char 0x4c
........
****....
.*......
.*......
.*......
.*......
.*......
.*......
.*......
.*......
.*......
.*....*.
.*....*.
*******.
........
........

char 0x4d
........
**....**
.*....*.
.**..**.
.**..**.
.**..**.
.*.**.*.
.*.**.*.
.*.**.*.
.*....*.
.*....*.
.*....*.
.*....*.
***..***
........
........

char 0x4e
........
**...***
.*....*.
.**...*.
.**...*.
.*.*..*.
.*.*..*.
.*.*..*.
.*..*.*.
.*..*.*.
.*..*.*.
.*...**.
.*...**.
***...*.
........
........

char 0x4f
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x50
........
*****...
.*...*..
.*....*.
.*....*.
.*....*.
.*...*..
.****...
.*......
.*......
.*......
.*......
.*......
****....
........
........

char 0x51
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*..*..*.
*...*.*.
.*...*..
..***.*.
........
........

char 0x52
........
******..
.*....*.
.*....*.
.*....*.
.*....*.
.*****..
.*...*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
***..***
........
........

char 0x53
........
..***.*.
.*...**.
*.....*.
*.....*.
*.......
.*......
..***...
.....*..
......*.
*.....*.
*.....*.
**...*..
*.***...
........
........

char 0x54
........
*******.
*..*..*.
*..*..*.
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
.*****..
........
........

char 0x55
........
***..***
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
..*..*..
..****..
........
........

char 0x56
........
***..***
.*....*.
.*....*.
.*....*.
.*....*.
..*..*..
..*..*..
..*..*..
..*..*..
...**...
...**...
...**...
...**...
........
........

char 0x57
........
***..***
.*....*.
.*....*.
.*....*.
.*.**.*.
.*.**.*.
.*.**.*.
.*.**.*.
..*..*..
..*..*..
..*..*..
..*..*..
..*..*..
........
........

char 0x58
........
***..***
.*....*.
.*....*.
..*..*..
..*..*..
..*..*..
...**...
..*..*..
..*..*..
..*..*..
.*....*.
.*....*.
***..***
........
........

char 0x59
........
***.***.
.*...*..
.*...*..
.*...*..
..*.*...
..*.*...
..*.*...
...*....
...*....
...*....
...*....
...*....
.*****..
........
........

char 0x5a
........
*******.
*....*..
*....*..
....*...
....*...
...*....
...*....
..*.....
..*.....
.*......
.*....*.
*.....*.
*******.
........
........

char 0x5b
........
..*****.
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*.....
..*****.
........

char 0x5c
*.......
*.......
.*......
.*......
..*.....
..*.....
..*.....
...*....
...*....
....*...
....*...
.....*..
.....*..
.....*..
......*.
......*.

char 0x5d
........
.*****..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.*****..
........

char 0x5e
........
...*....
..*.*...
.*...*..
*.....*.
........
........
........
........
........
........
........
........
........
........
........

char 0x5f
........
........
........
........
........
........
........
........
........
........
........
........
........
........
*******.
........

char 0x60
...*....
....*...
.....*..
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0x61
........
........
........
........
........
.***....
....*...
.....*..
..****..
.*...*..
*....*..
*....*..
*...**..
.***.**.
........
........

char 0x62
**......
.*......
.*......
.*......
.*......
.*.**...
.**..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.**..*..
.*.**...
........
........

char 0x63
........
........
........
........
........
..**....
.*..**..
*....*..
*....*..
*.......
*.......
*.....*.
.*...*..
..***...
........
........

char 0x64
....**..
.....*..
.....*..
.....*..
.....*..
..**.*..
.*..**..
*....*..
*....*..
*....*..
*....*..
*....*..
.*..**..
..**.**.
........
........

char 0x65
........
........
........
........
........
..***...
.*...*..
*.....*.
*.....*.
******..
*.......
*.....*.
.*....*.
..****..
........
........

char 0x66
....***.
...*....
...*....
...*....
...*....
.*****..
...*....
...*....
...*....
...*....
...*....
...*....
...*....
.*****..
........
........

char 0x67
........
........
........
........
........
..**.**.
.*..**..
*....*..
*....*..
*....*..
*....*..
.*..**..
..**.*..
.....*..
.....*..
.****...

char 0x68
**......
.*......
.*......
.*......
.*......
.*.**...
.**..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
***...**
........
........

char 0x69
........
...*....
...*....
........
........
..**....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
..***...
........
........

char 0x6a
........
.....*..
.....*..
........
........
....**..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
.....*..
....*...
....*...
..**....

char 0x6b
**......
.*......
.*......
.*......
.*......
.*..***.
.*...*..
.*..*...
.*.*....
.**.....
.*.*....
.*..*...
.*...*..
***..**.
........
........

char 0x6c
..**....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
..***...
........
........

char 0x6d
........
........
........
........
........
****.**.
.*..*..*
.*..*..*
.*..*..*
.*..*..*
.*..*..*
.*..*..*
.*..*..*
**.**.**
........
........

char 0x6e
........
........
........
........
........
**.**...
.**..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
***...**
........
........

char 0x6f
........
........
........
........
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x70
........
........
........
........
........
**.**...
.**..*..
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.**..*..
.*.**...
.*......
***.....

char 0x71
........
........
........
........
........
..**.*..
.*..**..
*....*..
*....*..
*....*..
*....*..
*....*..
.*..**..
..**.*..
.....*..
....***.

char 0x72
........
........
........
........
........
**.***..
.**...*.
.*....*.
.*......
.*......
.*......
.*......
.*......
***.....
........
........

char 0x73
........
........
........
........
........
.****.*.
*....**.
*.....*.
**......
..***...
.....**.
*.....*.
**....*.
*.****..
........
........

char 0x74
........
........
...*....
...*....
...*....
.*****..
...*....
...*....
...*....
...*....
...*....
...*....
...*....
....***.
........
........

char 0x75
........
........
........
........
........
**...**.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*....*.
.*...**.
..***.**
........
........

char 0x76
........
........
........
........
........
***..***
.*....*.
.*....*.
.*....*.
..*..*..
..*..*..
..*..*..
...**...
...**...
........
........

char 0x77
........
........
........
........
........
***..***
.*....*.
.*....*.
.*.**.*.
.*.**.*.
.*.**.*.
..*..*..
..*..*..
..*..*..
........
........

char 0x78
........
........
........
........
........
**...**.
.*...*..
..*.*...
..*.*...
...*....
..*.*...
..*.*...
.*...*..
**...**.
........
........

char 0x79
........
........
........
........
........
***..***
.*....*.
.*....*.
..*..*..
..*..*..
..*..*..
...**...
...**...
...*....
...*....
.**.....

char 0x7a
........
........
........
........
........
*******.
*.....*.
*....*..
....*...
...*....
..*.....
.*....*.
*.....*.
*******.
........
........

char 0x7b
........
.....**.
....*...
...*....
...*....
...*....
...*....
.**.....
...*....
...*....
...*....
...*....
....*...
.....**.
........
........

char 0x7c
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0x7d
........
.**.....
...*....
....*...
....*...
....*...
....*...
.....**.
....*...
....*...
....*...
....*...
...*....
.**.....
........
........

char 0x7e
........
.***..*.
*...**..
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0x7f
........
........
........
........
...*....
..*.*...
.*...*..
*.....*.
*******.
*.....*.
*******.
........
........
........
........
........

char 0x80
........
..***...
.*...*..
*.....*.
*.......
*.......
*.......
*.......
*.......
*.......
*.......
*.....*.
.*...*..
..***...
...*....
..*.....

char 0x81
........
........
..*..*..
..*..*..
........
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*....*.
..*****.
........
........

char 0x82
....**..
....*...
...*....
........
........
..***...
.*...*..
*.....*.
*.....*.
*******.
*.......
*.....*.
.*...*..
..***...
........
........

char 0x83
........
...*....
..*.*...
.*...*..
........
.****...
.....*..
.....*..
..****..
.*...*..
*....*..
*....*..
.*...*..
..*****.
........
........

char 0x84
........
........
..*..*..
..*..*..
........
.****...
.....*..
.....*..
..****..
.*...*..
*....*..
*....*..
.*...*..
..*****.
........
........

char 0x85
...*....
....*...
.....*..
........
........
.****...
.....*..
.....*..
..****..
.*...*..
*....*..
*....*..
.*...*..
..*****.
........
........

char 0x86
........
...**...
..*..*..
...**...
........
.****...
.....*..
.....*..
..****..
.*...*..
*....*..
*....*..
.*...*..
..*****.
........
........

char 0x87
........
........
........
........
........
..****..
.*....*.
*.......
*.......
*.......
*.......
*.......
.*....*.
..****..
....*...
...*....

char 0x88
........
...*....
..*.*...
.*...*..
........
..***...
.*...*..
*.....*.
*.....*.
*******.
*.......
*.....*.
.*...*..
..***...
........
........

char 0x89
........
........
..*..*..
..*..*..
........
..***...
.*...*..
*.....*.
*.....*.
*******.
*.......
*.....*.
.*...*..
..***...
........
........

char 0x8a
...*....
....*...
.....*..
........
........
..***...
.*...*..
*.....*.
*.....*.
*******.
*.......
*.....*.
.*...*..
..***...
........
........

char 0x8b
........
........
..*..*..
..*..*..
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........

char 0x8c
........
...*....
..*.*...
.*...*..
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........

char 0x8d
...*....
....*...
.....*..
........
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........

char 0x8e
..*..*..
..*..*..
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*******.
*.....*.
*.....*.
*.....*.
*.....*.
........
........

char 0x8f
........
..***...
.*...*..
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*******.
*.....*.
*.....*.
*.....*.
*.....*.
........
........

char 0x90
....**..
....*...
...*....
*******.
*.......
*.......
*.......
*.......
*****...
*.......
*.......
*.......
*.......
*******.
........
........

char 0x91
........
........
........
........
........
.**.....
...***..
...*..*.
.***..*.
*..****.
*..*....
*..*....
*..*..*.
.**.**..
........
........

char 0x92
....**..
...*....
..*.....
..*.*...
..*.*...
..*.*...
*******.
..*.*...
..*.*...
..*.*...
..*.*...
..*.*...
..*.*...
..*.*...
........
........

char 0x93
........
...*....
..*.*...
.*...*..
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x94
........
........
..*..*..
..*..*..
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x95
...*....
....*...
.....*..
........
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x96
........
...*....
..*.*...
.*...*..
........
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*....*.
..*****.
........
........

char 0x97
...*....
....*...
.....*..
........
........
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*....*.
..*****.
........
........

char 0x98
........
........
..*..*..
..*..*..
........
*.....*.
*.....*.
.*...*..
.*...*..
..*.*...
..*.*...
...*....
...*....
..*.....
..*.....
.*......

char 0x99
..*..*..
..*..*..
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x9a
..*..*..
..*..*..
........
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0x9b
........
..*.*...
..*.*...
..*.*...
..****..
.**.*.*.
*.*.*...
*.*.*...
*.*.*...
*.*.*...
*.*.*...
.**.*.*.
..****..
..*.*...
..*.*...
..*.*...

char 0x9c
........
....**..
...*..*.
..*.....
..*.....
..*.....
******..
..*.....
..*.....
..*.....
.**.....
*.*.....
*.**..*.
.*..**..
........
........

char 0x9d
........
*.....*.
*.....*.
.*...*..
..*.*...
...*....
*******.
...*....
...*....
*******.
...*....
...*....
...*....
...*....
........
........

char 0x9e
........
***.....
*..*....
*...*...
*...*...
*...*...
*..*.*..
***..*..
*..*****
*....*..
*....*..
*....*..
*....*..
*....*..
........
........

char 0x9f
........
....**..
...*..*.
...*....
...*....
...*....
*******.
...*....
...*....
...*....
...*....
...*....
*..*....
.**.....
........
........

char 0xa0
....**..
....*...
...*....
........
........
.****...
.....*..
.....*..
..****..
.*...*..
*....*..
*....*..
.*...*..
..*****.
........
........

char 0xa1
....**..
....*...
...*....
........
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........

char 0xa2
....**..
....*...
...*....
........
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0xa3
....**..
....*...
...*....
........
........
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*....*.
..*****.
........
........

char 0xa4
........
...*..*.
..*.*.*.
..*..*..
........
*****...
*....*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
........
........

char 0xa5
...*..*.
..*.*.*.
..*..*..
........
*.....*.
**....*.
**....*.
*.*...*.
*..*..*.
*..*..*.
*...*.*.
*....**.
*....**.
*.....*.
........
........

char 0xa6
........
........
........
.****...
.....*..
.....*..
..****..
.*...*..
*....*..
*....*..
.*...*..
..*****.
........
*******.
........
........

char 0xa7
........
........
........
..***...
.*...*..
*.....*.
*.....*.
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
*******.
........
........

char 0xa8
........
...*....
...*....
........
........
...*....
...*....
..*.....
.*...*..
*.....*.
*.....*.
*.....*.
.*...*..
..***...
........
........

char 0xa9
........
........
........
........
........
........
........
........
........
........
*******.
*.......
*.......
*.......
........
........

char 0xaa
........
........
........
........
........
........
........
........
........
........
*******.
......*.
......*.
......*.
........
........

char 0xab
........
...*....
..**....
...*....
...*....
...*....
........
*******.
........
.****...
.....*..
..***...
.*......
.*****..
........
........

char 0xac
........
...*....
..**....
...*....
...*....
...*....
........
*******.
........
...**...
..*.*...
.*..*...
.*****..
....*...
........
........

char 0xad
........
...*....
...*....
........
........
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
........
........

char 0xae
........
........
........
........
...*..*.
..*..*..
.*..*...
*..*....
*..*....
.*..*...
..*..*..
...*..*.
........
........
........
........

char 0xaf
........
........
........
........
*..*....
.*..*...
..*..*..
...*..*.
...*..*.
..*..*..
.*..*...
*..*....
........
........
........
........

char 0xb0
...*...*
.*...*..
...*...*
.*...*..
...*...*
.*...*..
...*...*
.*...*..
...*...*
.*...*..
...*...*
.*...*..
...*...*
.*...*..
...*...*
.*...*..

char 0xb1
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.
.*.*.*.*
*.*.*.*.

char 0xb2
.***.***
**.***.*
.***.***
**.***.*
.***.***
**.***.*
.***.***
**.***.*
.***.***
**.***.*
.***.***
**.***.*
.***.***
**.***.*
.***.***
**.***.*

char 0xb3
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xb4
...*....
...*....
...*....
...*....
...*....
...*....
...*....
****....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xb5
...*....
...*....
...*....
...*....
...*....
...*....
...*....
****....
...*....
****....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xb6
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
****.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xb7
........
........
........
........
........
........
........
******..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xb8
........
........
........
........
........
........
........
****....
...*....
****....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xb9
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
****.*..
.....*..
****.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xba
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xbb
........
........
........
........
........
........
........
******..
.....*..
****.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xbc
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
****.*..
.....*..
******..
........
........
........
........
........
........

char 0xbd
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
******..
........
........
........
........
........
........
........
........

char 0xbe
...*....
...*....
...*....
...*....
...*....
...*....
...*....
****....
...*....
****....
........
........
........
........
........
........

char 0xbf
........
........
........
........
........
........
........
****....
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xc0
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*****
........
........
........
........
........
........
........
........

char 0xc1
...*....
...*....
...*....
...*....
...*....
...*....
...*....
********
........
........
........
........
........
........
........
........

char 0xc2
........
........
........
........
........
........
........
********
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xc3
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*****
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xc4
........
........
........
........
........
........
........
********
........
........
........
........
........
........
........
........

char 0xc5
...*....
...*....
...*....
...*....
...*....
...*....
...*....
********
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xc6
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*****
...*....
...*****
...*....
...*....
...*....
...*....
...*....
...*....

char 0xc7
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.***
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xc8
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.***
...*....
...*****
........
........
........
........
........
........

char 0xc9
........
........
........
........
........
........
........
...*****
...*....
...*.***
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xca
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
****.***
........
********
........
........
........
........
........
........

char 0xcb
........
........
........
........
........
........
........
********
........
****.***
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xcc
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.***
...*....
...*.***
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xcd
........
........
........
........
........
........
........
********
........
********
........
........
........
........
........
........

char 0xce
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
****.***
........
****.***
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xcf
...*....
...*....
...*....
...*....
...*....
...*....
...*....
********
........
********
........
........
........
........
........
........

char 0xd0
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
********
........
........
........
........
........
........
........
........

char 0xd1
........
........
........
........
........
........
........
********
........
********
...*....
...*....
...*....
...*....
...*....
...*....

char 0xd2
........
........
........
........
........
........
........
********
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xd3
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*****
........
........
........
........
........
........
........
........

char 0xd4
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*****
...*....
...*****
........
........
........
........
........
........

char 0xd5
........
........
........
........
........
........
........
...*****
...*....
...*****
...*....
...*....
...*....
...*....
...*....
...*....

char 0xd6
........
........
........
........
........
........
........
...*****
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xd7
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
****.***
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..
...*.*..

char 0xd8
...*....
...*....
...*....
...*....
...*....
...*....
...*....
********
...*....
********
...*....
...*....
...*....
...*....
...*....
...*....

char 0xd9
...*....
...*....
...*....
...*....
...*....
...*....
...*....
****....
........
........
........
........
........
........
........
........

char 0xda
........
........
........
........
........
........
........
...*****
...*....
...*....
...*....
...*....
...*....
...*....
...*....
...*....

char 0xdb
********
********
********
********
********
********
********
********
********
********
********
********
********
********
********
********

char 0xdc
........
........
........
........
........
........
........
........
********
********
********
********
********
********
********
********

char 0xdd
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....
****....

char 0xde
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****
....****

char 0xdf
********
********
********
********
********
********
********
********
........
........
........
........
........
........
........
........

char 0xe0
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe1
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe2
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe3
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe4
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe5
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe6
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe7
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe8
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xe9
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xea
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xeb
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xec
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xed
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xee
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xef
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf0
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf1
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf2
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf3
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf4
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf5
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf6
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf7
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf8
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xf9
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xfa
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xfb
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xfc
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xfd
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xfe
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........

char 0xff
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
........
编译及运行
  1. 双击 !cons_nt.bat,并在打开的命令行中输入 make run


    在这里插入图片描述
  2. VMware中运行结果,如下图


    在这里插入图片描述

    ps: 结果就是这样,因为本次实验的目的是显示字符串(ABC 123)(harib02f),以后会有更精彩。敬请期待!
    好的今天到这里harib02f就张结束了,请大家多多支持!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容