汇编中如何让数据在显存中不被刷新

我把数据写进显存,在debug中可以直接看到当时写入的数据,但是一旦执行“t”命令时,显存就会被自动刷新,这是为什么啊?assumecs:code,ds:data,ss:... 我把数据写进显存,在debug中可以直接看到当时写入的数据,但是一旦执行“ t ”命令时,显存就会被自动刷新,这是为什么啊?
assume cs:code,ds:data,ss:static
data segment
dw 1126,1475,1784,0
dw 5 dup(0)
data ends
static segment
dw 32 dup(0)
static ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,static
mov ss,ax
mov sp,20h
mov si,0
mov di,0
mov ax,0b880h
mov es,ax

s3: mov bx,10
mov cx,0
call j
add si,2
mov cx,[si]
jcxz ok1
jmp short s3
ok1: mov ah,1
int 21h
mov ax,4c00h
int 21h

j: mov ax,[si]
mov ds:[10],sp
mov dx,0

s: div bx
mov cl,dl
mov ds:[12],sp
jcxz ok
push dx
mov dx,0
jmp short s

ok: mov bx,ds:[10]
mov dx,ds:[12]
sub bx,dx
mov ax,bx
mov bx,2
mov dx,0
div bx
mov cx,ax

s2: pop ax
mov ah,2
add al,30h
mov es:[di],ax
add di,2
loop s2
mov dx,0
ret
code ends
end start
展开
 我来答
百度网友be1617a
2013-11-18 · TA获得超过356个赞
知道小有建树答主
回答量:142
采纳率:75%
帮助的人:51.7万
展开全部
程序中错误太多了,先不要调试写显存部分了。如需帮助修改程序,请追问。
更多追问追答
追问
那太谢谢了!帮帮忙把!
追答
经debug 调试,你的程序没错,但你的部分程序编得不够好。
1.将es的值改变就可以在debug显示了.

mov ax,0b800h+80*20*2/4 //改为在第20行显示,在文字滚动时也可以看得到了。
mov es,ax
2.除以2的几行代码可以用一句就够了 ,即 shr bx,1
百度网友2b817f1e4
2013-11-18 · 超过76用户采纳过TA的回答
知道小有建树答主
回答量:158
采纳率:100%
帮助的人:43.7万
展开全部
是的,DEBUG同时会影响显存内容。MSDOS环境下显示内存可以被分成几个页面。你可以在那个非当前页面内组织数据,完成后切换到当前页面。当然DEBUG的输出信息始终会影响当前页面的内容
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fastfs
2013-11-15 · TA获得超过1423个赞
知道大有可为答主
回答量:2659
采纳率:62%
帮助的人:806万
展开全部
debug也要显示器上显示所以会被覆盖,直接执行就行了。
追问
关键问题是,我要把数据完整的显示在屏幕上,直接运行也显示不出来!郁闷啊!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式