lc3计算机汇编程序报告

合集下载

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告在计算机科学中,汇编语言是一种底层的编程语言,直接使用计算机的指令集来写程序。

与高级语言(如C ++或Java)不同,汇编程序被编写为显式的机器代码,它们可以直接在计算机上执行。

在本次实验中,我们学习了汇编语言的基础知识,并设计了一个简单的程序来演示操作系统,此程序可以打印字符串、读入字符和执行其他一些简单的操作。

我们了解了汇编语言的基本概念,例如寄存器、指令和标志位。

寄存器是CPU内部的存储空间,可用于存储数据或执行算术操作。

指令是CPU执行的单个操作,例如将数据移动到寄存器中,从寄存器中加载数据,或将数据存储到内存中。

标志位是CPU中的一些标志,用于指示例如进位或溢出等特定条件的发生情况。

之后,我们学习了如何使用汇编语言来执行简单的操作。

我们使用了mov指令将数据移动到寄存器中,使用int指令调用中断,以及使用jmp指令跳转到不同的程序行。

我们设计了一个简单的操作系统,它通过汇编程序来控制计算机的操作。

该操作系统具有以下主要功能:1. 打印字符串。

我们使用了mov指令将字符串中的数据加载到寄存器中,并使用int 指令调用中断来打印字符串。

2. 读入字符。

我们使用了int指令调用中断来读取用户输入的字符,然后将其存储在寄存器或内存中。

3. 执行简单的操作。

我们使用了jmp指令和标志位来执行条件分支,或使用算术指令来进行加减等操作。

在实验中,我们还学习了如何在调试模式下运行程序,以及如何使用汇编编译器将汇编代码转换为机器代码。

我们还使用了调试器来跟踪程序运行时的寄存器和内存内容,以及使用断点来在程序执行时停止并检查状态。

本次实验使我们更深入地了解了汇编语言的工作原理,并学习了如何设计和实现简单的操作系统。

通过了解和理解汇编语言,我们的编程能力将得到提高,帮助我们更好地理解计算机的内部工作原理。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。

在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

以下是我们的实验报告。

正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。

微处理器使用的是PCB-512主板,而高级汇编语言是MASM。

2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。

我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。

3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。

(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。

(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。

(4)了解8086微处理器的结构和原理。

4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。

我们通过输入输出指令、存储指令等指令实现了这个程序的功能。

(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。

我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。

5. 实验结果在我们的实验中,我们成功完成了上述两个程序。

我们通过输入输出指令、存储指令等指令实现了这个程序的功能。

6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。

我们认为这个实验对我们今后的学习和工作都有很大的帮助。

结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

lc3计算机汇编程序报告

lc3计算机汇编程序报告

计算机学院软件工程专业计算机组织与结构实验报告1学生姓名:李荣学生班级:软件工程122002班学生学号: 2012200402092014年 5月 27日一、实验目的1. 掌握LC-3 指令集结构(ISA)。

2.学会使用LC-3Edit、Simulator软件工具。

3. 熟悉LC-3机器语言调试和运行的方法。

二、实验内容1. 实验环境Windows 7 x86、软件(LC-3 Edit、Simulator)2. 问题描述1)没有乘法指令的乘法。

编写一个程序使得R4跟R5中包含的两个正整数相乘,并且将其结果存到R2中。

2)一列数的求和。

编写一个程序将存储在从x3100开始的10个内存单元的数值加在一起,并将结果存放在R1中。

3)查看内存区域是否包含数字5。

编写一个程序来检查从x3100开始的10个内存单元中是否包含有数值5,如果有则设置R0 = 1,如果没有则设置R0 = 0。

4)查找字中的第一个1。

编写一个程序来检查一个内存单元的内容(即某个地址中存放的一个字),逐个bit的检查(从左至右)第一个出现“1”的bit位置,并将该bit在该字(word)中的位置保存在R1中。

三、分析与实现1.分析1)、没有乘法指令的乘法该程序是先通过AND指令将R2清零,再通过ADD指令将R2与R5相加的和存到R2中,此时R5减1(ADD指令),通过分支指令来判断R5是否大于0,如果是就跳转到x3201执行程序,以此循环执行,直到不满足条件执行下条指令,即停机指令。

2)、一列数的求和a.初始化。

先通过AND指令将累计和变量R1清零,再通过AND、ADD指令将R4初始化为10(相当于一个计数器),再通过LD指令将R2初始化为数据列的起始地址x3100。

b.循环体。

从x3004开始,每循环一次,就有一个数值被装入R3(通过LDR指令);随后通过ADD指令将R2增量(x3005),R3的内容被加入R1(x3006),R1即为运行和存放处,计数器R4减1;接着通过分支指令来判断R4是否为正,若为正就跳到x3004执行,开始下一轮循环。

汇编程序及接口技术实验报告

汇编程序及接口技术实验报告

汇编程序及接口技术实验报告
一、实验目的
本实验的主要目的是了解汇编语言程序的编写和调试方法,并掌握接口技术的应用。

二、实验内容
1.编写一个求给定数的阶乘的汇编程序。

2.利用串口实现汇编程序的输入输出。

三、实验步骤
1.阅读8086汇编语言的使用手册,了解汇编语言的基本语法和指令集。

2.编写一个求阶乘的汇编程序。

程序的基本思路是利用循环和累加的方法来实现阶乘的计算。

3.编写串口输入输出的汇编程序。

使用串口的输入输出功能,实现程序与外部设备的交互。

4.将阶乘程序与串口输入输出程序进行整合,测试程序的功能是否正常。

五、实验结果与分析
经过调试和测试,本实验成功实现了求阶乘的功能,并能通过串口与外部设备进行交互。

实验结果与预期一致。

六、实验总结
通过本次实验,我对汇编语言的编写和调试方法有了更深的了解。

同时,我们也学会了如何利用接口技术来实现程序与外部设备的交互。

这对我们以后的学习和工作都将有很大的帮助。

lc3汇编中.stringz的用法

lc3汇编中.stringz的用法

lc3汇编中.stringz的用法LC-3(Little Computer 3)是一种低级汇编语言,是为教育目的而开发的,其设计目标是教授机器级编程的基本概念。

在LC-3汇编语言中,使用.stringz伪操作指令可以定义并初始化一个以NULL结尾的字符串。

本文将从介绍LC-3汇编语言开始,逐步解释.stringz指令的用法和功能。

首先,我们来了解一下LC-3汇编语言。

LC-3是一种基于寄存器的计算机体系结构,具有16个通用寄存器(R0-R7)和特殊寄存器(PC、IR、CC、MAR、MDR等)。

它的指令集包括算术运算、数据传输、条件分支和循环等基本操作。

在LC-3汇编语言中,每条指令必须以分号开头,用于标识注释,而标号则用于表示程序中的跳转目标。

然后我们来讨论.stringz指令的用法。

.stringz是一个伪操作指令,用于定义并初始化一个以NULL结尾的字符串。

它的语法格式如下:assembly[label] .stringz "string"其中,label是一个可选的标号,用于表示字符串的地址。

.stringz指令紧跟着一个字符串,字符串必须用双引号括起来,并且以NULL字符(ASCII 码为0)结尾。

注意,字符串中可以包含任意字符,包括特殊字符和转义序列。

现在,我们通过一个简单的示例来演示.stringz指令的用法。

假设我们要定义一个字符串变量并初始化为"Hello World!",代码如下所示:assembly.orig x3000 ; 设置程序的起始地址start LEA R0, hello_string ; 将hello_string的地址加载到R0 TRAP x22 ; 调用TRAP向控制台输出字符串TRAP x25 ; TRAP x25用于退出程序hello_string .stringz "Hello World!" ; 定义并初始化一个字符串.end ; 结束程序在这个示例中,我们首先使用LEA(Load Effective Address)指令将hello_string的地址加载到寄存器R0中。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。

在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。

本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。

实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。

实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。

实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。

汇编语言使用助记符来代表机器指令,与机器指令一一对应。

了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。

2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。

例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。

3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。

为了解决这些问题,我学会了使用调试工具来定位错误。

通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。

4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。

通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。

实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。

汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。

通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。

总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。

通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。

这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。

汇编实验报告

汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入了解汇编语言的基本语法和编程结构,掌握汇编程序的编写、调试和运行过程,提高对计算机底层硬件的理解和操作能力。

二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与运算编写程序实现不同寄存器之间的数据传送。

进行简单的算术运算,如加法、减法、乘法和除法,并将结果存储在指定的寄存器或内存单元中。

2、逻辑运算与移位操作进行逻辑运算,包括与、或、非和异或操作。

实现移位操作,如左移和右移,并观察数据的变化。

3、分支与循环结构使用条件跳转指令实现分支结构,根据不同的条件执行不同的代码段。

运用循环指令实现循环操作,如计数循环和条件循环。

4、子程序调用编写子程序来完成特定的功能,如计算阶乘、查找最大值等。

在主程序中调用子程序,并传递参数和获取返回值。

四、实验步骤1、数据传送与运算打开 MASM 编程工具,新建一个汇编源文件。

使用 MOV 指令将数据从一个寄存器传送到另一个寄存器,例如:MOV AX, BX 。

进行加法运算,使用 ADD 指令,如:ADD AX, CX 。

进行减法运算,使用 SUB 指令,如:SUB DX, BX 。

乘法运算使用 MUL 指令,除法运算使用 DIV 指令,并将结果存储在合适的位置。

2、逻辑运算与移位操作在源文件中使用 AND 、OR 、NOT 和 XOR 指令进行逻辑运算,例如:AND AX, BX 。

对于移位操作,使用 SHL (左移)和 SHR (右移)指令,如:SHL AX, 2 表示将 AX 的值左移 2 位。

3、分支与循环结构使用 CMP 指令比较两个值,然后根据比较结果使用 JZ (等于零跳转)、JL (小于跳转)、JG (大于跳转)等条件跳转指令实现分支结构。

对于循环结构,使用 LOOP 指令实现计数循环,例如:MOV CX, 10 ;LABEL: ;LOOP LABEL 。

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验)汇编语言程序设计实验报告三(子程序设计实验)实验目的掌握主程序与子程序之间的调用关系及其调用方法。

掌握子程序调用过程中近程调用与远程调用的区别。

熟练掌握码型变换的程序。

实验内容从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制数,并在屏幕上显示。

要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。

数据可循环输入,遇‘00’结束。

实验准备预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。

熟悉键盘输入和字符显示的程序段的编制。

实验步骤编辑、汇编源程序,生成可执行文件。

执行程序,检查输入、输出结果,看是否正确。

如不正确,用DEBUG检查,修改源程序,再汇编、运行,直到程序正确为止。

用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆栈的变化情况。

实验报告要求分析近程调用和远程调用的主要区别。

用DEBUG命令观察执行过程有何不同。

分析实验结果及所遇到的问题的解决方法。

程序流程图开始TRAN程序标准序开始读入十进制数据放AX中AXAXAND0F0FH是00?YBLALN调用转换子程序结束AL左移3位回车、换行BL左移1位于ALAL+BL主程序流程图ALAL+AHRET转换子程序TRAN流程图程序清单STASEGMENTSTACK’STACK’DB100DUP(0)STAENDS GSAGSEGMENTPARA‘CODE’ASSUMECS:CSAG MAINPROCFARSTRAT:PUSHDSSUBAX,AXPUSHAXREV:MOVAH,1INT21HMOVBL,ALINT21HMOVAH,ALMOVAL,BLCMPAX,3030H JEENDTRAN CALLNEARPTRTRAN CALLFARPTRCON MOVAL,0DH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP JMPREV ENDTRAN:RET MAINENDP TRANPROCNEAR ANDAX,0F0FHMOVBL,ALMOVBL,ALMOVCL,3SHLAL,CLMOVCL,1SHLBL,CLADDAL,BLADDAL,AHRETTRANENDPCSAGENDS CSBGSEGMENTPARA’CODE’ASSUMECS:CSBG CONPROCFARPUSHAXMOVCL,4 SHRAL,CL ADDAL,30H CMPAL,39H JBECON2 ADDAL,7CON2:PUSHAX MOVAL,0DH CALLFARPTRDISP MOVAL,OAH CALLFARPTRDISP POPAX CALLFARPTRDISP POPAX ANDAL,0FHADDAL,30H CMPAL,39H JBECON1ADDAL,7CON1:CALLFARPTRDISP RETCONEDNP DISPPROCFAR PUSHBXMOVBX,0MOVAH,14INT10HPOPBXRETDISPENDPCSBGENDS ENDSTART。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机学院软件工程专业计算机组织与结构实验报告1学生姓名:李荣学生班级:软件工程122002班学生学号: 2012200402092014年 5月 27日一、实验目的1. 掌握LC-3 指令集结构(ISA)。

2.学会使用LC-3Edit、Simulator软件工具。

3. 熟悉LC-3机器语言调试和运行的方法。

二、实验内容1. 实验环境Windows 7 x86、软件(LC-3 Edit、Simulator)2. 问题描述1)没有乘法指令的乘法。

编写一个程序使得R4跟R5中包含的两个正整数相乘,并且将其结果存到R2中。

2)一列数的求和。

编写一个程序将存储在从x3100开始的10个内存单元的数值加在一起,并将结果存放在R1中。

3)查看内存区域是否包含数字5。

编写一个程序来检查从x3100开始的10个内存单元中是否包含有数值5,如果有则设置R0 = 1,如果没有则设置R0 = 0。

4)查找字中的第一个1。

编写一个程序来检查一个内存单元的内容(即某个地址中存放的一个字),逐个bit的检查(从左至右)第一个出现“1”的bit位置,并将该bit在该字(word)中的位置保存在R1中。

三、分析与实现1.分析1)、没有乘法指令的乘法该程序是先通过AND指令将R2清零,再通过ADD指令将R2与R5相加的和存到R2中,此时R5减1(ADD指令),通过分支指令来判断R5是否大于0,如果是就跳转到x3201执行程序,以此循环执行,直到不满足条件执行下条指令,即停机指令。

2)、一列数的求和a.初始化。

先通过AND指令将累计和变量R1清零,再通过AND、ADD指令将R4初始化为10(相当于一个计数器),再通过LD指令将R2初始化为数据列的起始地址x3100。

b.循环体。

从x3004开始,每循环一次,就有一个数值被装入R3(通过LDR指令);随后通过ADD指令将R2增量(x3005),R3的内容被加入R1(x3006),R1即为运行和存放处,计数器R4减1;接着通过分支指令来判断R4是否为正,若为正就跳到x3004执行,开始下一轮循环。

c.停机。

10次之后,R4的内容变为0,P位也相应为0,跳转不再发生,程序结束。

3)、查看内存区域是否包含数字5。

a.初始化。

x3000-x3005这六条指令,通过AND、ADD指令将R0、R1、R3分别初始化为1、-5、10。

b.位于x3006的指令初始化R4的内容为测试内存的起始地址x3100;位于x3007的指令将x3100的内容装入R2。

c.判断(x3008-x3009)。

判断R2的内容是否是5的方法,是价格R2和-5相加,如果结果为0就跳转到x300F,意味着发现了5的存在,此时R0的初始值为1。

d.准备下一轮测试。

位于x300A的指令增量R4,准备装入下一个被测试内容;x300B将R3减1,即还有多少数值未被测试;x300C借助R4做指针,真正装入下一个数值至R2;x300D则根据R3的内容是否为0,决定是否跳回x3008重新此过程。

若R3 = 0,则测试结束,所以同时还要设置R0 = 0(x300E),随后程序结束(x300F)。

4)、查找字中的第一个1。

a.初始化。

前两条指令将R1初始化,先AND(清零)后ADD,完成对R1赋值。

在此R1被初始化为15。

x3002通过LDI指令向R2装入x3100内存的内容。

b.第一次测试。

x3003测试的是该数值的最高位是否为1(等同于判断该数是否为负),如果是1则跳转至x3008,而此时R1 = 15,若是0则不跳转,R1减1,指向下一个被测试的bit位。

c.左移和第二次测试。

X3005让R2和自己相加,结果存回R2,等价于R2乘2,又等价于将R2的内容左移一位,这样bit[14]的内容也就被左移到了bit[15],使得条件跳转指令可以通过判断该数是否为负,来判断该位的内容。

然后,由x3006执行对bit[14]的内容判断。

而如果该位是1,则跳转至程序结束且R1 = 14,。

如果该位是0 ,则继续x3007的执行,x3007无条件的跳转至x3004,重复测试过程。

d.下一次测试。

循环体的工作就是每次完成一个bit 的测试,即R1减1,指向下一个被测试位,R2内容左移1位(x3005),然后测试新的bit[15]内容。

2.程序流程图开始R4 = 5,R5 = 7R2清零R2 = R2 + R4R5 = R5 - 1R5 > 0?结束NO YES开始给从x3100开始的10个内存单元赋值R1清零,R4清零R4 = R4 +10R2 <- x3100R4 > 0?结束NOR3 <- m[R2]R2 = R2 + 1R1 = R1 + R3R4 = R4 - 1YES图1.1 没有乘法指令的乘法流程图 图1.2一列数的和开始给从x3100开始的10个内存单元赋值R0清零R0 = R0 + 1R1清零,R3清零R2 = 0?结束NOR1 = R1 – 5R3 = R3 + 10R4 <- m[x300F]YES R2 <- m[R4 + 0]R2 = R2 + R1R4 = R4 + 1R3 = R3 - 1YESNOR3 > 0?图1.3 查看内存区域是否包含数字5程序流程图开始R1清零R1 = R1 + 15R2 <- m[m[x300A]]R1 = R1 -1R2 < 0?R1 < 0?R2 = R2 + R2 R2 < 0?结束YES YESYES NONONO图1.4查找字中的第一个1程序流程图3.运行步骤对于这四个程序,要先在LC-3 Edit上输入机器指令,然后再按按钮进行调试,以.bin格式来存储此程序,调试成功相应的会生成一个.obj格式的文件,接着再在LC-3 Simulator中打开.obj格式的文件,设置断点,通过“set value”给相应的寄存器或地址赋值,按按钮运行此程序。

四、实验结果1. 运行结果截图图4.1没有乘法指令的乘法图4.2一列数的求和图4.3.1 查看内存区域是否包含数字5(有5的情况)图4.3.2 查看内存区域是否包含数字5(没有5的情况)图4.4查找字中的第一个1五、心得体会通过再一次的重复该实验,我又一次熟悉了LC-3的运行环境,对于LC-3的操作也更加熟练了。

这次实验我最大的收获就是能够自己独立的来完成这四个小程序的调试,比起去年第一次做时更顺利。

不足的是,很多指令都还得翻书来查看它所要完成的操作,对于所学知识或者没有掌握扎实或者就是已经遗忘了,而求对课本还不够熟悉,所以通过这次实验我认识到课本是最重要的,要随时复习才能掌握的更好。

六、参考资料1. 《Guide to Using the Windows Version of the LC-3 Simulator andLC-3 Edit》。

2.《计算机系统概论·英文版·第二版》。

七、附录1.没有乘法指令的乘法0011001000000000 //起始地址为x32000101010010100000 //AND指令,将R2清零0001010010000100 //ADD指令,R2 <- R2 + R40001101101111111 //ADD指令,R5 <- R5 - 10000001111111101 //分支指令,判断R5是否是正,若为正跳到x3201执行下一轮循环1111000000100101 //TRAP指令,HALT2.一列数的求和0011000000000000 //起始地址为x30000101001001100000 //AND指令,将R1清零0101100100100000 //AND指令,将R4清零0001100100101010 //ADD指令,R4 <- R4 + 101110010011111100 //LEA指令,R2 <- x31000110011010000000 //LDR指令,将R2的内容装入R3中0001010010100001 //ADD指令,R2 <- R2 + 10001001001000011 //ADD指令,R1 <- R1 + R30001100100111111 //ADD指令,R4 <- R4 -10000001111111011 //分支指令,判断R4是否为正,若为正跳到x3004执行下一轮循环1111000000100101 //TRAP指令,HALT3.查看内存区域是否包含数字50011000000000000 //起始地址x30000101000000100000 //AND指令,将R0清零0001000000100001 //ADD指令,R0 <- R0 + 10101001001100000 //AND指令,将R1清零0001001001111011 //ADD指令,R1 <- R1 - 50101011011100000 //AND指令,将R3清零0001011011101010 //ADD指令,R3 <- R3 + 100010100000001000 //LD指令,R4 <- m[x300F]0110010100000000 //LDR指令,R2 <- m[R4 + 0]0001010010000001 //ADD指令,R2 <- R2 + R10000010000000100 //分支指令,判断R2是否为0,若为0跳到x300E执行执行下一轮循环0001100100100001 //ADD指令,R4 <- R4 + 10001011011111111 //ADD指令,R3 <- R3 - 10000001111111010 //分支指令,判断R3是否为正,若为正跳到x3007执行下一轮循环0101000000100000 //AND指令,将R0清零1111000000100101 //TRAP指令,HALT0011000100000000 //x31004.查找字中的第一个10011000000000000 //起始地址为x30000101001001100000 //AND指令,将R1清零0001001001101111 //ADD指令,R1 <- R1 + 151010010000000111 //LDI指令,R2 <- m[m[x300A]] 0000100000000101 //分支指令,判断R2是否为负,若为负跳到x3009执行下一轮循环0001001001111111 //ADD指令,R1 <- R1 - 1 0000100000000011 //分支指令,判断R1是否为负,若为负跳到x3009执行下一轮循环0001010010000010 //ADD指令,R2 <- R2 + R2 0000100000000001 //分支指令,判断R2是否为负,若为负跳到x3009执行下一轮循环0000111111111011 //分支指令,无条件跳转到x30041111000000100101 //TRAP指令,HALT0011000100000000 //x3100。

相关文档
最新文档