疯狂的暑假学习之 汇编入门学习笔记 (十二)—— int指令、端口
参考: 《汇编语言》 王爽 第13、14章
一、int指令
1. int指令引发的中断
int n指令,相当于引发一个n号中断。
执行过程相当于:
(1)取中断类型吗n。
(2)标志寄存器入栈;设置IF=0,TF=0。
(3)CS,IP入栈
(4)(IP)=(n*4),(CS)=(n*4+2)
例子1:编写、安装中断7ch,实现求一个word型数据的平方,用ax存放这个数据。
assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset sqr mov ax,0 mov es,ax mov di,200h mov cx,offset sqrend - offset sqr cld rep movsb mov ax,0 mov es,ax mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0 mov ax,4c00h int 21h sqr: mul ax iretsqrend: nop code ends end start
assume cs:codecode segmentstart: mov ax,3 int 7ch mov ax,4c00h int 21hcode endsend start
例子2:编写、安装7ch中断,实现将data段中的字符串转化为大写。
assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset change mov ax,0