TRAP程序和子程序

LC-3 TRAP程序

由于像硬件I/O操作过于底层,如果直接让用户程序员去自己处理,有两个问题,1门槛过高,如程序要从键盘读取输入,则需要了解详细的硬件底层I/O操作。2如果赋予用户程序员硬件寄存器的读写权限,会造成很多复杂问题,硬件的设备寄存器通常由很多程序共享,如果出现误操作,则会影响其他用户程序的正常执行。所以设备寄存器是有权限的,只能被具有合适权限的程序访问。

为了解决这个问题,我们可以借助于TRAP程序和操作系统(即拥有特权的程序)。

对于特定应用,我们可以通过TRAP指令调用操作系统来帮助完成,通过这种方式,用户程序员不需了解底层细节,也不会出现误处理影响其他用户程序。

 

TRAP机制:

服务程序集合:由操作系统提供,以用户身份执行(即提供的服务集合)

起始地址表(陷入矢量表):服务程序的起始地址。

TRAP指令:用户程序希望操作系统执行特定服务程序,执行完毕后将控制权返回,则可以使用TRAP指令。

链接:通过链接回到用户程序。

 

TRAP指令:

执行服务程序前,需要完成两件事情,

根据陷入矢量表项的内容,将PC值修改为对应的服务程序起始地址。同时提供一种机制,能在服务程序结束后回到用户程序(即保存用户程序调用服务程序后的下一条指令PC值)。

TRAP执行的的4个步骤:

将8bit陷入矢量扩展为16bit,装入MAR。

陷入矢量表对应的内容被读入MDR。

将当期PC值

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值