登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: LC-3 汇编语言 指令集[zt]     [回主站]     [分站链接]
LC-3 汇编语言 指令集[zt]
clq
浏览(182) - 2023-04-10 20:59:47 发表 编辑

关键字:


https://blog.csdn.net/weixin_62264287/article/details/124778312

----------------------------------------------------------------

LC-3 汇编语言 指令集
叶初凝
已于 2023-01-11 10:23:21 修改 6811
收藏 105
分类专栏: LC-3 汇编语言 计算机系统1 文章标签: 开发语言 青少年编程
版权
LC-3 同时被 3 个专栏收录
7 篇文章 3 订阅
订阅专栏
汇编语言
1 篇文章 0 订阅
订阅专栏
计算机系统1
7 篇文章 2 订阅
订阅专栏

目录

碎碎念念

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。


总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
lc3虚拟机 更多
汇编 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1