美文网首页
[汇编语言] 实验12

[汇编语言] 实验12

作者: 耿杰 | 来源:发表于2019-08-05 16:04 被阅读0次

    一、编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示 字符串"divide error!",然后返回到DOS.

    答案

    assume cs:code
    
    code segment
        begin:
            //   源地址
            mov ax, code
            mov ds, ax
            mov si, offset do0
            //  目标地址
            mov ax, 0
            mov es, ax
            mov di, 200h
            // 设置movsb的次数,用标号do0end-标号do0,就是传输的长度
            mov cx, offset do0end-offset do0
            // 设置传输方向为正
            cld  
            rep movsb  
            
            // 设置中断向量
            mov ax, 0
            mov es, ax
            mov word ptr es:[0], 200h
            mov word ptr es:[2], 0
            
            // 测试的程序
            mov ax, 1000h
            mov bh, 1
            div bh
            
            mov ax, 4c00h
            int 21h
          
          // 程序的入口  
          do0:
            jmp short do0start
            db 'overflow!'
            
      do0start:
            //  ds:si 指向字符串
            mov ax, 0
            mov ds, ax
            mov si, 202h
            // es:di 显存空间的中间位置 
            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 begin
    

    效果图

    1.gif

    相关文章

      网友评论

          本文标题:[汇编语言] 实验12

          本文链接:https://www.haomeiwen.com/subject/cvmmdctx.html