资讯详情

LC-3汇编语言求成绩等级

题目描述

16名学生的成绩排名和统计分析。

A:全班排名前25%,85分以上。

B:非A成绩,全班前50%,75分以上。

C:非A、B成绩。

使用LC-3汇编语言,编写程序以实现上述功能。

16名学生的成绩存储在x3200至x320F。

由16比特无符号整数表示,每个分数在0到100之间。

成绩降序排序,并存储在x4000至x400F内存位置,x最高分数为4000位。

得A、B学生总数分别存储在成绩中x4100,及x4101位置。

思路分析

R存储原始数据的第一个地址x3200,R存储排序后数据存储的第一个地址x4000,R2的值为循环次数16,内存采用基址加偏移的寻址方式读取,R3作为中间搬运工,使用LDR和STR指令首先移动数据。

现在数据已经转移到了x4000~x400F,开始排序。

普通泡沫排序需要内外循环,外循环n-1次,内循环n-因此,我们让一次R0和R1的值为15,读取内存时仍采用基址加偏移的寻址方式,R存储数据存储地址x4000,R读取前一个数,R4读取后一个数,然后需要比较大小。R3取反加1存储R5,然后将R5和R存储相加结果R5,通过判断R正负判断R3和R如果R3小于R4,即R5是正数,然后交换这两个数,使用STR指令将R将3的值存储到后一个地址单元,并将其存储到后一个地址单元R4的值存储到前一个地址单元。

读取数据采用基址加偏移的寻址方式,R0存储首地址x4000,R1和R用于存储A和B的人数,R存储循环次数为16,R4存储每一个数据,R作为中间载体,存储数据取反加一的值,R6和R7存储着A和B85和75的临界分数同时承担存储和R5相加数据用于比较结果。最后将R1和R2的值分别存进地址为x4100和x内存单元4101。

AC代码

 .ORIG X3000    LD R0,DATA  LD R1,COPY  LD R2,COUNTER LOOP1 BRZ NEXT1  LDR R3,R0,#0  ADD R0,R0,#1  STR R3,R1,#0  ADD R1,R1,#1  ADD R2,R2,#-1  BRNZP LOOP1   NEXT1 LD R1,BUBBLE LOOP2 BRZ NEXT2  LD R0,COPY  LD R2,BUBBLE LOOP3 BRZ AGAIN  LDR R3,R0,#0  ADD R0,R0,#1  LDR R4,R0,#0  NOT R5,R3  ADD R5,R5,#1  ADD R5,R5,R4  BRNZ RIGHT  STR R3,R0,#0  ADD R0,R0,#-1  STR R4,R0,#0  ADD R0,R0,#1 RIGHT ADD R2,R2,#-1  BRNZP LOOP3 AGAIN ADD R1,R1,#-1  BRNZP LOOP2   NEXT2 LD R0,COPY  AND R1,R1,#0  AND R2,R2,#0  LD R3,COUNTER LOOP4 BRZ FINISH  LDR R4,R0,#0  LD R6,A  LD R7,B  NOT R4,R4  ADD R4,R4,#1  ADD R6,R6,R4  BRP BB  NOT R5,R0  ADD R5,R5,#1  LD R6,AHOLD  ADD R6,R6,R5  BRN BB  ADD R1,R1,#1  BRNZP TAIL BB ADD R7,R7,R4  BRP TAIL  LD R7,BHOLD  ADD R7,R7,R5  BRN TAIL  ADD R2,R2,#1 TAIL ADD R0,R0,#1  ADD R3,R3,#-1  BRNZP LOOP4   FINISH STI R1,ANUM  STI R2,BNUM    HALT   DATA .FILL X3200 COPY .FILL X4000 COUNTER .FILL X0010 ANUM .FILL X4100 BNUM  .FILL X4101 AHOLD .FILL X4003 BHOLD .FILL X4007 A .FILL #85 B .FILL #75 BUBBLE .FILL #15    .END

标签: 3x400高压电缆电容值

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司