职能型结构的优缺点:如何写注册机二(续上篇)

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 18:06:56
;以下对公司名进行计算
21A4 ADD WORD PTR [BP+FDF8],01
21A9 ADC WORD PTR [BP+FDFA],00
21AE MOV DI,[BP+FDF8] ;保存计数器
21B2 MOV AL,[BP+DI+FDFC] ;将公司名的每位的ASCII送入AL
21B6 XOR AH,AH
21B8 XOR DX,DX
21BA MOV CX,AX
21BC MOV BX,DX
21BE MOV DI,[BP+FDF8]
21C2 MOV AL,[BP+DI+FDFC]
21C6 XOR AH,AH
21C8 OR AX,FFFF
21CB CWD
21CC AND AX,[BP+06]
21CF AND DX,[BP+08]
21D2 CALL 2F8D
21D7 ADD AX,[BP-04]
21DA ADD DX,[BP-02]
21DD MOV [BP-04],AX
21E0 MOV [BP-02],DX
21E3 MOV AX,[BP+FDF8]
21E7 MOV DX,[BP+FDFA]
21EB CMP DX,[BP+FDF6] ;[BP+FDF6]里放的是0
21EF JNZ 21A4
21F1 CMP AX,[BP+FDF4] ;[BP+FDF4]里放的是输入的公司名长度
21F5 JNZ 21A4
;完成对公司名的计算

21F7 PUSH WORD PTR [BP+08] ;[BP+08]为序列号的前4位
21FA PUSH WORD PTR [BP+06] ;[BP+06]为序列号的后4位
21FD POP DX
21FE POP AX
21FF PUSH AX
2200 PUSH WORD PTR [BP-02]
2203 PUSH WORD PTR [BP-04]
2206 POP AX
2207 POP DX
2208 POP DX
2209 MUL DX
220B XOR DX,DX
220D PUSH DX
220E PUSH AX
220F PUSH WORD PTR [BP+08]
2212 PUSH WORD PTR [BP+06]
2215 POP AX
2216 POP DX
2217 PUSH AX
2218 PUSH WORD PTR [BP-02]
221B PUSH WORD PTR [BP-04]
221E POP DX
221F POP AX
2220 POP DX
2221 MUL DX
2223 XOR DX,DX
2225 ADD AX,[BP-04]
2228 ADC DX,[BP-02]
222B POP CX
222C POP BX
222D ADD AX,CX
222F ADC DX,BX
2231 MOV [BP-04],AX
2234 MOV [BP-02],DX
2237 MOV AX,[BP-04] ;正确注册码的后4位
223A MOV DX,[BP-02] ;正确注册码的前4位
..........
..........

2F8D CMP BYTE PTR [1712],02
2F92 JB 2FAF ;这两句我不知道是做什么的,在这里不跳
2F94 SHL EAX,10
2F98 SHRD EAX,EDX,10
2F9D SHL ECX,10
2FA1 SHRD ECX,EBX,10
2FA6 IMUL ECX
2FA9 SHLD EDX,EAX,10
2FAE RETF

2FCA CMP BYTE PTR [1712],02
2FCF JB 2FF8 ;这两句我不知道是做什么的,在这里不跳
2FD1 SHL EAX,10
2FD5 SHRD EAX,EDX,10
2FDA SHL ECX,10
2FDE SHRD ECX,EBX,10
2FE3 JZ 3043 ;这里没跳
2FE5 CDQ
2FE7 IDIV ECX
2FEA MOV ECX,EDX
2FED SHLD EDX,EAX,10
2FF2 SHLD EBX,ECX,10
2FF7 RETF

3093 CMP BYTE PTR [1712],02
3098 JB 30AA ;这两句我不知道是做什么的,在这里不跳
309A SHL EDX,10
309E MOV DX,AX
30A0 SHL EDX,CL
30A3 MOV AX,DX
30A5 SHR EDX,10
30A9 RETF
(完)