王爽汇编第二版的问题,有谁知道我在运行13.3的 “在屏幕中间显示80个!”的程序时报的这个错是什么意思
我显示执行的7ch的安装程序,接着就执行书上的下面这段代码,assumecs:codecodesegmentstart:movax,0b800hmoves,axmovdi...
我显示执行的7ch的安装程序,接着就执行书上的下面这段代码,
assume cs:code
code segment
start: mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s-offset se
mov cx,80
s: mov byte ptr es:[di],'!'
add di,2
int 7ch
se: nop
mov ax,4c00h
int 21h
code ends
end start
出现了这么个框
我debug后是在这里产生的直接就跳出来了
下面是我写的7ch的实现Loop的功能的安装程序,是不是这个不对啊???
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset lp
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpend-offset lp
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
lp: push bp
mov bp,sp
dec cx
jcxz lpend
add [bp+2],bx
lpend: pop bp
iret
code ends
end start 展开
assume cs:code
code segment
start: mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s-offset se
mov cx,80
s: mov byte ptr es:[di],'!'
add di,2
int 7ch
se: nop
mov ax,4c00h
int 21h
code ends
end start
出现了这么个框
我debug后是在这里产生的直接就跳出来了
下面是我写的7ch的实现Loop的功能的安装程序,是不是这个不对啊???
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset lp
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpend-offset lp
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
lp: push bp
mov bp,sp
dec cx
jcxz lpend
add [bp+2],bx
lpend: pop bp
iret
code ends
end start 展开
展开全部
图中 cs=0000 ip=0077 果断不对了
追问
是我把iret和pop bp没有放到中断里面,我在lpend后面加了个标号lp0: nop,
把前面的mov cx,offset lpend-offset lp改成了
mov cx,offset lp0-offset lp
非常感谢哈
追答
你图中 cs=000 ip=0077 代码怎么会运行到这里?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询