汇编语言(2016级)实验6 中断及应用

实验6 中断及应用

1. 实验目的

  • 会用BIOS中断和DOS中断实现输入输出
  • 能通过定制键盘中断,实现对键盘的监听并完成一定的功能

2.实验内容

任务1-改写菜单程序(即第13周课堂活动最后一个任务)
读懂并运行菜单程序,然后
(1)用代码的直接定址表改写程序
(2)增加一个功能,菜单显示项为“ 5. DEBUG”
(3)在报告中比较原程序与改写后程序的优劣。
附:任务1原始程序

assume cs:code, ss:stack
stack segment
     db 100H dup (?)
stack ends
code  segment
      org 100h
start:
      jmp beg
menu  db 10,13,10,13,'           MENU          '
      db 10,13
      db 10,13,'           1. FILE'
      db 10,13,'           2. EDIT'
      db 10,13,'           3. COMPILE'
      db 10,13,'           4. RUN'
      db 10,13,'           0. QUIT'
      db 10,13
      db 10,13,'   please choose one of 0~4:','$'

beg:
      push cs
      pop ds     ;设置数据段
disp0:
      lea dx,menu ;DS:DX=待输出字符的地址
      mov ah,9
      int 21h     ;调用21h中断的第9号功能,显示以'$'结束的字符串

      mov ah,1
      int 21h     ;调用21h中断的第1号功能,从键盘读入字符,AL保存读入字符的ASCII码

      cmp al,'0'
      je exit
      cmp al,'1'
      je disp1
      cmp al,'2'
      je disp2
      cmp al,'3'
      je disp3
      cmp al,'4'
      je disp4
      jmp disp0
disp1:
      call sub1
      jmp disp0
disp2:
      call sub2
      jmp disp0
disp3:
      call sub3
      jmp disp0
disp4:
      call sub4
      jmp disp0

exit:
      mov ah,4ch
      int 21h

sub1  proc near
      jmp sub1_disp
      file db 10,13,'   --new, open, save, print files.---','$',10,13
sub1_disp:
      lea dx,file
      mov ah,9
      int 21h     ;调用21h中断的第9号功能,显示以'$'结束的字符串
      ret
sub1  endp

sub2  proc near
      jmp sub2_disp
      edit db 10,13,'   --copy, cut, paste the text.---','$',10,13
sub2_disp:
      lea dx,edit
      mov ah,9
      int 21h     ;调用21h中断的第9号功能,显示以'$'结束的字符串
      ret
sub2  endp

sub3  proc near
      jmp sub3_disp
      compile db 10,13,'   --compile the source file, then get target file.---','$',10,13
sub3_disp:
      lea dx,compile
      mov ah,9
      int 21h     ;调用21h中断的第9号功能,显示以'$'结束的字符串
      ret
sub3  endp

sub4  proc near
      jmp sub4_disp
      run db 10,13,'   --run, run, run, cannot stop.---','$',10,13
sub4_disp:
      lea dx,run
      mov ah,9
      int 21h     ;调用21h中断的第9号功能,显示以'$'结束的字符串
      ret
sub4  endp
code  ends
      end start

参考解答

任务2-输数字,出字母
提示:请利用手册工作
输入1-9的数字,以其作为序号,输出对应的字母。例如,输入1,输出a;输入4,输出d
注意要在程序中加入必要的注释。

assume cs:code
code  segment
   string db 'abcdefghij'
start:

    mov ah,4ch
    int 21h
code ends
     end start

参考解答

任务3-用中断输入并显示
利用dos系统功能调用,将键盘输入的小写字母转换成大写字母后输出显示,输入非小写字母时,什么也不显示,等待其他输入;输入‘$’字符时结束。
注意要在程序中加入必要的注释。

assume  cs:code
code  segment
begin: 


stop:  mov ax, 4c00h
       int 21h
code  ends
      end begin

参考解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值