汇编语言带领我们直接面向机器编程,让我们掌握机器底层的代码实现过程,更好得让我们掌握编程得思想。
在开始这个程序之前我们先来回顾一下中断的处理过程
1.获得中断类型码N
2.标志寄存器入栈,设置TF=0 IF=0
3.CS和IP入栈
4.CS=0000:[4*N+2],IP=0000:[4*N]
5.转去执行CS:IP所指的指令
下面是0号中断处理程序的代码实现
assume cs:code
code segment
;将do0子程序送入到0:200处
;利用movsb来进行传送,ds:si中的内容送入到es:di中,cx为传送字符的长度,sf置为零
start:
;将ds指向do0,do0的段地址就是cs
mov ax,cs
mov ds,ax
;将si为do0的偏移地址
mov si,offset do0
;将es指向0000h处
mov ax,0
mov es,ax
;将di指向0200h处
mov di,0200h
;cx为要搬迁数据的长度
mov cx,offset do0_end - offset do0
;将sf置零,为si,di为正向递增
cld
;开始搬迁数据 rep是根据cx的值重复执行后面的数据,直到cx为0
;movsb的功能是将ds:si中的数据转移到es:di中
rep movsb
;设置中断向量表
mov ax,0
mov es,ax
mov word ptr es