自定义0号中断

调试了好久才得到想要的结果,分享下:

assume cs:codesg

codesg segment

  ; move the code to the 0:200
 start: mov ax,cs
mov ds,ax ; source segment in the cs segment
mov si,offset d0

mov ax,0
mov es,ax
mov di,200h ; di can be assign a value directly 
mov cx, offset d0end - offset d0
cld
rep movsb

; set the interupt table
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

    d0: jmp short d0start
db "Divid Overflow!"
d0start:mov ax,cs
mov ds,ax
mov si,202h ; si point to the 'Divid Overflow!'

mov bx,0b800h
mov es,bx
mov di,160*12+33*2 ; di point to the video memory

mov cx,15
    s:  mov ax,[si]
mov ah,02
mov es:[di],ax
inc si
add di,2
loop s

mov ax,4c00h
int 21h
 d0end: nop

codesg ends

end start


NOTE:

1.用到[寄存器]取数据的时候,最好源用si(source) 目的用si(destination)这样在使用时候不容易混淆源和目的的指针。

2.在显示的时候是12*160+33*2(显示在第十二行33列),写的时候要清楚含义。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值