zoukankan      html  css  js  c++  java
  • 汇编试验十二:编写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
  • 相关阅读:
    Advanced Configuration Tricks
    Reviewing the Blog Module
    Editing and Deleting Data
    Making Use of Forms and Fieldsets
    Understanding the Router
    SQL Abstraction and Object Hydration
    Preparing for Different Databases
    Java学习理解路线图
    Openstack学习历程_1_视频
    CentOS安装Nginx负载
  • 原文地址:https://www.cnblogs.com/TreeDream/p/7045238.html
Copyright © 2011-2022 走看看