我的第83行代码

我的第83行代码之迷迷糊糊来登陆

这里写图片描述

emmmmm…denglu…请原谅我现在在疯狂的笑…

哈哈哈,翻出来自己大二的时候写的第一个登录模块的第83行代码。回想一下,真的觉得很青涩的代码,那时候java和android还没学完,甚至还没有学过数据库,就跑去参加一个App创意比赛。

我要用一个认真脸的说,这个登陆可是花了三天才解决的问题(哈啊哈,一想到这里,就感觉自己超级呆萌)。

各种挣扎,小组一共六个人,然后就稀里糊涂的做了假“项目经理”,用那时候的话来说,只要需要传到网上的数据,都由我来写。可是……都没学过数据库,只会用java 来写syso(“Hello World!”),只会用android来写(TextView)findViewByID(R.id….)的小萌新……是多么的无能为力,一直很到最后,是找到了一个免费的第三方后台,完美解决像我这样的问题。最终是用了两个星期,六个人啥都不会的人,在一起写了一个很简单很简单的Demo。最让人意外的就是,后来参加比赛的时候,我们作为当时所有队伍中,唯一不是社会上公司来参加比赛的队伍,赢得了我们所报名的创意奖的金奖。哈哈哈哈,当然还有一比不菲的10k奖励,最让我们不好意思的就是,嗯,对,我们那个Demo还上电视了,哈哈哈哈。

现在想想那时候的日子,真的还是很开心的,那次也是让我明白了,自己还欠缺了很多。

那时候参加完这个过程失败、结果顺利、技术完败的比赛之后,自己明白的一个道理就是:不要让自己的技术限制自己的想象力

接下来的,大学就只剩下一年了,祝愿自己准备接下来的大四实习面试备战顺利,加油。

趁着自己还年轻,还可以做自己所想,想自己所做的年纪,那就认真努力的去做自己所想,想自己所做,向代码致敬。

请提供您所指的完整代码段,并明确标注“第三”和“第十八”的内容,以便准确判断错误原因。由于此前对话中我提供了多段代码示例,若您引用的是以下这段典型结构: ```asm 1. DATA SEGMENT 2. DAT DB 85, 92, 76, 43, 67, 88, 95, 53, 72, 81, 60, 100 3. COUNT EQU $ - DAT 4. DAT1 DB 0 5. DAT2 DB 0 6. DAT3 DB 0 7. DAT4 DB 0 8. DAT5 DB 0 9. DATA ENDS 10. 11. CODE SEGMENT 12. ASSUME CS:CODE, DS:DATA 13. START: 14. MOV AX, DATA 15. MOV DS, AX 16. MOV SI, OFFSET DAT 17. MOV CX, COUNT 18. CALL COUNT_SCORE ``` 则: - **第3**:`COUNT EQU $ - DAT` - **第18**:`CALL COUNT_SCORE` --- ## 错误分析与解决方案 ### ❌ 第3报错:`COUNT EQU $ - DAT` #### 常见错误类型: - `Symbol not defined` 或表达式非法 - `$` 使用位置不当 #### ✅ 正确性说明: 该语句在 **MASM/TASM** 中是合法的,用于计算数组长度。 #### 🔧 解决方案: 若汇编器不支持动态表达式,改为: ```asm COUNT = 12 ; 显式赋值 ``` 或 ```asm COUNT EQU 12 ``` > 💡 提示:确保 `DAT` 已定义且在同一段内。 --- ### ❌ 第18报错:`CALL COUNT_SCORE` #### 可能原因: 1. 子程序 `COUNT_SCORE` 尚未声明或拼写错误 2. 在调用时尚未被汇编器识别(前向引用问题) 3. 过程未定义为 `PROC` 形式 #### 示例修复: 确保子程序正确定义: ```asm CALL COUNT_SCORE ; ... 主程序其他指令 ... COUNT_SCORE PROC NEAR ; 子程序体 RET COUNT_SCORE ENDP ``` 否则会提示: > **Undefined symbol: COUNT_SCORE** #### ✅ 解决方法: 将子程序定义放在调用之前,或使用 `FAR`/`NEAR` 声明解决前向引用。 --- ## 推荐修正版代码片段(关键部分) ```asm DATA SEGMENT DAT DB 85, 92, 76, 43, 67, 88, 95, 53, 72, 81, 60, 100 COUNT EQU 12 ; 改为直接定义,避免 $ 引发问题 DAT1 DB 0 DAT2 DB 0 DAT3 DB 0 DAT4 DB 0 DAT5 DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET DAT MOV CX, COUNT CALL COUNT_SCORE ; 现在此处可正确解析 MOV AH, 4CH INT 21H COUNT_SCORE PROC NEAR PUSH AX PUSH SI PUSH CX AGAIN: MOV AL, [SI] CMP AL, 60 JB S0_59 CMP AL, 70 JB S60_69 CMP AL, 80 JB S70_79 CMP AL, 90 JB S80_89 INC DAT5 JMP NEXT S0_59: INC DAT1 JMP NEXT S60_69: INC DAT2 JMP NEXT S70_79: INC DAT3 JMP NEXT S80_89: INC DAT4 NEXT: INC SI LOOP AGAIN POP CX POP SI POP AX RET COUNT_SCORE ENDP CODE ENDS END START ``` --- # 知识点 - **符号表达式与地址计算**:`$` 表示当前地址,`EQU` 用于常量定义,适用于数组长度计算。 - **子程序前向引用**:调用未先声明的过程需确保汇编器支持前向解析,否则应提前定义或使用原型。 - **段间寻址与OFFSET操作符**:`OFFSET DAT` 获取偏移地址,要求DAT在当前可访问段中已定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值