计算机系统(一)期末复(yu)习(3):LC-3汇编,输入与输出
目录
- 前言
- LC-3汇编
- 汇编语法
- 伪操作
- TRAP指令
- 输入与输出
- 输入输出寄存器
- 输入获取机制
- 输出机制
- 汇编过程
前言
咕
LC-3汇编
这一章节主要介绍LC-3的汇编语言,汇编语言可以提供一些便利的操作,更重要的是,用符号替代01,程序可读性提高。
汇编器:汇编器是将符号语言翻译为01的程序。除此之外,还提额外的操作支持(指库代码),可以实现数据的分配,初始化等等常见操作。
汇编语法
一条汇编语句包含以下几个部分:
- 标号:表示当前语句的内存地址,汇编器会直接将其翻译为地址。
- 操作:表示当前执行的操作,比如ADD
- 操作数:一般由寄存器表示,表示操作数存放在哪个寄存器中
值得注意的是,标号可以直接被汇编指令用作操作数,比如下面的 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的存取上。硬件电路的操作分为三个步骤:
- 按下键盘,硬件电路将ASCII码放置到KBDR低8位
- 硬件电路将KBSR最高位置1,表示收到新输入
- 键盘被禁用
值得注意的是,使用轮询的方式来向KBSR查询是否有新输入,下面给出输入获取的软件轮询机制:
除此之外,如果要判断一个指向KBDR的数据存取,其数据是否来自键盘,我们可以查询KBSR的第15位,如果为1表示键盘接收到新输入,那么存取KBDR是好的,如果为0表示未有输入,那么此时KBDR的值是无效的。
下面是 LC-3 模拟器 TRAP x20 (读取一个字符)所调用的服务程序的源码:
输出机制
输出和输入类似,建立在对状态寄存器的读写上。当显示器准备就绪时,硬件电路将DSR第15位置1。
向显示器写数据,同样使用轮询机制,下面给出软件操作:
- 轮询DSR第15位是否为1,为1表示显示设备可用
- 将DDR低8位的数据输出,期间任何写入DDR的字符将被忽略
下面是 LC-3 模拟器中 TRAP x21 (即输出一个字符)调用的服务程序的源码:
汇编过程
这个感觉和c的有点像(计系2老师听了吐血 )
- 第一次扫描建立符号表
- 第二次扫描利用符号表的信息,生成对应的汇编代码
值得注意的是,有些比较离谱的操作会报错。比如 pc+offset 的寻址只有 9 位立即数,范围为 -128~127,如果寻址的范围超过,那么会报错。除此之外,标号的寻址和上述 pc+偏移 的情况相同。
计算机系统(一)期末复(yu)习(3):LC-3汇编,输入与输出相关推荐
- 计算机系统-电路设计10-寄存器的内部电路实现(输入与输出不同线)
高丽洁的身材是真好 在之前介绍过上升沿D触发器,本文将D触发器进行稍微改造,则就会创造一个寄存器,图1中,将三个上升沿D触发器相连接,图1中开关是断开的,所以CP=0,三个输出均维持原来的值,无论输入 ...
- 2013计算机系统导论,【精选】2013计算机系统导论-期末考卷-发布.pdf
[精选]2013计算机系统导论-期末考卷-发布 北京大学信息科学技术学院考试试卷 考试科目: 计算机系统导论 姓名: 学号: 考试时间: 2014 年 1 月 7 日任课教师: 题号 一 二 三 四 ...
- “深入理解计算机系统”小组学习的Task01-学习日志
文章目录 前言 一.编译系统 1.工作流程 2.流程步骤定义 二.硬件架构 1.硬件架构组成 1.1硬件架构图 1.2.CPU 架构 1.2.1.CPU 定义 1.2.2.CPU内部结构 1.3.内存 ...
- (c语言)用链栈表的方式实现输入abcde,输出edcba操作——期末数据结构程序设计
用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计 文章目录 用链栈表的方式实现输入abcde,输出edcba操作,期末数据结构程序设计 1.链栈的定义 2.链栈的初始化 3. ...
- 在配有通道的计算机系统中,用户程序需要输出时,引起的中断是,在配有通道的计算机系统中,用户程序需要输入/输出时,引起的中断是()。A.访管中断B.I/O中断C....
在配有通道的计算机系统中,用户程序需要输入/输出时,引起的中断是().A.访管中断B.I/O中断C. 更多相关问题 [判断题] "十不吊"是吊装作业必须遵循的原则. [单选] 关于 ...
- 计算机系统(一)期末复(yu)习(1):数据表示以及数字逻辑(电路)
目录 前言 数据表示 整数 小数 数字逻辑 MOS晶体管之PN结 逻辑门与摩根定律 非 或非/或门 与非/与门 摩根定律 真值演算 组合逻辑电路 译码器 多路复用器 加法器 存储 RS锁存器 门控D锁 ...
- 计算机系统安全期末复习
信息系统安全与技术 [第一章]信息安全概述 根据信息流动过程划分的安全威胁(P13):中断威胁.截获威胁.篡改威胁.伪造威胁. CIA安全需求模型:保密性(Confidentiality).完整性(I ...
- 计算机系统基础期末复习--袁春风详细版
计算机系统与基础 1.1.1 C语言程序举例 用"系统思维"分析问题 -2147483648<2147483647 (false)与事实不符?!why? 以下表达式如何呢? ...
- 吉林大学软件学院编译原理与实现习题(二) 期末复习用
一.单选题 1.不是DFA的构成成分的是: A.有穷字母表 B.初始状态集合 C.终止状态集合 D.有限状态集合 正确答案: B 根据DFA的定义可知,DFA只能有唯一确定的起始状态. 2.下面关于D ...
最新文章
- 协防差_西班牙男篮的投篮比美国还差 为什么在2019年世界杯夺冠
- 位映射--解决大数据排序与排重问题
- charles抓取iphone https包报错:SSLHandshake: Remote host closed connection during handshake
- [项目管理]团队管理中的起点:尊重
- 【网络流24题】餐巾计划问题(最小费用最大流)
- Java 中的接口有什么作用?为什么不直接用类?
- 第九篇 IO流技术(九)
- java poi excel 图表_【JAVA】POI生成EXCEL图表(柱状图、折线等)
- python 读文件夹下面所有csv格式文件
- bzoj3265 志愿者招募加强版
- 海子 java,我把海子读给你听(二)
- vbs可以调用python脚本吗?
- Prim算法(JAVA实现-邻接矩阵)
- 【C++】结构体嵌套结构体
- MAC install torch
- nginx访问服务器未响应,nginx与后端的超时设置测试
- 如何做红烧肉好吃又不腻 教你做红烧肉
- 海思调试串口增加登录密码
- 【工控老马】西门子PLC s7-300SCL编程详解
- redis配置文件使用相对路径
热门文章
- Android壁纸之静态壁纸
- 123457123456#0#-----com.cym.shuXue02--前拼后广--开心学数学
- Windows自带安卓模拟器;安装使用Hyper-V;好用的安卓模拟器;亚马逊应用商店;WSA;适用于Android的Windows系统;在Windows上安装apk;apk转exe;BIOS错误……
- JAV----------数组操作
- ENVI系列--遥感影像UTM投影计算公式
- 坚果云网盘教你拥有这5个习惯 升职加薪不是梦
- 独家 | 机器学习解释模型:黑盒VS白盒(附资料链接)
- 常见乱码产生原因以及锟斤拷的产生过程
- 大学生生活中的三大痛点
- win系统的VBS脚本简易教程