汇编试验十二:编写0号中断的处理程序

要求:除法溢出的时候,在屏幕中心处显示overflow!

分析:

  • 0号中断,对应的中断入口地址中的程序可以不用修改,放到内存0:空余位置(空余位置一般是0000::0200~0000:02FF)于是,就将显示字符串的程序放到这里;
  • 用一个do0安装程序,将这个中断程序复制到内存0000:0200那里去;格式是:es:di 目的地址,ds:si源程序,cld复制方向,rep movsb 复制
  • 子程序(中断程序)中,显示的字符串,不能放到一个独立的代码段,而是放到一个中断程序本身里面,因为复制程序运行完后,内存释放,代码段中的内容可能改变;
  • 重新写一个程序故意除法溢出

效果:

 

Source Code:

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指向目的地址
    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 "overflow!"

    do0start:
        mov ax,cs
        mov ds,ax
        mov si,202h     ;ds:si指向字符串,复制到0:200处

        mov ax,0b800h
        mov es,ax
        mov di,12*160+36*2  ;显示位置

        mov cx,9
        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
View Code
assume cs:code

code segment
start:
mov ax,1000h
mov bh,1
div bh
code ends
end start
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/7045238.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值