永远健康 发表于 2014-11-21 17:51:20

关于内中断问题的

下面这段程序是王爽汇编里的作业题,编译链接后运行不正常,我和小甲鱼老师的习题答案对了一下,没错,然后把里面的细节都改的和答案一样了,可运行时还是出错。是不是和我的系统有关啊,请哪位老师给指点一下吧。
;编写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

永远健康 发表于 2014-11-22 08:34:29

好了,找到毛病了。是结尾没有写中断返回的iret指令,不过我下载的以前的习题答案也没写这个指令。呵呵

永远健康 发表于 2014-11-22 08:35:15

的上分公司的风格个好

向往青莲 发表于 2014-11-22 10:39:45

额。。。。。。。。。。。。

黄家酱油 发表于 2014-12-22 19:54:03

:big

阔怀 发表于 2015-8-5 11:52:27

好多
页: [1]
查看完整版本: 关于内中断问题的