目录

  • 前言
  • LC-3汇编
    • 汇编语法
    • 伪操作
    • TRAP指令
  • 输入与输出
    • 输入输出寄存器
    • 输入获取机制
    • 输出机制
  • 汇编过程

前言

LC-3汇编

这一章节主要介绍LC-3的汇编语言,汇编语言可以提供一些便利的操作,更重要的是,用符号替代01,程序可读性提高。

汇编器:汇编器是将符号语言翻译为01的程序。除此之外,还提额外的操作支持(指库代码),可以实现数据的分配,初始化等等常见操作。

汇编语法

一条汇编语句包含以下几个部分:

  1. 标号:表示当前语句的内存地址,汇编器会直接将其翻译为地址。
  2. 操作:表示当前执行的操作,比如ADD
  3. 操作数:一般由寄存器表示,表示操作数存放在哪个寄存器中


值得注意的是,标号可以直接被汇编指令用作操作数,比如下面的 BRp LOOP LOOP是一个地址,可以直接被作为操作数。不用再手动计算PC+偏移的偏移了,非常方便。

伪操作

除了标号之外,汇编LC-3还提供了一些伪操作,这些操作其实是预制的汇编代码,相当于库函数,可以实现一些常用的繁琐操作。

伪操作以 . 字符开头。和指令一样,伪操作也有对应的操作数,下面给出伪操作的信息

伪操作 操作数 解释
.ORIG 地址 指定程序起始地址 (一般是x3000)
.END 告诉编译器程序在此结束 但不是停止程序的意思
.BLKW 数字n 分配n个的内存单元空间 首地址是该行地址
.FILL 数字n 分配一个内存单元的空间 并且赋值为n
.STRINGZ 字符串 该地址作为字符串首地址 往后填充 末尾自动填充\0

TRAP指令

TRAP指令可以触发中断。进入到指定的中断程序。比如 TRAP x23 就是读取输入一个字符。其中x23地址处存储的是中断服务函数的入口地址。(这个是指针寻址)

下面给出所有的TRAP操作

符号 实际操作 解释
GETC TRAP x20 阻塞程序并等待键盘输入一个字符(无回显)到R0寄存器 (存ASCII码)
OUT TRAP x21 输出一个R0中的ASCII码代表的字符
PUTS TRAP x22 输出R0中地址为起始的字符串,直到遇见\0
IN TRAP x23 输出提升,阻塞程序并等待键盘输入一个字符(有回显)到R0寄存器 (存ASCII码)
HALT TRAP x25 终止程序

输入与输出

上面讲到方便的输入输出指令,可是他们是怎么实现的呢?本章就讲述LC-3的输入

输入输出寄存器

LC-3中,使用4个寄存器来和外界输入输出设备进行交互,他们分别是:

名称 地址 解释
KBSR 0xFE00 键盘状态寄存器:第15位为1则表示接收到新输入
KBDR 0xFE02 键盘数据寄存器:低八位保存键盘输入字符ASCII码
DSR 0xFE04 显示状态寄存器:第15位为1表示可以向显示器输出数据
DDR 0xFE06 显示数据寄存器:低八位的ASCII码写到屏幕上

输入获取机制

输入获取建立在对KBSR的存取上。硬件电路的操作分为三个步骤:

  1. 按下键盘,硬件电路将ASCII码放置到KBDR低8位
  2. 硬件电路将KBSR最高位置1,表示收到新输入
  3. 键盘被禁用

值得注意的是,使用轮询的方式来向KBSR查询是否有新输入,下面给出输入获取的软件轮询机制:

除此之外,如果要判断一个指向KBDR的数据存取,其数据是否来自键盘,我们可以查询KBSR的第15位,如果为1表示键盘接收到新输入,那么存取KBDR是好的,如果为0表示未有输入,那么此时KBDR的值是无效的。

下面是 LC-3 模拟器 TRAP x20 (读取一个字符)所调用的服务程序的源码:

输出机制

输出和输入类似,建立在对状态寄存器的读写上。当显示器准备就绪时,硬件电路将DSR第15位置1。

向显示器写数据,同样使用轮询机制,下面给出软件操作:

  1. 轮询DSR第15位是否为1,为1表示显示设备可用
  2. 将DDR低8位的数据输出,期间任何写入DDR的字符将被忽略


下面是 LC-3 模拟器中 TRAP x21 (即输出一个字符)调用的服务程序的源码:

汇编过程

这个感觉和c的有点像(计系2老师听了吐血 )

  1. 第一次扫描建立符号表
  2. 第二次扫描利用符号表的信息,生成对应的汇编代码

值得注意的是,有些比较离谱的操作会报错。比如 pc+offset 的寻址只有 9 位立即数,范围为 -128~127,如果寻址的范围超过,那么会报错。除此之外,标号的寻址和上述 pc+偏移 的情况相同。

计算机系统(一)期末复(yu)习(3):LC-3汇编,输入与输出相关推荐

  1. 计算机系统-电路设计10-寄存器的内部电路实现(输入与输出不同线)

    高丽洁的身材是真好 在之前介绍过上升沿D触发器,本文将D触发器进行稍微改造,则就会创造一个寄存器,图1中,将三个上升沿D触发器相连接,图1中开关是断开的,所以CP=0,三个输出均维持原来的值,无论输入 ...

  2. 2013计算机系统导论,【精选】2013计算机系统导论-期末考卷-发布.pdf

    [精选]2013计算机系统导论-期末考卷-发布 北京大学信息科学技术学院考试试卷 考试科目: 计算机系统导论 姓名: 学号: 考试时间: 2014 年 1 月 7 日任课教师: 题号 一 二 三 四 ...

  3. “深入理解计算机系统”小组学习的Task01-学习日志

    文章目录 前言 一.编译系统 1.工作流程 2.流程步骤定义 二.硬件架构 1.硬件架构组成 1.1硬件架构图 1.2.CPU 架构 1.2.1.CPU 定义 1.2.2.CPU内部结构 1.3.内存 ...

  4. (c语言)用链栈表的方式实现输入abcde,输出edcba操作——期末数据结构程序设计

    用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计 文章目录 用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计 1.链栈的定义 2.链栈的初始化 3. ...

  5. 在配有通道的计算机系统中,用户程序需要输出时,引起的中断是,在配有通道的计算机系统中,用户程序需要输入/输出时,引起的中断是()。A.访管中断B.I/O中断C....

    在配有通道的计算机系统中,用户程序需要输入/输出时,引起的中断是().A.访管中断B.I/O中断C. 更多相关问题 [判断题] "十不吊"是吊装作业必须遵循的原则. [单选] 关于 ...

  6. 计算机系统(一)期末复(yu)习(1):数据表示以及数字逻辑(电路)

    目录 前言 数据表示 整数 小数 数字逻辑 MOS晶体管之PN结 逻辑门与摩根定律 非 或非/或门 与非/与门 摩根定律 真值演算 组合逻辑电路 译码器 多路复用器 加法器 存储 RS锁存器 门控D锁 ...

  7. 计算机系统安全期末复习

    信息系统安全与技术 [第一章]信息安全概述 根据信息流动过程划分的安全威胁(P13):中断威胁.截获威胁.篡改威胁.伪造威胁. CIA安全需求模型:保密性(Confidentiality).完整性(I ...

  8. 计算机系统基础期末复习--袁春风详细版

    计算机系统与基础 1.1.1 C语言程序举例 用"系统思维"分析问题 -2147483648<2147483647 (false)与事实不符?!why? 以下表达式如何呢? ...

  9. 吉林大学软件学院编译原理与实现习题(二) 期末复习用

    一.单选题 1.不是DFA的构成成分的是: A.有穷字母表 B.初始状态集合 C.终止状态集合 D.有限状态集合 正确答案: B 根据DFA的定义可知,DFA只能有唯一确定的起始状态. 2.下面关于D ...

最新文章

  1. 协防差_西班牙男篮的投篮比美国还差 为什么在2019年世界杯夺冠
  2. 位映射--解决大数据排序与排重问题
  3. charles抓取iphone https包报错:SSLHandshake: Remote host closed connection during handshake
  4. [项目管理]团队管理中的起点:尊重
  5. 【网络流24题】餐巾计划问题(最小费用最大流)
  6. Java 中的接口有什么作用?为什么不直接用类?
  7. 第九篇 IO流技术(九)
  8. java poi excel 图表_【JAVA】POI生成EXCEL图表(柱状图、折线等)
  9. python 读文件夹下面所有csv格式文件
  10. bzoj3265 志愿者招募加强版
  11. 海子 java,我把海子读给你听(二)
  12. vbs可以调用python脚本吗?
  13. Prim算法(JAVA实现-邻接矩阵)
  14. 【C++】结构体嵌套结构体
  15. MAC install torch
  16. nginx访问服务器未响应,nginx与后端的超时设置测试
  17. 如何做红烧肉好吃又不腻 教你做红烧肉
  18. 海思调试串口增加登录密码
  19. 【工控老马】西门子PLC s7-300SCL编程详解
  20. redis配置文件使用相对路径

热门文章

  1. Android壁纸之静态壁纸
  2. 123457123456#0#-----com.cym.shuXue02--前拼后广--开心学数学
  3. Windows自带安卓模拟器;安装使用Hyper-V;好用的安卓模拟器;亚马逊应用商店;WSA;适用于Android的Windows系统;在Windows上安装apk;apk转exe;BIOS错误……
  4. JAV----------数组操作
  5. ENVI系列--遥感影像UTM投影计算公式
  6. 坚果云网盘教你拥有这5个习惯 升职加薪不是梦
  7. 独家 | 机器学习解释模型:黑盒VS白盒(附资料链接)
  8. 常见乱码产生原因以及锟斤拷的产生过程
  9. 大学生生活中的三大痛点
  10. win系统的VBS脚本简易教程