assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0h
mov ax,0b878h 书上说显存开始是B800:0000,25行的话,中间3行应该是12,13,14行,一行
mov es,ax 160字节,也就是A0H,第12行为1920个字节,偏移地址为780H,所以12行段地址
mov ah,02h 我写的是B878:0000
mov dl,24h
mov dh,71h 设置3种颜色
mov cx,10h
s1:mov al,ds:[bx]
mov es:[bp+40h],al 第12行
mov es:[bp+0e0h],al 第13行第12行地址上 加了 AOH 的偏移,
mov es:[bp+180h],al 第14行第12行地址基础上 加了 两个A0H的偏移
mov es:[bp+41h],ah 设置颜色 ,分别给3行
mov es:[bp+0e1h],dl
mov es:[bp+181h],dh
add bp,02h
inc bx
loop s1
mov ax,4c00h
int 21h
code ends
end start
高手给看看程序,应该没错吧,编译没错,但是XP下运行 无显示,用DEBUG跟踪程序,貌似无法修改显存数据,
在查看显存数据改动情况时,可以看见 右边现实 CS=XXXX 等信息 |