当前位置:首页 > 汇编语言实验报告
实验12 编写、应用中断例程
编写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 ;设置cx为传输长度 cld ;设置传输方向为正
rep movsb ;此处的指令类似于mov es:[di],word ptr ds:[si] ; loop s (事实上并不存在这种指令)
mov ax,0 mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;设置中断向量表(除法溢出为0号中断)
mov ax,1000h mov bl,1
div bl ;此处为实验除法溢出的代码
mov ax,4c00h int 21h
do0: jmp short do0start ;指令占两个字节,故字符串的偏移地址为202h db \
do0start: mov ax,cs mov ds,ax
mov si,202h ;设置ds:si指向字符串
mov ax,0b800h mov es,ax
mov di,12*160+36*2 ;设置es:di指向显存空间的中间位置
mov cx,13 ;设置cx为字符长度
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
共分享92篇相关文档