月份及星期的英文简写

 

一月:January 简写Jan.
二月:February 简写Feb.
三月:March 简写Mar.
四月:April 简写Apr.
五月:May 简写May.
六月:June 简写Jun.
七月:July 简写Jul.
八月:August 简写Aug.
九月:September 简写Sep. / Sept.
十月:October 简写Oct.
十一月:November 简写Nov.
十二月:December 简写Dec.

 

星期一: Mon.=Monday

  星期二: Tues.=Tuesday

  星期三:Wed.=Wednesday

  星期四: Thur.=Thurday

  星期五: Fri.=Friday

  星期六: Sat.=Saturday

  星期天: Sun.=Sunday

 

 

 

好的,这是一个比较复杂的问题,需要一步一步来实现。以下是一个可能的解决方案: 1. 首先,我们需要定义一些常量,比如每个月的天数、星期几开始等信息。这些常量可以在程序一开始就定义好,如下所示: ``` # 每个月的天数 month_days: .word 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 # 星期几开始 month_starts: .word 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 # 月份名称 month_names: .asciiz "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" ``` 2. 然后,我们需要定义一个缓冲区来存储年历数据,可以使用一个二维数组来表示。缓冲区的大小可以根据实际需要来确定,这里假设缓冲区大小为 20x80,即可以显示 20 行,每行显示 80 个字符。 ``` buffer: .space 20*80 ``` 3. 接下来,我们需要编写一个循环,来填写年历数据。循环从 1 月开始,一直到 12 月结束。在每个月的循环中,我们需要计算出该月的天数和星期几开始,然后再根据这些信息来填写年历数据。填写年历数据的方法可以是,首先填写星期表头(即周日到周六的缩写),然后填写月份名称,最后填写日期。填写日期时,需要计算出每个日期对应的坐标,然后根据坐标来填写缓冲区。 ``` # 初始化缓冲区,填写星期表头 la $t0, buffer li $t1, 'S' sb $t1, 0($t0) addi $t0, $t0, 2 li $t1, 'M' sb $t1, 0($t0) addi $t0, $t0, 2 li $t1, 'T' sb $t1, 0($t0) addi $t0, $t0, 2 li $t1, 'W' sb $t1, 0($t0) addi $t0, $t0, 2 li $t1, 'T' sb $t1, 0($t0) addi $t0, $t0, 2 li $t1, 'F' sb $t1, 0($t0) addi $t0, $t0, 2 li $t1, 'S' sb $t1, 0($t0) addi $t0, $t0, 3 # 循环填写年历数据 li $t2, 1 # t2 表示当前月份,从 1 开始 la $t3, month_days la $t4, month_starts la $t5, month_names la $t6, buffer li $t7, 0 # t7 表示当前行号,从 0 开始 loop: # 计算当前月份的天数和星期几开始 lw $t8, ($t3) lw $t9, ($t4) # 填写月份名称 la $t1, ($t5) add $t1, $t1, $t2 lb $t1, ($t1) sw $t1, 0($t6) addi $t6, $t6, 4 # 填写星期表头 li $t1, 0 fill_header: beq $t1, 7, fill_dates la $t7, week_names($t1) sb $t7, 0($t6) addi $t6, $t6, 2 addi $t1, $t1, 1 j fill_header # 填写日期 fill_dates: li $t1, 1 li $t10, 0 # t10 表示当前列号,从 0 开始 fill_days: beq $t1, $t8+1, next_month add $t11, $t1, $t9 addi $t11, $t11, -1 div $t12, $t11, 7 mflo $t13 mfhi $t11 beqz $t11, fill_space add $t14, $t13, $t7 addi $t14, $t14, 1 mul $t14, $t14, 80 add $t14, $t14, $t10 add $t14, $t14, $t6 sw $t1, 0($t14) j fill_next fill_space: addi $t14, $t7, 1 mul $t14, $t14, 80 add $t14, $t14, $t10 add $t14, $t14, $t6 sw $t1, 0($t14) fill_next: addi $t1, $t1, 1 addi $t10, $t10, 1 j fill_days next_month: addi $t2, $t2, 1 addi $t3, $t3, 4 addi $t4, $t4, 4 addi $t5, $t5, 4 addi $t7, $t7, 1 blt $t2, 13, loop ``` 4. 最后,我们需要将缓冲区输出到屏幕上。这里可以使用系统调用来实现。具体实现可以参考下面的代码。 ``` # 输出缓冲区到屏幕上 la $a0, buffer li $a1, 20*80 li $v0, 4 syscall ``` 注意,以上代码仅供参考,可能还需要根据具体情况进行调整和改进。同时,这只是一个粗略的实现,可能还有一些问题需要解决,比如闰年的处理、日期对齐等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值