int指令
另外一种重要的中断,由int指令引发的中断
1>
int指令格式 int n :n为中断类型码,功能引发中断过程
cpu执行
取中断类型n
标志寄存器push if=0 tf=0
cs ip push
更改cs ip
中断7ch
安装
ds:si 源地址 ds有cs复制 si有offset
es:di 目的地址 es=0000H ,si=200h
中断向量
mov word ptr es:[...],200h ;ip
mov word ptr es:[...],0 ;cs
mov ax ,4c00h
int 21h
循环
change:
mov cl,[si]
jxcz ok
jmp short change
ok:
mov ax ,4c00
int 21
2>
对int iret 和栈的深入理解
用7ch中断历程完成loop指令的功能
7ch中断,用cx存放循环次数,bx存放位移
int 7ch
push flag
push cs
push ip 这个是调用程序的
改变这个cs:ip
push bp
3>
bios和dos所提供的中断例程
系统的rom bios 内容
1硬件系统的检测和初始化程序
外部中断和内部中断的中断例程
用于对硬件设备进行i/0操作的中断例程
其他和硬件系统相关的中断例程
4>
bios和dos中断例程的安装过程
1:
开机加电
init
(cs)=offffh (ip)=0 有一条跳转指令
转去执行bios的硬件系统检测和程序初始化
2:
初始化将建立bios所支持的中断向量,中断处理程序是固化在rom,一直在内存中存在
3:
硬件系统检测和初始化后,调用int 19h进行操作系统的引导,将由操作系统控制
4:
dos启动
do...还将所提供的中断例程装入内存,建立相应的中断向量
5>
bios中断例程应用
int10中断例程是bios提供, 包含多个屏幕输出相关的子程序
bios 和dos提供的中断例程,都用ah来传递内部子程序编号
(ah)=2
mov ah,2
mov bh,0,第0页
mov dh,5 ;放置行
mov dl,12;放置列
(ah)=9
表示调用第10号中断例程的9号子程序,功能为在光标位置显示字符
提供要显示字符的:颜色,页号,字符重复
设置光标到第0页,第5行,第5列
页的含义:内存空间 b8000-bffffh 共32k空间80*25彩色字符模式显示缓冲区
分成8页,没页4K.显示器可以显示任意一页的内容,一般显示第1页,
dhdl 行列 ,ah子程序编号,al字符,bh页号,bl颜色属性,cx字符重复次数
ASSUME cs:code
code segment
START:
mov ah,2
mov bh,0
mov dh,5
mov dl,12
int 10h
mov ah,2
mov al,'z'
mov bl,11001010b
mov bh,0
mov cx,1000
int 10h
;此处输入代码段代码
MOV AH,4CH
int 21h
code ENDS
END START
6>
dos中断例程应用
int 21h包含了dos提供给程序员在编程时调用子程序
mov ah,4ch ;调用21号中断例程的4ch号功能,
mov al 0 ;返回值
int 21h
ASSUME cs:code
data segment
db 'welcome to masm','$'
data ends
code segment
START:
mov ah,2 ;置光标
mov bh,0 ;第0页
mov dh,5 ;第5行
mov dl,6 ;第5列
int 10h
mov ax,data
mov ds,ax
mov dx,0
mov ah,9
int 21h
;此处输入代码段代码
MOV AH,4CH
int 21h
code ENDS
END START
7>
编写,应用中断例程
(1)
(2)
(3)
阅读(946) | 评论(1) | 转发(0) |