实验7 中断及应用

我从前最怕旁人火眼金睛,如今,倒是盼着有人能够洞幽烛远。如此,就能赠我一点欢喜。

一、实验目的

  1. 会自定义中断解决问题
  2. 能通过定制键盘中断,实现对键盘的监听并完成一定的功能 

二、实验内容过程记录

任务1-自定义中断,用中断来算算术

(1)自定义79h号中断,在中断被调用时,可以将(ah)和(al)中的两个数按(bl)中提供的运算符('+'或'-')计算,其结果由(ah)返回。编程序实现该中断并将其安装到0:200H。例如,(ah)=5,(al)=3,(bl)='+'时,(ah)=8;(ah)=5,(al)=3,(bl)='-' 时,(ah)=2。

定义并安装中断例程的代码为(加入足量注释):

运行结果截图:

(2)运行下面的程序,利用自定义的79h中断解决问题

assume cs:code, ss:stack

stack segment stack

       db  16 dup (0)

stack ends

code segment

start:

       mov ah, 5

       mov al, 3

       mov bl, '+'

       int 79h

       ;单步运行程序到此观察结果

       mov ax,4c00h

       int 21h

code ends

end start

测试中断正常调用,运行截图如下:

 

(3)给出下面的数据区定义,利用前面定义的中断79h,完成对10个“算式”的求解,其结果存放在?处。

datasg segment

    db 8, '+', 9, ?

    db 9, '-', 1, ?

    db 2, '+', 3, ?

    db 7, '-', 5, ?

    db 4, '-', 2, ?

    db 8, '+', 1, ?

    db 5, '+', 6, ?

    db 13,'-', 7, ?

    db 8, '+', 4, ?

    db 8, '-', 2, ?

datasg ends

调用中断解决问题的程序为(加入足量注释):

运行结果截图:

 

任务2-输数字,出字母

输入1-9的数字,以其作为序号,输出对应的字母。例如,输入1,输出a;而输入4,输出d

报告内容:

(1)我的程序是(我已经加入了足够的注释):

(2)运行结果截图

 

利用BIOS系统功能调用,将键盘输入的小写字母转换成大写字母后输出显示,输入非小写字母时,什么也不显示,等待其他输入;输入‘$’字符时结束。

报告内容:

(1)我的程序是(我已经加入了足够的注释):

        

(2)运行结果截图

       

利用回显的中断演示可以更加清楚的看清执行结果的过程

将程序补充完整,将text指向的三行文本保存到文件中去。

报告内容:

(1)我的程序是(我已经加入了足够的注释):

(2)运行结果截图

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章