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

本文介绍了一个使用汇编语言编写的程序,该程序能够在发生除法溢出时,在屏幕中央显示“divideerror!”警告信息,并返回到DOS环境。通过设置中断向量表并利用中断处理程序实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ;************************************************
;编写程序,使得在除法溢出时,在屏幕中间显示字符串
;"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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值