25 November 2010 Thursday

本文解析了一系列英语词汇的意义及用法,包括forum(公会所)、lounge(休闲室)、trap(陷阱)、constrain(约束)、obstruct(阻碍)等,并介绍了它们的相关衍生词汇。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.forum
   n.公会所;工会用的场所;座谈会

 

2.lounge
   n.闲逛;长沙龙;休闲室
   v.闲荡;懒洋洋的躺卧;虚度光阴

 

   lounger
   n.漫步的人;懒人

 

3.trap
   pitfall
   n.陷阱;阴谋;诱惑

 

4.constrain
   v.强迫;约束;抑制
  
   constraint
   n.约束;强迫;限制;强制

 

   constrained
   adj.被迫的;勉强的

 

   restrict
   v.限制;限定;约束

 

   force
   n.力量;势力;武力
   v.强迫;推动;强夺

 

5.obstruct
   v.阻隔;阻塞;妨碍

 

6.caveat
   n.预告;中止申请;申请书

 

7.appendix
   n.附录;附件

.MODEL SMALL .STACK 100H .DATA ; 时间显示相关 am_str DB 'A.M.$' pm_str DB 'P.M.$' colon DB ':$' dot DB '.$' space DB ' $' comma DB ', $' newline DB 0DH, 0AH, '$' ; 回车换行 ; 星期名称指针表 weekday_ptrs DW SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY SUNDAY DB 'Sunday$' MONDAY DB 'Monday$' TUESDAY DB 'Tuesday$' WEDNESDAY DB 'Wednesday$' THURSDAY DB 'Thursday$' FRIDAY DB 'Friday$' SATURDAY DB 'Saturday$' ; 月份名称指针表(修复:补齐12个月份) month_ptrs DW JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE DW JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER JANUARY DB 'January$' FEBRUARY DB 'February$' MARCH DB 'March$' APRIL DB 'April$' MAY DB 'May$' JUNE DB 'June$' JULY DB 'July$' AUGUST DB 'August$' SEPTEMBER DB 'September$' OCTOBER DB 'October$' NOVEMBER DB 'November$' DECEMBER DB 'December$' ; 时间日期缓存 hour_12 DB ? am_pm DB ? ; 0=A.M., 1=P.M. ; 日期临时变量(修复非法内存访问) current_weekday DB ? current_day DB ? current_month DB ? current_year DW ? .CODE START: MOV AX, @DATA MOV DS, AX ; 设置文本模式 - 修复内存访问冲突 MOV AX, 0003H INT 10H MAIN_LOOP: ; 设置光标到(0,0) XOR DX, DX CALL SET_CURSOR ; 显示日期 CALL SHOW_DATE ; 设置光标到(1,0) MOV DH, 1 XOR DL, DL CALL SET_CURSOR ; 显示时间 CALL SHOW_TIME ; 检查按键 (修复:使用正确的方法检查按键) MOV AH, 01H INT 16H JNZ EXIT_PROGRAM ; 有按键则退出 ; 短暂延时(约55ms) - 修复百分秒不更新问题 MOV CX, 5 ; 减少延迟时间 MOV DX, 86A0H MOV AH, 86H INT 15H JMP MAIN_LOOP EXIT_PROGRAM: ; 清空键盘缓冲区 MOV AH, 0CH MOV AL, 0 INT 21H ; 设置光标位置 (DH=行, DL=列) SET_CURSOR PROC MOV AH, 02H MOV BH, 0 ; 页号0 INT 10H RET SET_CURSOR ENDP ; 显示日期子程序 - 完全重构 SHOW_DATE PROC ; 获取日期 (INT 21H, AH=2AH) MOV AH, 2AH INT 21H ; 返回: AL=星期几(0=日), CX=年, DH=月, DL=日 ; 保存日期值到内存变量 (修复非法内存访问) MOV current_weekday, AL MOV current_day, DL MOV current_month, DH MOV current_year, CX ; 显示星期 (修复索引计算错误) XOR AX, AX MOV AL, current_weekday ; 星期索引(0-6) MOV SI, AX SHL SI, 1 ; 乘以2 (指针大小) MOV DX, weekday_ptrs[SI] MOV AH, 09H INT 21H ; 显示逗号 MOV DX, OFFSET comma INT 21H ; 显示月份 (修复月份索引错误) XOR AX, AX MOV AL, current_month ; 月份(1-12) DEC AL ; 调整为0-based索引 MOV SI, AX SHL SI, 1 ; 乘以2 (指针大小) MOV DX, month_ptrs[SI] MOV AH, 09H INT 21H ; 显示空格 MOV DX, OFFSET space INT 21H ; 显示日 (修复日期值处理错误) XOR AX, AX MOV AL, current_day CALL PRINT_DECIMAL ; 显示逗号 MOV DX, OFFSET comma MOV AH, 09H INT 21H ; 显示年 MOV AX, current_year CALL PRINT_DECIMAL RET SHOW_DATE ENDP ; 显示时间子程序 - 修复百分秒显示问题 SHOW_TIME PROC ; 获取时间 (INT 21H, AH=2CH) MOV AH, 2CH INT 21H ; 返回: CH=时, CL=分, DH=秒, DL=百分秒 ; 保存时间值 (修复百分秒处理) PUSH DX ; 保存秒/百分秒 PUSH CX ; 保存时/分 ; 转换为12小时制 MOV AL, CH ; 小时 CMP AL, 0 JE HOUR_12_AM CMP AL, 12 JB HOUR_AM JE HOUR_12_PM SUB AL, 12 MOV [am_pm], 1 JMP HOUR_DONE HOUR_12_AM: MOV AL, 12 MOV [am_pm], 0 JMP HOUR_DONE HOUR_AM: MOV [am_pm], 0 JMP HOUR_DONE HOUR_12_PM: MOV AL, 12 MOV [am_pm], 1 HOUR_DONE: MOV [hour_12], AL ; 显示小时 MOV AL, [hour_12] CALL PRINT_TWO_DIGITS ; 显示冒号 MOV DX, OFFSET colon MOV AH, 09H INT 21H ; 显示分钟 POP CX ; 恢复时/分 MOV AL, CL CALL PRINT_TWO_DIGITS ; 显示冒号 MOV DX, OFFSET colon MOV AH, 09H INT 21H ; 显示秒 (修复百分秒处理) POP DX ; 恢复秒/百分秒 PUSH DX ; 重新保存百分秒 MOV AL, DH ; 秒 CALL PRINT_TWO_DIGITS ; 显示点 MOV DX, OFFSET dot MOV AH, 09H INT 21H ; 显示百分秒 (修复:直接从原始值获取) POP DX ; 恢复百分秒 MOV AL, DL ; 百分秒 CALL PRINT_TWO_DIGITS ; 显示空格 MOV DX, OFFSET space MOV AH, 09H INT 21H ; 显示A.M./P.M. MOV DX, OFFSET am_str CMP [am_pm], 1 JNE SHOW_AMPM MOV DX, OFFSET pm_str SHOW_AMPM: MOV AH, 09H INT 21H RET SHOW_TIME ENDP ; 打印两位数(AL=0-99) - 修复寄存器冲突 PRINT_TWO_DIGITS PROC PUSH AX ; 保存原始值 AAM ; AH=十位, AL=个位 ADD AX, 3030H MOV BX, AX ; 保存转换结果 MOV DL, BH ; 显示十位 MOV AH, 02H INT 21H MOV DL, BL ; 显示个位 INT 21H POP AX RET PRINT_TWO_DIGITS ENDP ; 打印十进制数(AX=0-65535) - 修复寄存器冲突 PRINT_DECIMAL PROC PUSH BX PUSH CX PUSH DX PUSH SI MOV SI, 10 ; 除数 XOR CX, CX ; 计数器(数字个数) DECIMAL_LOOP: XOR DX, DX DIV SI ; AX / 10 -> AX=商, DX=余数 ADD DL, '0' ; 转为ASCII PUSH DX ; 保存数字 INC CX TEST AX, AX JNZ DECIMAL_LOOP PRINT_LOOP: POP DX ; 取出数字 MOV AH, 02H INT 21H LOOP PRINT_LOOP POP SI POP DX POP CX POP BX RET PRINT_DECIMAL ENDP END START 上面代码成功显示了时间和日期功能,但是输出格式为:日期和时间是两行输出,我需要把它们放在一行显示,日期放在时间后面,中间隔一个逗号,且删除月份和日期中间的逗号,用空格代替。例如,图片输出为: Thursday,June,26,2025 04:51:18.88 P.M. 而我需要的输出格式为:04:51:18.88 P.M.,Thursday,June 26,2025 请修改代码
06-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值