汇编中如何让数据在显存中不被刷新
我把数据写进显存,在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 展开
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 展开
展开全部
是的,DEBUG同时会影响显存内容。MSDOS环境下显示内存可以被分成几个页面。你可以在那个非当前页面内组织数据,完成后切换到当前页面。当然DEBUG的输出信息始终会影响当前页面的内容
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
debug也要显示器上显示所以会被覆盖,直接执行就行了。
追问
关键问题是,我要把数据完整的显示在屏幕上,直接运行也显示不出来!郁闷啊!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询