int指令笔记

1.进入中断例程后ds没有变,所以可以正确索引程序数据
2.进入中断例程后,通过修改栈中的ip值可以使返回到指定位置
3.bios中的内容:
(1)硬件系统的检测和初始化程序
(2)外部中断和内部中断例程
(3)用于对硬件设备进行I/O操作的中断例程
(4)其他和硬件系统有关的中断例程
4.在和硬件设备有关的dos中断例程中,一般都调用了bios的中断例程
5.bios和dos提供的中断例程如何安装到内存:
(1)开机,cpu加电,初始化cs=0ffffh,ip=0,自动从ffff:0处开始执行。ffff:0处有一条跳转指令,转去执行bios中的硬件系统检测和初始化程序。
(2)初始化程序建立bios的中断向量(注册)。
注意点:对于bios中断,只需注册,不用安装。因为在ROM中,一直在内存。
(3)int 19h 进行操作系统的引导(控制权转交OS)
(4)dos启动后,安装dos中断例程,并注册。
6.bios中断:
int 10h
(1)ah=2    设置光标
bh    页号
dh    行号
dl    列号
(2)ah=9    在光标处显示字符
al    字符
bl    颜色属性
bh    页号
cx    字符重复个数
7.dos中断:
int 21h
(1)ah=4ch    程序返回
al    返回值
(2)ah=9    在光标处显示字串
ds:dx    指向字符串(字符串用’$'结束)
注意:如果字符串过长,会自动换行;到了最后一行,会自动上卷。
8.写个7ch中断,显示用0结束的字符串。dh=行号,dl=列号,cl=颜色,ds:si指向字符串
程序功能非常简单,代码思路也很清晰,不再加注释
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset show
mov ax,0
mov es,ax
mov di,200h
mov cx,offset showend-offset show
cld
rep movsb

mov word ptr es:[7ch*4+2],0
mov word ptr es:[7ch*4],200h

mov ax,4c00h
int 21h

show:
push ax
push cx
push dx
push si
push di
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov dh,0
add dx,dx
add ax,dx
mov di,ax
s:        mov al,[si]
cmp al,0
jz loopend
mov es:[di],al
mov es:[di+1],cl
inc si
add di,2
jmp s
loopend:
pop di
pop si
pop dx
pop cx
pop ax
iret
showend:nop
code ends
end start
9.对实验13(3)的体会:offset可以用在数据段。。这个知识点今天才知道。。
s:    dw    offset s1,offset s2,offset s3,offset s4
似乎也是这本书第一次出现带标号的数据。。
10.接下来有必要买本中断大全了,还是纸质的有感觉。。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>