《中断程序的设计说明.doc》由会员分享,可在线阅读,更多相关《中断程序的设计说明.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.1/6汇编语言实验报告汇编语言实验报告Assembly Language Programming Lab Reports_班级:班级:学号:学号:实验日期:实验日期:学院:学院:专业:专业:实验顺序:实验顺序:原创:原创:_实验名称:中断实验名称:中断程序设计程序设计实验分数:实验分数:_考评日期考评日期:_:_指导教师:指导教师:_实验目的实验目的一掌握中断的类型,软件中断和硬件终端。二掌握中断处理的过程,理解中断类型,中断向量。三掌握系系统中断以与功能调用。四可以自己设计中断程序_实验环境实验环境操作系统:windows 8编译程序:masm 5.0_实验步骤与结果分析实验步骤与结果分析
2、1.1.设计自己的中断设计自己的中断.model small.stack.codemess db press 1 to use selfintereput$mess2 db wrongmess3 db My name is ZhangXu$main proc farstart:mov ax,codemov ds,axmov dx,offset mynamemov ax,seg mynamemov ds,axmov ah,60hmov ah,25hint 21h;设置中断向量mov dx,offset messmov ax,seg messmov ds,ax.2/6mov ah,9hint 21
3、hmov dl,0dhmov ah,2int 21hmov dl,0ahint 21hmov ah,1int 21hcmp al,1jnz m2mov ah,60hint 21hjmp nextm2:mov dl,0dhmov ah,2int 21hmov dl,0ahint 21hmov dx,offset mess2mov ax,seg mess2mov ds,axmov ah,9hint 21hnext:main endpmyname proc farstimov dl,0dhmov ah,2int 21hmov dl,0ahint 21hmov cx,10bef:mov dl,*mov
4、 ah,2int 21h.3/6loop befmov ax,seg mess3mov ax,dsmov dx,offset mess3mov ah,9int 21hmov cx,10aft:mov dl,*mov ah,2int 21hloop aftcliiretmyname endpend start2,对原有的中断进展修改,对原有的中断进展修改.model small.4/6.stack.codemess1 db 0ah,0dh,enter interrupt!,0ah,0dh,$mess2 db 0ah,0dh,exit interrupt!$mess3 db 0ah,0dh,Con
5、tinue or Quit(c/q)?$;主程序main proc farstart:mov ax,codemov ds,ax;中断设置;取出原中断向量mov al,0mov ah,35h;取出原来的 0 号中断向量int 21h;放在 ES:BX 中push es;入栈保存push bxpush ds;设置新的中断向量;相当于 25h 号功能mov dx,offset showerr;获得子程序偏移地址mov ax,seg showerr;获得子程序段地址mov ds,axmov ax,0mov es,ax;0 段,向量表mov bx,0;现在的 0 号mov cl,2shl bx,clmo
6、v word ptr es:bx,dx;中断向量放入中断向量表中mov word ptr es:bx+2,ds;应用局部conti:mov dx,offset mess1;显示提示 1mov ah,9int 21hint 0;触发 0 号中断mov dx,offset mess2;显示提示 2mov ah,9int 21hmov ax,15mov bl,0idiv bl;除 0,触发 0 号中断mov dx,offset mess3;显示提示 3mov ah,9.5/6int 21hmov ah,1;输入选择int 21hcmp al,cje contiquit:pop ds;弹出保存的数据p
7、op bxpop esmov al,0;恢复原来的 0 号mov ah,25h;中断向量放入中断向量表中int 21hmov ax,4c00h;返回 DOSint 21hmain endp;中断子程序showerr proc nearshowbegin:jmp short show_str;跳过数据定义a1 db Attention!error.;显示信息与子程序放在一起,便于以后驻留a2 db 0show_str:mov ax,code;数据段与代码段同段mov ds,axsti;开中断mov dh,22;行mov dl,24;列mov bl,1;属性mov si,offset a1mov
8、ax,0b800h;显存首址mov es,axmov ax,160mul dh;行号*160mov di,ax;起始行位置sal dl,1mov dh,0add di,dx;+列号mov cx,a2-a1;字符串长度let1:;循环写字符和属性到显存mov al,simov es:di,almov byte ptr es:di+1,blinc si.6/6inc bl;改变属性add di,2loop let1;写完即显示完mov ah,2mov dl,0dh;回车换行int 21hmov dl,0ahint 21hcli;关中断iret;中断返回showend:nopshowerr endpend start