第十二章:0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符”divide error”然后返回到dos.
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0 ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:di指向目的地址
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 bl,1
div bl
mov ax,4c00h
int 21h
do0: jmp short do0start
db "divide error!"
do0start:
mov ax,cs
mov ds,ax
mov si,202h ;设置ds:si指向字符串
mov ax,0b800h
mov es,ax
mov di,12*160+35*2 ;设置es:di指向显存空间的中间位置
mov cx,13d ;设置字符串长度
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 start
- [十堰职业技术学院学生211020] 是的,确实要好好学学 06/23 23:14
- [游客] 嗯。css样式表确实很实用。 06/23 15:24
- [tomato] 正确。 06/12 09:38
- [zhenglxd] 你怎么跳着学习的啊 这样可不好 还是按顺序来吧 不然 太混乱了或者整理下吧 06/12 09:12
- [mess] dw 0 ------------- 这里最好是dw 0,0 因为根据程序要求第1和2个字节 06/09 10:09
- [十堰职业技术学院学生211020] 哦,是的 太仔细了! 06/08 21:20
- [mywiil] 程序没问题,只不过assume少些了一个a。呵呵 06/08 10:04
- [mywiil] 不错,继续加油吧。 06/08 10:00
- [zhenglxd] 正确 咱们进度一样了哈 看谁先把下面的程序搞错来! 05/31 17:16
- [zhenglxd] 进度快点 我都赶到你前头去了 原先我可是比你慢些的,没想到我 放假堕落了整整一个礼拜 你居然比我还慢 05/31 17:08