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

关于 BIOS中断 显示方式切换

企鹅 发布于 2007-12-11 22:26, 1376 次点击
【实验七】在图形和字符显示方式下显示字符串
一、实验目的与要求
通过分别在图形显示方式和字符显示方式下显示字符串的实验,理解和掌握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

我写的显示模式不能切换,希望高手指点
2 回复
#2
zhulei19782007-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]]
#3
企鹅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