我从前最怕旁人火眼金睛,如今,倒是盼着有人能够洞幽烛远。如此,就能赠我一点欢喜。
一、实验目的
- 会自定义中断解决问题
- 能通过定制键盘中断,实现对键盘的监听并完成一定的功能
二、实验内容过程记录
任务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)运行结果截图