注册 登录
编程论坛 汇编论坛

求助大神,程序结果运行不出呀

雾楼 发布于 2014-12-14 14:18, 4122 次点击
ASSUME  CS:CODE,DS:DATA

DATA    SEGMENT
        ; FEDCBA9876543210
CNCHAR0 DW 0000010100000000B    ;0      你
        DW 0000100110000010B    ;1
        DW 0001000111111111B    ;2
        DW 0010001000100010B    ;3
        DW 0110010000100100B    ;4
        DW 1010100000101000B    ;5
        DW 0010000000100000B    ;6
        DW 0010000100100000B    ;7
        DW 0010000110101000B    ;8
        DW 0010000100101000B    ;9
        DW 0010001000100100B    ;10
        DW 0010001000100010B    ;11
        DW 0010010000100011B    ;12
        DW 0010100011100010B    ;13
        DW 0010000001000000B    ;14
        DW 0010000000000000B    ;15这是一个汉字的点阵码

        ; FEDCBA9876543210
CNCHAR1 DW 0000100000000000B    ;0      好
        DW 0000100011111110B    ;1
        DW 0001000000000100B    ;2
        DW 0001000100001000B    ;3
        DW 1111111110010000B    ;4
        DW 0010001000001000B    ;5
        DW 0100001011111111B    ;6
        DW 1000010000001000B    ;7
        DW 0100010000001000B    ;8
        DW 0010100000001000B    ;9
        DW 0001100000001000B    ;10
        DW 0001100000001000B    ;11
        DW 0001010000001000B    ;12
        DW 0010010001001000B    ;13
        DW 0100011000110000B    ;14
        DW 1000000000010000B    ;15这是另一个汉字的点阵码

CHARLST DW CNCHAR0,CNCHAR1

CNCOL   DW 640/2-(20*2)         ;显示列(模式640*480/16色)
CNROW   DW 480/2-(16*1)-140
;CNROW  DW 480/2-(16*1)         ;显示行,这是在中间


CURCOL  DW 0
CURROW  DW 0                    ;当前列与行

MSG0    DB 0DH,0AH,'Press any key to back to TEXT MODE 3, '
        DB 'and clean the screen.$'

DATA    ENDS

CODE    SEGMENT

ENTRY:  MOV     AX,DATA
        MOV     DS,AX

        MOV     AX,12H          ;进入640*480/16色图形模式
        INT     10H

        MOV     DI,CNCOL        ;显示汉字起始列
        MOV     DX,CNROW        ;显示汉字起始行

        SUB     BX,BX
        MOV     CX,2
DOTSCH: PUSH    CX
        MOV     SI,CHARLST[BX]  ;取汉字地址

        PUSH    DS              ;第1个参数,汉字点阵所段
        PUSH    SI              ;第2个参数,汉字点阵所在地址
        PUSH    DI              ;第3个参数,显示汉字列坐标X
        PUSH    DX              ;第4个参数,显示汉字行坐标Y
        CALL    SHOWCHAR        ;调用显示点阵汉字子程序

        ADD     DI,20
        INC     BX
        INC     BX
        POP     CX
        LOOP    DOTSCH

        LEA     DX,MSG0         ;显示信息(可能没用,因为是在图形模式)
        MOV     AH,9
        INT     21H

        MOV     AH,0            ;按任意键继续,即返回文本模式
        INT     16H

        MOV     AX,3            ;返回文本模式(同时有清屏效果)
        INT     10H

        MOV     AH,4CH
        INT     21H             ;***程序结束***
        
CODE    ENDS            
                ;代码段结束
    END START                        ;汇编结束
3 回复
#2
hu9jj2014-12-14 17:23
是在WIN操作系统下测试的吧,很可能是操作系统屏蔽了对显存的直接操作。
#3
雾楼2014-12-15 20:49
回复 2楼 hu9jj
你好,要怎么修改才能运行出来的
#4
hu9jj2014-12-17 17:00
你的运行环境是什么?如果在DOS下运行应该不会有问题。
1