Simply display some empty.

This commit is contained in:
unlockable
2024-07-12 18:53:26 +08:00
parent 1e2af48a8c
commit 6fc70b789d
3 changed files with 543 additions and 0 deletions

View File

@@ -0,0 +1,213 @@
.text
#initialize $sp
lui $sp, 0x4000
addi $sp, $sp, 0x7ff
# load digit to mem
lui $s0, 0x4000
addi $s0, $s0, 0x20
#0
addi $s1, $zero, 0x3f
sw $s1, 0($s0)
#1
addi $s1, $zero, 0x6
sw $s1, 4($s0)
#2
addi $s1, $zero, 0x5b
sw $s1, 8($s0)
#3
addi $s1, $zero, 0x4f
sw $s1, 12($s0)
#4
addi $s1, $zero, 0x66
sw $s1, 16($s0)
#5
addi $s1, $zero, 0x6d
sw $s1, 20($s0)
#6
addi $s1, $zero, 0x7d
sw $s1, 24($s0)
#7
addi $s1, $zero, 0x7
sw $s1, 28($s0)
#8
addi $s1, $zero, 0x7f
sw $s1, 32($s0)
#9
addi $s1, $zero, 0x6f
sw $s1, 36($s0)
#A
addi $s1, $zero, 0x77
sw $s1, 40($s0)
#B
addi $s1, $zero, 0x7c
sw $s1, 44($s0)
#C
addi $s1, $zero, 0x58
sw $s1, 48($s0)
#D
addi $s1, $zero, 0x5e
sw $s1, 52($s0)
#E
addi $s1, $zero, 0x79
sw $s1, 56($s0)
#F
addi $s1, $zero, 0x71
sw $s1, 60($s0)
# save the numbers to be sorted
lui $s0, 0x4000
addi $s0, $s0, 0x60
addi $s1, $zero, 0x4b8d
sw $s1, 0($s0)
addi $s1, $zero, 0x2307
sw $s1, 4($s0)
addi $s1, $zero, 0xfae0
sw $s1, 8($s0)
addi $s1, $zero, 0x7815
sw $s1, 12($s0)
addi $s1, $zero, 0xc105
sw $s1, 16($s0)
addi $s1, $zero, 0x84f0
sw $s1, 20($s0)
addi $s1, $zero, 0xdb6
sw $s1, 24($s0)
addi $s1, $zero, 0xf21d
sw $s1, 28($s0)
addi $s1, $zero, 0xe97a
sw $s1, 32($s0)
addi $s1, $zero, 0xa3b6
sw $s1, 36($s0)
addi $s1, $zero, 0x8466
sw $s1, 40($s0)
addi $s1, $zero, 0x3a25
sw $s1, 44($s0)
addi $s1, $zero, 0x5df
sw $s1, 48($s0)
addi $s1, $zero, 0xd2de
sw $s1, 52($s0)
addi $s1, $zero, 0xba7a
sw $s1, 56($s0)
addi $s1, $zero, 0x7809
sw $s1, 60($s0)
addi $s1, $zero, 0xf6a8
sw $s1, 64($s0)
addi $s1, $zero, 0x361d
sw $s1, 68($s0)
addi $s1, $zero, 0x3adb
sw $s1, 72($s0)
addi $s1, $zero, 0x969a
sw $s1, 76($s0)
main:
addi $a0, $zero, 20
# jal insertion_sort
lui $s0, 0x4000
# s1 = 0x40000010
addi $s1, $s0, 0x10
# s0 = 0x40000060
addi $s0, $s0, 0x60
display_numbers_loop:
addi $s2, $zero, 0
addi $s3, $zero, 20
display_single_number:
sll $t0, $s2, 2
add $t0, $s0, $t0
lw $a0, 0($t0)
addi $a1, $s1, 0
jal display_number
addi $s2, $s2, 1
sub $t0, $s3, $s2
bgtz $t0, display_single_number
jal display_empty
j display_numbers_loop
# ------------------------------------------------------
# a0 is the number to be displayed, a1 is the bcd control addr
display_number:
addi $sp, $sp, -32
sw $ra, 4($sp)
sw $s0, 8($sp)
sw $s1, 12($sp)
sw $s2, 16($sp)
sw $s3, 20($sp)
sw $s4, 24($sp)
sw $s5, 28($sp)
sw $s6, 32($sp)
# s0 is the number to be displayed
addi $s0, $a0, 0
# s1 is the bcd_control addr
addi $s1, $a1, 0
# s2 is the base addr for display digit
lui $s2, 0x4000
addi $s2, $s2, 0x20
# s3 is the counter for a complete scan of 4 digit
# addi $s3, $zero, 0x17c4
addi $s3, $zero, 0xbe2
all_digit_scan_loop:
# s4 is the num being shifted gradually
addi $s4, $s0, 0
# s6 is the enable digit
addi $s6, $zero, 0x100
addi $s5, $zero, 4
single_digit_loop:
# get a digit
andi $t0, $s4, 0xf
# digit * 4 is the memory shift
sll $t0, $t0, 2
add $t0, $s2, $t0
lw $t0, 0($t0)
or $t0, $t0, $s6
sw $t0, 0($s1)
srl $s4, $s4, 4
sll $s6, $s6, 1
addi $t0, $zero, 0x400
wait_time_loop:
addi $t0, $t0, -1
bgtz $t0, wait_time_loop
addi $s5, $s5, -1
bgtz $s5, single_digit_loop
# end of single digit loop
# ** depends on the clock **
# four digit, 328.68us.
# 1s / 328.68us = 3042 = (be2)hex
addi $s3, $s3, -1
bgtz $s3, all_digit_scan_loop
lw $ra, 4($sp)
lw $s0, 8($sp)
lw $s1, 12($sp)
lw $s2, 16($sp)
lw $s3, 20($sp)
lw $s4, 24($sp)
lw $s5, 28($sp)
lw $s6, 32($sp)
addi $sp, $sp, 32
jr $ra
display_empty:
lui $t0, 0x4000
addi $t0, $t0, 0x10
sw $zero, 0($t0)
lui $t0, 0x100
display_empty_wait_loop:
addi $t0, $t0, -1
bgtz $t0, display_empty_wait_loop
jr $ra

View File

@@ -0,0 +1,165 @@
20'd0: instruction <= 32'h3c1d4000;
20'd1: instruction <= 32'h23bd07ff;
20'd2: instruction <= 32'h3c104000;
20'd3: instruction <= 32'h22100020;
20'd4: instruction <= 32'h2011003f;
20'd5: instruction <= 32'hae110000;
20'd6: instruction <= 32'h20110006;
20'd7: instruction <= 32'hae110004;
20'd8: instruction <= 32'h2011005b;
20'd9: instruction <= 32'hae110008;
20'd10: instruction <= 32'h2011004f;
20'd11: instruction <= 32'hae11000c;
20'd12: instruction <= 32'h20110066;
20'd13: instruction <= 32'hae110010;
20'd14: instruction <= 32'h2011006d;
20'd15: instruction <= 32'hae110014;
20'd16: instruction <= 32'h2011007d;
20'd17: instruction <= 32'hae110018;
20'd18: instruction <= 32'h20110007;
20'd19: instruction <= 32'hae11001c;
20'd20: instruction <= 32'h2011007f;
20'd21: instruction <= 32'hae110020;
20'd22: instruction <= 32'h2011006f;
20'd23: instruction <= 32'hae110024;
20'd24: instruction <= 32'h20110077;
20'd25: instruction <= 32'hae110028;
20'd26: instruction <= 32'h2011007c;
20'd27: instruction <= 32'hae11002c;
20'd28: instruction <= 32'h20110058;
20'd29: instruction <= 32'hae110030;
20'd30: instruction <= 32'h2011005e;
20'd31: instruction <= 32'hae110034;
20'd32: instruction <= 32'h20110079;
20'd33: instruction <= 32'hae110038;
20'd34: instruction <= 32'h20110071;
20'd35: instruction <= 32'hae11003c;
20'd36: instruction <= 32'h3c104000;
20'd37: instruction <= 32'h22100060;
20'd38: instruction <= 32'h20114b8d;
20'd39: instruction <= 32'hae110000;
20'd40: instruction <= 32'h20112307;
20'd41: instruction <= 32'hae110004;
20'd42: instruction <= 32'h3c010000;
20'd43: instruction <= 32'h3421fae0;
20'd44: instruction <= 32'h00018820;
20'd45: instruction <= 32'hae110008;
20'd46: instruction <= 32'h20117815;
20'd47: instruction <= 32'hae11000c;
20'd48: instruction <= 32'h3c010000;
20'd49: instruction <= 32'h3421c105;
20'd50: instruction <= 32'h00018820;
20'd51: instruction <= 32'hae110010;
20'd52: instruction <= 32'h3c010000;
20'd53: instruction <= 32'h342184f0;
20'd54: instruction <= 32'h00018820;
20'd55: instruction <= 32'hae110014;
20'd56: instruction <= 32'h20110db6;
20'd57: instruction <= 32'hae110018;
20'd58: instruction <= 32'h3c010000;
20'd59: instruction <= 32'h3421f21d;
20'd60: instruction <= 32'h00018820;
20'd61: instruction <= 32'hae11001c;
20'd62: instruction <= 32'h3c010000;
20'd63: instruction <= 32'h3421e97a;
20'd64: instruction <= 32'h00018820;
20'd65: instruction <= 32'hae110020;
20'd66: instruction <= 32'h3c010000;
20'd67: instruction <= 32'h3421a3b6;
20'd68: instruction <= 32'h00018820;
20'd69: instruction <= 32'hae110024;
20'd70: instruction <= 32'h3c010000;
20'd71: instruction <= 32'h34218466;
20'd72: instruction <= 32'h00018820;
20'd73: instruction <= 32'hae110028;
20'd74: instruction <= 32'h20113a25;
20'd75: instruction <= 32'hae11002c;
20'd76: instruction <= 32'h201105df;
20'd77: instruction <= 32'hae110030;
20'd78: instruction <= 32'h3c010000;
20'd79: instruction <= 32'h3421d2de;
20'd80: instruction <= 32'h00018820;
20'd81: instruction <= 32'hae110034;
20'd82: instruction <= 32'h3c010000;
20'd83: instruction <= 32'h3421ba7a;
20'd84: instruction <= 32'h00018820;
20'd85: instruction <= 32'hae110038;
20'd86: instruction <= 32'h20117809;
20'd87: instruction <= 32'hae11003c;
20'd88: instruction <= 32'h3c010000;
20'd89: instruction <= 32'h3421f6a8;
20'd90: instruction <= 32'h00018820;
20'd91: instruction <= 32'hae110040;
20'd92: instruction <= 32'h2011361d;
20'd93: instruction <= 32'hae110044;
20'd94: instruction <= 32'h20113adb;
20'd95: instruction <= 32'hae110048;
20'd96: instruction <= 32'h3c010000;
20'd97: instruction <= 32'h3421969a;
20'd98: instruction <= 32'h00018820;
20'd99: instruction <= 32'hae11004c;
20'd100: instruction <= 32'h20040014;
20'd101: instruction <= 32'h3c104000;
20'd102: instruction <= 32'h22110010;
20'd103: instruction <= 32'h22100060;
20'd104: instruction <= 32'h20120000;
20'd105: instruction <= 32'h20130014;
20'd106: instruction <= 32'h00124080;
20'd107: instruction <= 32'h02084020;
20'd108: instruction <= 32'h8d040000;
20'd109: instruction <= 32'h22250000;
20'd110: instruction <= 32'h0c000074;
20'd111: instruction <= 32'h22520001;
20'd112: instruction <= 32'h02724022;
20'd113: instruction <= 32'h1d00fff8;
20'd114: instruction <= 32'h0c00009e;
20'd115: instruction <= 32'h08000068;
20'd116: instruction <= 32'h23bdffe0;
20'd117: instruction <= 32'hafbf0004;
20'd118: instruction <= 32'hafb00008;
20'd119: instruction <= 32'hafb1000c;
20'd120: instruction <= 32'hafb20010;
20'd121: instruction <= 32'hafb30014;
20'd122: instruction <= 32'hafb40018;
20'd123: instruction <= 32'hafb5001c;
20'd124: instruction <= 32'hafb60020;
20'd125: instruction <= 32'h20900000;
20'd126: instruction <= 32'h20b10000;
20'd127: instruction <= 32'h3c124000;
20'd128: instruction <= 32'h22520020;
20'd129: instruction <= 32'h20130be2;
20'd130: instruction <= 32'h22140000;
20'd131: instruction <= 32'h20160100;
20'd132: instruction <= 32'h20150004;
20'd133: instruction <= 32'h3288000f;
20'd134: instruction <= 32'h00084080;
20'd135: instruction <= 32'h02484020;
20'd136: instruction <= 32'h8d080000;
20'd137: instruction <= 32'h01164025;
20'd138: instruction <= 32'hae280000;
20'd139: instruction <= 32'h0014a102;
20'd140: instruction <= 32'h0016b040;
20'd141: instruction <= 32'h20080400;
20'd142: instruction <= 32'h2108ffff;
20'd143: instruction <= 32'h1d00fffe;
20'd144: instruction <= 32'h22b5ffff;
20'd145: instruction <= 32'h1ea0fff3;
20'd146: instruction <= 32'h2273ffff;
20'd147: instruction <= 32'h1e60ffee;
20'd148: instruction <= 32'h8fbf0004;
20'd149: instruction <= 32'h8fb00008;
20'd150: instruction <= 32'h8fb1000c;
20'd151: instruction <= 32'h8fb20010;
20'd152: instruction <= 32'h8fb30014;
20'd153: instruction <= 32'h8fb40018;
20'd154: instruction <= 32'h8fb5001c;
20'd155: instruction <= 32'h8fb60020;
20'd156: instruction <= 32'h23bd0020;
20'd157: instruction <= 32'h03e00008;
20'd158: instruction <= 32'h3c084000;
20'd159: instruction <= 32'h21080010;
20'd160: instruction <= 32'had000000;
20'd161: instruction <= 32'h3c080100;
20'd162: instruction <= 32'h2108ffff;
20'd163: instruction <= 32'h1d00fffe;
20'd164: instruction <= 32'h03e00008;

View File

@@ -0,0 +1,165 @@
3c1d4000
23bd07ff
3c104000
22100020
2011003f
ae110000
20110006
ae110004
2011005b
ae110008
2011004f
ae11000c
20110066
ae110010
2011006d
ae110014
2011007d
ae110018
20110007
ae11001c
2011007f
ae110020
2011006f
ae110024
20110077
ae110028
2011007c
ae11002c
20110058
ae110030
2011005e
ae110034
20110079
ae110038
20110071
ae11003c
3c104000
22100060
20114b8d
ae110000
20112307
ae110004
3c010000
3421fae0
00018820
ae110008
20117815
ae11000c
3c010000
3421c105
00018820
ae110010
3c010000
342184f0
00018820
ae110014
20110db6
ae110018
3c010000
3421f21d
00018820
ae11001c
3c010000
3421e97a
00018820
ae110020
3c010000
3421a3b6
00018820
ae110024
3c010000
34218466
00018820
ae110028
20113a25
ae11002c
201105df
ae110030
3c010000
3421d2de
00018820
ae110034
3c010000
3421ba7a
00018820
ae110038
20117809
ae11003c
3c010000
3421f6a8
00018820
ae110040
2011361d
ae110044
20113adb
ae110048
3c010000
3421969a
00018820
ae11004c
20040014
3c104000
22110010
22100060
20120000
20130014
00124080
02084020
8d040000
22250000
0c000074
22520001
02724022
1d00fff8
0c00009e
08000068
23bdffe0
afbf0004
afb00008
afb1000c
afb20010
afb30014
afb40018
afb5001c
afb60020
20900000
20b10000
3c124000
22520020
20130be2
22140000
20160100
20150004
3288000f
00084080
02484020
8d080000
01164025
ae280000
0014a102
0016b040
20080400
2108ffff
1d00fffe
22b5ffff
1ea0fff3
2273ffff
1e60ffee
8fbf0004
8fb00008
8fb1000c
8fb20010
8fb30014
8fb40018
8fb5001c
8fb60020
23bd0020
03e00008
3c084000
21080010
ad000000
3c080100
2108ffff
1d00fffe
03e00008