鱼C论坛

 找回密码
 立即注册
查看: 2721|回复: 5

[汇编作业] 关于内中断问题的

[复制链接]
发表于 2014-11-21 17:51:20 | 显示全部楼层 |阅读模式
5鱼币
下面这段程序是王爽汇编里的作业题,编译链接后运行不正常,我和小甲鱼老师的习题答案对了一下,没错,然后把里面的细节都改的和答案一样了,可运行时还是出错。是不是和我的系统有关啊,请哪位老师给指点一下吧。
;编写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:[si]指向源地址
                        mov ax,0
                        mov es,ax                          
                        mov di,200h                        ;设置es:[di]指向目标地址
                        mov cx,offset do0end - offset do0   ;设置cx传输长度,要存放在目标内存中的代码的长度
                        cld                                 ;设置传输长度为正
                        rep movsb                           ;循环传输字符串
                        mov ax,0                            ;设置中断向量表的中断程序入口地址
                        mov es,ax
                        mov word ptr es:[0*4],200h          ;偏移地址
                        mov word ptr es:[0*4+2],0           ;段地址
                       
                       
                        mov ax,4c00h
                        int 21h                                                                ;传输程序结束
        do0:        jmp short do0start                  ;跳过存放数据的内存单元
                        db 'divide error!'
do0start:       
                        mov ax,cs                           ;设置ds:[si]指向字符串
                        mov ds,ax
                        mov si,202h
                       
                       
                        mov ax,0b800h                        ;设置es:[di]指向显存地址
                        mov es,ax
                        mov di,12*160+36*2
                       
                        mov cx,13                            ;设置要传输的字符串的长度
        s:                mov al,[si]
                        mov es:[di],al
                        inc si
                        add di,2
                        loop s

                        mov ax,4c00h
                        int 21h
                       
                       
                       
do0end:                nop

code ends
end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-22 08:34:29 | 显示全部楼层
好了,找到毛病了。是结尾没有写中断返回的iret指令,不过我下载的以前的习题答案也没写这个指令。呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-22 08:35:15 | 显示全部楼层
的上分公司的风格个好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-22 10:39:45 | 显示全部楼层
额。。。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-22 19:54:03 | 显示全部楼层
:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-5 11:52:27 | 显示全部楼层
好多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 13:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表