关于内中断问题的
下面这段程序是王爽汇编里的作业题,编译链接后运行不正常,我和小甲鱼老师的习题答案对了一下,没错,然后把里面的细节都改的和答案一样了,可运行时还是出错。是不是和我的系统有关啊,请哪位老师给指点一下吧。;编写0号中断处理程序
;编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串‘divide error!’,然后返回dos
;名称:0号中断处理程序
;功能:使得除法溢出发生时,在屏幕中间显示字符串‘divde error!’,然后返回dos
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0 ;设置ds:指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:指向目标地址
mov cx,offset do0end - offset do0 ;设置cx传输长度,要存放在目标内存中的代码的长度
cld ;设置传输长度为正
rep movsb ;循环传输字符串
mov ax,0 ;设置中断向量表的中断程序入口地址
mov es,ax
mov word ptr es:,200h ;偏移地址
mov word ptr es:,0 ;段地址
mov ax,4c00h
int 21h ;传输程序结束
do0: jmp short do0start ;跳过存放数据的内存单元
db 'divide error!'
do0start:
mov ax,cs ;设置ds:指向字符串
mov ds,ax
mov si,202h
mov ax,0b800h ;设置es:指向显存地址
mov es,ax
mov di,12*160+36*2
mov cx,13 ;设置要传输的字符串的长度
s: mov al,
mov es:,al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end: nop
code ends
end start
好了,找到毛病了。是结尾没有写中断返回的iret指令,不过我下载的以前的习题答案也没写这个指令。呵呵 的上分公司的风格个好 额。。。。。。。。。。。。 :big 好多
页:
[1]