
4个回答
展开全部
(1)内存中的 0xb8000 开始为显示缓冲区,往里面写入 ASCII 字符可以在屏幕上显示。格式为:ASCII 一字节,属性一字节。
(2)使用 int 0x10 中断,可以在屏幕上显示文字。
这是显示文字的方法,如果要显示图像,需要先用 int 0x10 中断改变屏幕显示模式,然后可以在指定地方写入像素属性,以达到显示的效果
(2)使用 int 0x10 中断,可以在屏幕上显示文字。
这是显示文字的方法,如果要显示图像,需要先用 int 0x10 中断改变屏幕显示模式,然后可以在指定地方写入像素属性,以达到显示的效果
展开全部
这是一个用四种颜色各显示一个矩形块的程序
DATA SEGMENT
LINE DW 0 ;矩形块左上角的行
ROW DW 0 ;矩形块左上角的列
PIX DB 0 ;矩形块的颜色
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: ;主程序
MOV AX , DATA
MOV DS , AX
MOV AH , 0
MOV AL , 4
INT 10H ;设置320×200彩色图形方式
mov ah,0bh
mov bh,01
mov bl,0
int 10h
MOV CX, 4
L1:
CALL DISP_RECT
call delay
inc PIX ;每循环一次,点的颜色加1
ADD ROW , 30 ;改变下一个方块的显示位置
LOOP L1
MOV AH , 4CH
INT 21H ;返回DOS
;显示矩形块的子程序,矩形块的显示位置由DATA段中的LINE、ROW变量指定,
;颜色由PIX变量指定,矩形块的大小是固定的,为10个点宽,100个点高。
DISP_RECT PROC near
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
MOV AH , 0CH ;指明写点调用
MOV AL , PIX ;取点的颜色
MOV DI , 100 ;用于控制行显示循环
MOV DX , LINE ;取点的行坐标
DISP_2:
MOV SI , 10 ;控制列显示循环
MOV CX , ROW ;取显示点的列坐标
DISP_1:
INT 10H ;完成点的显示
INC CX ;列坐标加1(行不变)
DEC SI
JNZ DISP_1 ;循环显示完一行的10个点
INC DX ;行坐标加1
DEC DI
JNZ DISP_2 ;循环显示完100行
POP DI
POP SI
POP DX
POP CX
POP AX
RET
DISP_RECT ENDP
delay proc near
push cx
push dx
mov dx,5000
d11: mov cx,25000
d12: loop d12
dec dx
jnz d11
pop dx
pop cx
ret
delay endp
CODE ENDS
END START
DATA SEGMENT
LINE DW 0 ;矩形块左上角的行
ROW DW 0 ;矩形块左上角的列
PIX DB 0 ;矩形块的颜色
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: ;主程序
MOV AX , DATA
MOV DS , AX
MOV AH , 0
MOV AL , 4
INT 10H ;设置320×200彩色图形方式
mov ah,0bh
mov bh,01
mov bl,0
int 10h
MOV CX, 4
L1:
CALL DISP_RECT
call delay
inc PIX ;每循环一次,点的颜色加1
ADD ROW , 30 ;改变下一个方块的显示位置
LOOP L1
MOV AH , 4CH
INT 21H ;返回DOS
;显示矩形块的子程序,矩形块的显示位置由DATA段中的LINE、ROW变量指定,
;颜色由PIX变量指定,矩形块的大小是固定的,为10个点宽,100个点高。
DISP_RECT PROC near
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
MOV AH , 0CH ;指明写点调用
MOV AL , PIX ;取点的颜色
MOV DI , 100 ;用于控制行显示循环
MOV DX , LINE ;取点的行坐标
DISP_2:
MOV SI , 10 ;控制列显示循环
MOV CX , ROW ;取显示点的列坐标
DISP_1:
INT 10H ;完成点的显示
INC CX ;列坐标加1(行不变)
DEC SI
JNZ DISP_1 ;循环显示完一行的10个点
INC DX ;行坐标加1
DEC DI
JNZ DISP_2 ;循环显示完100行
POP DI
POP SI
POP DX
POP CX
POP AX
RET
DISP_RECT ENDP
delay proc near
push cx
push dx
mov dx,5000
d11: mov cx,25000
d12: loop d12
dec dx
jnz d11
pop dx
pop cx
ret
delay endp
CODE ENDS
END START
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用汇编来做这个事情太费事了
但是,曾经这是一种最快的方式
首先是要用汇编调用写屏幕中断程序,完成某个点的点亮
然后是把图像放在某个内存,逐个按照相应位置点亮
记得是INT10 ,你查一下详细的位置和颜色定义用的是哪个寄存器
之前还需要设置显卡的显示制式
但是,曾经这是一种最快的方式
首先是要用汇编调用写屏幕中断程序,完成某个点的点亮
然后是把图像放在某个内存,逐个按照相应位置点亮
记得是INT10 ,你查一下详细的位置和颜色定义用的是哪个寄存器
之前还需要设置显卡的显示制式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是图片的话 首先你得通过中断选择图形模式 然后把图片的像素点一个个的赋值给显存就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询