汇编语言(王爽第三版)实验12编写0号中断的处理程序

标签:
汇编王爽it教育 |
分类: 汇编语言(王爽第三版)实验 |
实验12 编写0号中断的处理程序
assume cs:code
code segment
start:
mov ax, code
mov ds, ax
设置源内存单元地址 mov si, offset do0 ;
mov ax, 0000H
mov es, ax
设置目标内存单元地址0000:0200H mov di, 0200H ;
设置传输的长度。 mov cx, offset do0end - offset do0 ;
传输方向为正,即si和di增加。 cld ;
rep movsb
设置中断向量表,将0号中断向量设置为0000:0200H ;
mov ax, 0000H
mov es, ax
mov word ptr es:[0*4], 0200H
mov word ptr es:[0*4+2], 0000H
mov ax, 4c00H
int 21H
;------
; 程序名称:do00 号中断处理程序,装载到0000:200H
; 功能:在屏幕中央显示字符串,显示“除法溢出”。
; 入口参数:无
; 返回值:无
;------
do0: jmp short do0start
db 'divide error!'
do0start:
mov ax, cs
mov ds, ax
设置ds:si指向字符串。 mov si, 0202H ;
mov ax, 0b800H
mov es, ax
设置es:di指向显存,(屏幕中央) mov di, 12*160+36*2 ;
字符串长度13 mov cx, 13 ;
s: mov al, [si]
mov es:[di], al ;
inc si
显存2个字节代表一个字,其中奇数代表字符。 add di, 2 ;
loop s
mov ax, 4c00H
int 21H
do0end: nop
code ends
end start
-d 0000:0
0000:0000
-d 0000:200
0000:0200
0000:0210
0000:0220
0000:0230
assume cs:code
code segment
start:
code ends
end start