企鹅 发表于 2007-12-11 22:26

关于 BIOS中断 显示方式切换

【实验七】在图形和字符显示方式下显示字符串
一、实验目的与要求
通过分别在图形显示方式和字符显示方式下显示字符串的实验,理解和掌握BIOS显示器中断调用(INT 10H)的方法。
二、实验内容
编写一个程序,分别在640×200单色图形显示方式和80×25彩色文本显示方式下显示字符串“ABCDEF…XYZ”,按任一键进行切换。
DATAS SEGMENT
CHAR  DB 'ABCDEFGHIGKLMNOPQRSTUVWXYZ$'  
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    LEA        DX,CHAR
    MOV AL,06H
    MOV BL,0H
CHR: MOV AH,00H
           INT 10H
        MOV        AH,09H
        INT        21H
        MOV AH,01H
    INT 21H
    CMP AL,'E'
    JZ EXIT
    MOV AH,00H
    MOV        AL,08H
           INT 10H
           MOV        AH,01H
           INT 21H
           JMP CHR
EXIT:    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

我写的显示模式不能切换,希望高手指点

zhulei1978 发表于 2007-12-12 19:12

80×25彩色文本应该是3吧


DATAS SEGMENT
CHAR  DB 'ABCDEFGHIGKLMNOPQRSTUVWXYZ$'  
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    LEA DX,CHAR
    MOV CL,0
CHR:
    AND CL,1
    CMP CL,0
    JNZ FLAG1
    MOV AL,06H
    MOV AH,00H
    INT 10H
    JMP FLAG2
FLAG1:
    MOV AL,03H
    MOV AH,00H
    INT 10H
FLAG2:
    MOV AH,09H
    INT 21H
    MOV AH,01H
    INT 21H
    CMP AL,'E'
    JZ EXIT
    INC CL
    JMP CHR
EXIT:
    MOV AL,2
    MOV AH,0
    INT 10H
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

[[italic] 本帖最后由 zhulei1978 于 2007-12-13 10:36 编辑 [/italic]]

企鹅 发表于 2007-12-14 20:07

做出来了

DATAS SEGMENT
CHAR  DB 'ABCDEFGHIGKLMNOPQRSTUVWXYZ$'  
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    LEA        DX,CHAR
    MOV CL,03H
    MOV BL,06H
CHR: MOV AH,00H
        MOV        AL,CL
           INT 10H
        MOV        AH,09H
        INT        21H
        MOV AH,01H
    INT 21H
    XCHG        CL,BL
           JMP CHR         
EXIT:MOV AH,4CH
    INT 21H
CODES ENDS
    END START

页: [1]

编程论坛