目录

碎碎念念

LC-3汇编语言

运算类指令

ADD (addition)

AND (Bit-wise logical AND)

NOT (Bit-wise complement)

数据搬移类指令

LD (load)

ST (store)

LDI (load indirect)

STI (store indirect)

LDR (load base+offset)

STR (store base+offset)

LEA (load effective address)

控制类指令

BR (conditional branch)

JMP (jump)

RET (return)

JSR (jump to subroutine)

JSRR

RTI (return from interrupt)

TRAP (system call)

伪操作

.ORIG

.FILL

.BLKW

.STRINGZ

.END

注释

DR

SR

BaseR

imm

LABEL

trapvect8

n z p


碎碎念念

我们在之前的文章中介绍了LC-3的指令构成还有一些注释含义,以及指令的具体讲解,这次我们说说LC-3的汇编语言,文章后面是注释。

LC-3汇编语言

运算类指令

ADD (addition)

寄存器寻址:

ADD DR,SR1,SR2

将SR1与SR2相加的结果放在DR中;

立即数寻址:

ADD DR,SR1,imm

将SR1与立即数imm相加的结果放在DR中。

AND (Bit-wise logical AND)

按位相与:

寄存器寻址:

AND DR,SR1,SR2

将SR1与SR2按位相与的结果放在DR中;

立即数寻址:

AND DR,SR1,imm

将SR1与立即数imm按位相与的结果放在DR中。

NOT (Bit-wise complement)

按位取反:

NOT DR,SR

将SR按位取反的结果放在DR。

数据搬移类指令

LD (load)

读取数据:

相对寻址(PC-relative):

LD DR,LABEL

将标号LABEL所指向的内容存进DR。

ST (store)

写入数据:

相对寻址(PC-relative):

ST SR,LABEL

将SR的内容存进标号LABEL所指向内存单元。

LDI (load indirect)

读取数据:

间接寻址(indirect):

LDI DR,LABEL

将标号LABEL所指向的内容作为地址,将此地址所指向的内容存进DR。

STI (store indirect)

写入数据:

间接寻址(indirect):

STI SR,LABEL

将标号LABEL所指向的内容作为地址,将SR的内容存进此地址所指向的内存单元。

LDR (load base+offset)

读取数据:

基址偏移寻址(base+offset):

LDR DR,BaseR,imm

立即数imm和BaseR的内容相加得到一个地址,将该地址指向的内容存进DR。

STR (store base+offset)

写入数据:

基址偏移寻址(base+offset):

STR SR,BaseR,imm

立即数imm和BaseR的内容相加得到一个地址,将SR的内容存进该地址指向的内存单元。

LEA (load effective address)

立即数寻址:

LEA DR,LABEL

将标号LABEL所指向的值作为地址存进DR。

控制类指令

BR (conditional branch)

条件跳转:

BRN LABEL

如果寄存器的值为负数, 则程序跳转到标号所指向处。

BRZ LABEL

如果寄存器的值为0, 则程序跳转到标号所指向处。

BRP LABEL

如果寄存器的值为正数, 则程序跳转到标号所指向处。

BRNZ LABEL

如果寄存器的值是负数或者是0,即不是正数, 则程序跳转到标号所指向处。

BRNP LABEL

如果寄存器的值为负数或正数,即不是0, 则程序跳转到标号所指向处。

BRZP LABEL

如果寄存器的值为0或者是正数,即不是负数, 则程序跳转到标号所指向处。

BRNZP LABEL

程序无条件跳转到标号所指向处。

BR LABEL

程序无条件跳转到标号所指向处。

JMP (jump)

无条件跳转:

JMP BaseR

程序无条件跳转到BaseR的内容所指定的地址处。

RET (return)

无条件跳转: 

RET

程序无条件跳转到R7的内容所指定的地址处,而R7的内容是指向子程序调用指令后的指令地址,实际上就是从子程序跳回来。

RET可以看作是JMP的一个特例。

JSR (jump to subroutine)

无条件跳转:

JSR LABEL

标号LABEL作为子程序的入口地址,程序进入子程序,增量PC保存在R7中(参见RET指令,用于从子程序跳回来)。

JSRR

无条件跳转:

JSRR BaseR

BaseR的内容作为子程序的入口地址,程序进入子程序,增量PC保存在R7中(参见RET指令,用于从子程序跳回来)。

RTI (return from interrupt)

RTI

如果当前处理器运行在特权模式,那么特权模式栈顶部两个单元的内容被弹出,分别赋值给PC和PSR。

如果当前处理器运行在用户模式,那么将引发“特权模式冲突”的异常。

TRAP (system call)

TRAP trapvector8

程序进入由trapvect8指定的系统调用的服务程序,增量PC保存在R7中,参见RET指令,用于从服务程序跳回来。

Trap服务程序

trapvector 汇编语言 功能
x20 GETC 从键盘读入一个字符。
x21 OUT 在屏幕上显示字符。
x22 PUTS 在屏幕上显示一个字符串,每个内存单元存放一个字符。
x23 IN 在屏幕上显示提示,读入一个字符,并在屏幕上显示该字符。
x24 PUTSP 在屏幕上显示一个字符串,每个内存单元存放两个字符。
x25 HALT 停止执行,并在屏幕上输出信息。

伪操作

.ORIG

.ORIG

告诉汇编器将程序放在内存的哪个位置。

.FILL

.FILL

占用一个地址,并往地址所指向的内存单元填充初始值。

.BLKW

.BLKW

占用连续的地址空间。

.STRINGZ

.STRINGZ

连续占用地址空间,并对其初始化,内存最后一个单元被置为x0000,类似C语言的/0。

.END

.END

源程序结束。

注释

DR

目的寄存器(destination register)。

SR

SR、SR1、SR2等等是指源寄存器(source register)。

BaseR

基址寄存器(Base Register),它和一个6-bit偏移相加产生Base+offset地址。

imm

立即数,# 表示十进制,X 表示十六进制,B 表示八进制。

LABEL

标号,指向内存单元的一个符号名,可以在程序中直接引用。

trapvect8

8-bit无符号整数,用于TRAP指令确定服务程序的入口地址,间接寻址模式,该地址的内存单元存放了服务程序的入口地址。

n z p

条件码,LC-3有三个位寄存器:N、Z和P,即负数(negative)、0(zero)和正数(positive),当任意寄存器被写入时,根据写入的是负数、0还是正数分别设置相应的条件码为1,其他为0。

LC-3 汇编语言 指令集相关推荐

  1. c51单片机汇编语言电梯,C51单片机汇编语言指令集.doc

    51汇编语言指令集 符号定义表 符号 含义 Rn R0-R7寄存器n=0-7 Direct 直接地址,内部数据区的地址RAM(00H-7FH) SFR(80H-FFH) B,ACC,PSW,IP,P3 ...

  2. 技术派-汇编语言指令集(intel X86系列)

    针对汇编语言指令集(intel X86系列8086/80186/80286/80386/80486) AAA - Ascii Adjust for Addition        AAD - Asci ...

  3. std在汇编语言是什么指令_汇编语言指令集

    数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换 ...

  4. std在汇编语言是什么指令_汇编语言的各种指令的用法

    展开全部 汇编语言指令集 汇编指令是汇编语言中使用的一些操作符(如62616964757a686964616fe58685e5aeb931333330363131mov,inc,loop)和助记符,还 ...

  5. TI DSP型号简述

    2019独角兽企业重金招聘Python工程师标准>>> TI 公司在1982年成功推出其第一代 DSP 芯片 TMS32010及其系列产品TMS32011.TMS320C10/C14 ...

  6. java性能权威指南中文_Java性能权威指南读书笔记--之一

    JIT(即时编译) 解释型代码:程序可移植,相同的代码在任何有适当解释器的机器上,都能运行,但是速度慢. 编译型代码:速度快,电视不同CPU平台的代码无法兼容. java则是使用java的编译器先将其 ...

  7. 操作系统系统调用_操作系统中的系统调用

    操作系统系统调用 系统调用简介 (Introduction to System calls) The interface between the operating system and the us ...

  8. 【计算机与UNIX汇编原理⑫】——汇编考前复习【重要知识点 + 基础题 + 易错题 + 难题解析】

    ✅ 本文主要是在汇编考试前的做的复习整理. 文章目录 第一章:微型计算机基础 第二章:80X86微处理器 第三章:汇编语言指令集 第四章:汇编语言程序设计 五.参考附录 EDG 加油!⌨️ 上一篇文章 ...

  9. 【微型计算机原理与接口技术】课程介绍

    微型计算机组成原理 课程内容介绍 第一章 微型计算机基础 第二章 80X80微型处理器 第三章 汇编语言指令集 第四章 汇编语言程序设计 第五章 输入/输出系统 第六章 中断系统 第七章 微型计算机系 ...

  10. 堆栈计算机的原理和实现

    堆栈计算机的原理和实现 原书< Stack Computers: the new wave > (原书封面) 原作者 Philip J. Koopman, Jr. 编译者 赵宇 张文翠 这 ...

最新文章

  1. struts 文件下载
  2. SQLServer常用的日期和时间函数梳理
  3. scrcpy投屏_安卓投屏利器——PC一键控制多台手机
  4. 怎么计算一组数据的波动_税控盘数据和小规模增值税申报表计算结果不一致怎么办...
  5. 基于高斯分布的异常检测算法 项目描述
  6. SEO:提高关键词排名的28个SEO技巧
  7. 完全背包问题python_令人头疼的背包九讲(2)完全背包问题
  8. C# 值类型与引用类型的异同
  9. LINUX SHELL脚本多行注释
  10. 设计模式之工厂模式类图
  11. 秒杀服务,秒杀系统设计与实现
  12. n1刷宝塔linux,斐讯天天链N1电视盒子折腾记录-安装宝塔面板当作家庭内网服务器...
  13. CSS Border(边框)
  14. 嵌入式linux 保存参数的方法
  15. 油/水溶性CdS-ZnS/InP-ZnS/ZnSe-ZnS/CdSe/ZnS量子点的应用
  16. Android聊天软件的开发(七)--聊天通信
  17. Windows 11 KB5011563正式推送,之前本人遇到的两个小问题总算解决了
  18. 基于jacoco插件,使用python脚本分析java项目测试覆盖率。
  19. BSA分析拟南芥F2代分离群体混池测序
  20. Mysql之mysqldump工具

热门文章

  1. JAVA超市综合管理信息区块链系统毕设论文
  2. 【Axure报错】-Unable to connect to Axure Share. Please make sure you have an internet connection and try
  3. 【算法/数论】欧拉筛法详解:过程详述、正确性证明、复杂度证明
  4. 金蝶K3老单据下推老单据并修改字段名(以销售订单下推销售出库单为例,后台操作部分)
  5. PDF怎么转换成PPT?用迅读PDF大师,轻松解决教案问题
  6. 小甲鱼 C语言 22课指针和数组
  7. (附源码)Springboot酒店预订管理系统 毕业设计 100908
  8. Spring Boot 开发微信公众号后台
  9. 11款免费而强大的PCB设计软件 还用什么AD PADS?
  10. springboot 使用mybatis与mybatis-generator与druid (gradle构建)