Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory e-LMC扩展小人机气泡嵌入式程序连续输入_Memory_Bubble Sort_Continuous_Little Man Computer - Fatal编程技术网

Memory e-LMC扩展小人机气泡嵌入式程序连续输入

Memory e-LMC扩展小人机气泡嵌入式程序连续输入,memory,bubble-sort,continuous,little-man-computer,Memory,Bubble Sort,Continuous,Little Man Computer,我正在寻找一个e-LMC扩展小人计算机程序,将接受不确定的输入和气泡排序他们。我需要有更多的连续输入,然后进行冒泡排序 INP //read 1st value STA 0 // for store INP // read 2nd value STA 1 // store INP // read 3rd value STA 2 // store LDA 1 // LOOP 1, STEP 1: SUB 0 // BRP STEP2 // if R0 and R1 are in or

我正在寻找一个e-LMC扩展小人计算机程序,将接受不确定的输入和气泡排序他们。我需要有更多的连续输入,然后进行冒泡排序

INP //read 1st value
STA 0 // for store
INP // read 2nd value
   STA 1 // store
INP // read 3rd value
STA 2 // store
LDA 1 // LOOP 1, STEP 1:
    SUB 0 //
BRP STEP2 // if R0 and R1 are in order, don't swap them
LDA 1 // Begin swapping registers
STA 3   
LDA 0
STA 1 // R1 = R0
LDA 3
STA 0 //R0 = temp
STEP2 LDA 2 // LOOP 1, STEP 2
SUB 1
BRP STEP3 // If R1 and R2 are in order, don't swap them
LDA 2 // Begin swapping registers
STA 3 // temp =R2
LDA 1
STA 2 //R2=R1
   LDA 3
STA 1 // R1 = temp
STEP3 LDA 1 // LOOP 2, STEP 1
SUB 0
BRP STEP4 // if R0 andR1 are in order, don't swap them
LDA 1 // Begin swapping registers
STA 3 // temp = R1
LDA 0
STA 1 //R1=R0
LDA 3
STO 0 // R0 = temp

STEP4 LDA 0
OUT
   LDA 1
   OUT
LDA 2
OUT
   HLT

由于我不熟悉e-LMC,我在这里提供了一个纯LMC实现。当然,缺点是LMC的空间有限。由于以下代码占用62个邮箱(不包括输入数组),因此最多可以输入38个值(未验证)

我选择用一个终止的0值标记输入的结尾,即要排序的值不能包括0

正如您在注释中已经指出的,此解决方案严重依赖于自修改代码。所有标有
get***
set***
cmp***
的指令都会动态更改,以指向数组中的正确元素

您可以在此代码段中运行此代码(它将加载模拟器):

#输入:5 2 4 1 3 0
LDA setfirst
STA setcurr1
输入INP
setcurr1 STA阵列
BRZ是空的
LDA设置电流1
加一
STA setcurr1
胸罩输入
等空LDA阵列
BRZ零;空数组
首先对LDA进行排序;初始“当前”索引
STA getcurr1
STA getcurr2
LDA setfirst
STA setcurr2
LDA cmpfirst
STA cmpcurr
统计分类;布尔:假设是这样
循环LDA getcurr1;设置“下一步”索引
加一
STA getnext1
STA getnext2
LDA设置电流2
加一
斯塔赛特下一站
getnext1 LDA阵列
BRZ检查;数组末尾
cmpcurr子阵列
BRP公司;不需要交换
getcurr1 LDA阵列;交换
临时工
getnext2 LDA阵列
setcurr2 STA阵列
LDA温度
setnext STA阵列
LDA零点
统计分类;还没有分类
公司LDA getnext1;增量“cur”指数
STA getcurr1
赛特奈特酒店
STA setcurr2
LDA cmpcurr
加一
STA cmpcurr
文胸环
检查LDA是否已排序
BRZ排序
getcurr2 LDA阵列
BRZ零;全部完成
出来
LDA getcurr2
加一
STA getcurr2
文胸2
; 常数:
零HLT
一个DAT 1
getfirst LDA数组
setfirst STA阵列
cmpfirst子阵列
; 变量:
issorted DAT;布尔值
温度数据;交换
阵列数据;数组的开始

您能指出“e-LMC”的语言规范吗?它有一个较大的内存地址(0-999)、通用寄存器(R4到R7)、常量寄存器(R0=0、R1=1、R2=2、R3=999)、内存映射IO内存地址990-999,为IO保留。指令集:与LMC相同,但有用于乘法的MUL、用于除法的DIV、MOV(RN