[汇编语言] 实验12

2019-08-05  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读