汇编语言怎样在屏幕显示一个图像?

汇编语言怎样在屏幕显示一个图像?... 汇编语言怎样在屏幕显示一个图像? 展开
 我来答
ntsdfans
推荐于2018-04-05 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:50%
帮助的人:67.6万
展开全部
(1)内存中的 0xb8000 开始为显示缓冲区,往里面写入 ASCII 字符可以在屏幕上显示。格式为:ASCII 一字节,属性一字节。
(2)使用 int 0x10 中断,可以在屏幕上显示文字。
这是显示文字的方法,如果要显示图像,需要先用 int 0x10 中断改变屏幕显示模式,然后可以在指定地方写入像素属性,以达到显示的效果
哀何忧I
2008-12-07 · TA获得超过189个赞
知道小有建树答主
回答量:409
采纳率:0%
帮助的人:196万
展开全部
这是一个用四种颜色各显示一个矩形块的程序
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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anan640925
2015-09-15 · TA获得超过5421个赞
知道大有可为答主
回答量:4868
采纳率:51%
帮助的人:1313万
展开全部
用汇编来做这个事情太费事了
但是,曾经这是一种最快的方式
首先是要用汇编调用写屏幕中断程序,完成某个点的点亮
然后是把图像放在某个内存,逐个按照相应位置点亮
记得是INT10 ,你查一下详细的位置和颜色定义用的是哪个寄存器
之前还需要设置显卡的显示制式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
左洛飞68
2015-11-07 · 超过19用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:27.8万
展开全部
如果是图片的话 首先你得通过中断选择图形模式 然后把图片的像素点一个个的赋值给显存就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式