• 汇编试验十二:编写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
  • 相关阅读:
    【POJ1961】period
    主席树入门
    noip模拟【tea】
    noip模拟【service】
    noip模拟【noname】
    clearfix清除浮动
    九大内置对象
    2017/10/10 jar包错误
    mybatis案例源码详解
    自动类型转换
  • 原文地址:https://www.cnblogs.com/TreeDream/p/7045238.html
Copyright © 2020-2023  润新知