王爽汇编语言实验十二(更新)

来源:互联网 发布:建行网络学系统登录 编辑:程序博客网 时间:2024/04/29 13:39

 ;************************************************
;编写程序,使得在除法溢出时,在屏幕中间显示字符串
;"divide error!"然后返回dos
;************************************************
assume cs:code

code segment
start:
   mov ax,cs
   mov ds,ax
   mov si,offset do0                              ;源地址
  
   mov ax,0
   mov es,ax
   mov di,200h                                    ;目标地址
   mov cx,offset do0end-offset do0
   cld
   rep movsb                                      ;将中断处理程序放到内存中

  
 
   mov word ptr es:[0*4],200h
   mov word ptr es:[0*4+2],0                      ;设置中断向量表

  
   int 0
   mov ax,4c00h
   int 21h
 

do0:                                              ;显示中断处理程序
        push cx
        push si
        push ax
 push es
        push di
    jmp short do0start
    db  'divide errors! ',0
do0start:
   mov ax,cs
   mov ds,ax
   mov si,207h                                    ;注意:push ax指令的地址是0:202h,所以存放数据的地址为0:207h
   mov ax,0b800h
   mov es,ax
   mov di,12*160+36*2                              ;计算dos中间位置
   xor cx,cx
s: mov cl,[si]
   jcxz next
   mov al,cl
   mov es:[di],al
   inc si
   add di,2
   jmp s
 
next:
        pop di
 pop es
 pop ax
        pop si
        pop cx
        iret
    
do0end:nop
  
code ends
     end start