📄 des.lst
字号:
0227 13 515 Rrc A
0228 A200 F 516 Mov C, BM1.4 ;P(B)12 := B5
022A 13 517 Rrc A
022B A200 F 518 Mov C, BM4.1 ;P(B)13 := B18
022D 13 519 Rrc A
022E A200 F 520 Mov C, BM7.6 ;P(B)14 := B31
A51 MACRO ASSEMBLER DES 09/11/2002 09:44:25 PAGE 9
0230 13 521 Rrc A
0231 A200 F 522 Mov C, BM2.1 ;P(B)15 := B10
0233 13 523 Rrc A
0234 A200 F 524 Mov C, BM0.1 ;P(B)16 := B2
0236 13 525 Rrc A
0237 19 526 Dec R1
0238 67 527 Xrl A, @R1 ;Acc := new Right1
0239 F7 528 Mov @R1, A ;Left1 := new Right1
023A A200 F 529 Mov C, BM1.7 ;P(B)17 := B8
023C 13 530 Rrc A
023D A200 F 531 Mov C, BM5.7 ;P(B)18 := B24
023F 13 532 Rrc A
0240 A200 F 533 Mov C, BM3.5 ;P(B)19 := B14
0242 13 534 Rrc A
0243 A200 F 535 Mov C, BM7.7 ;P(B)20 := B32
0245 13 536 Rrc A
0246 A200 F 537 Mov C, BM6.2 ;P(B)21 := B27
0248 13 538 Rrc A
0249 A200 F 539 Mov C, BM0.2 ;P(B)22 := B3
024B 13 540 Rrc A
024C A200 F 541 Mov C, BM2.0 ;P(B)23 := B9
024E 13 542 Rrc A
024F A200 F 543 Mov C, BM4.2 ;P(B)24 := B19
0251 13 544 Rrc A
0252 19 545 Dec R1
0253 67 546 Xrl A, @R1 ;Acc := new Right2
0254 F7 547 Mov @R1, A ;Left2 := new Right2
0255 A200 F 548 Mov C, BM3.4 ;P(B)25 := B13
0257 13 549 Rrc A
0258 A200 F 550 Mov C, BM7.5 ;P(B)26 := B30
025A 13 551 Rrc A
025B A200 F 552 Mov C, BM1.5 ;P(B)27 := B6
025D 13 553 Rrc A
025E A200 F 554 Mov C, BM5.5 ;P(B)28 := B22
0260 13 555 Rrc A
0261 A200 F 556 Mov C, BM2.2 ;P(B)29 := B11
0263 13 557 Rrc A
0264 A200 F 558 Mov C, BM0.3 ;P(B)30 := B4
0266 13 559 Rrc A
0267 A200 F 560 Mov C, BM6.0 ;P(B)31 := B25
0269 13 561 Rrc A
026A A200 F 562 Mov C, BM3.7 ;P(B)32 := B16
026C 13 563 Rrc A
026D 19 564 Dec R1
026E 67 565 Xrl A, @R1 ;Acc := new Right3
026F F7 566 Mov @R1, A ;Left3 := new Right3
567
0270 EB 568 Mov A, R3 ;Acc := RoundCounter
0271 6003 569 Jz PreOutput ;Ready Rounds ?
0273 020000 F 570 Jmp OneRound ;Next Round !
571
572 ;Normalize output of 16 rounds
0276 8700 F 573 PreOutput: Mov BM7, @R1 ;BM7 := Right3
0278 09 574 Inc R1
0279 8700 F 575 Mov BM5, @R1 ;BM5 := Right2
027B 09 576 Inc R1
027C 8700 F 577 Mov BM3, @R1 ;BM3 := Right1
027E 09 578 Inc R1
027F 8700 F 579 Mov BM1, @R1 ;BM1 := Right0
0281 09 580 Inc R1
0282 8700 F 581 Mov BM6, @R1 ;BM6 := Left3
0284 09 582 Inc R1
0285 8700 F 583 Mov BM4, @R1 ;BM4 := Left2
0287 09 584 Inc R1
0288 8700 F 585 Mov BM2, @R1 ;BM2 := Left1
028A 09 586 Inc R1
A51 MACRO ASSEMBLER DES 09/11/2002 09:44:25 PAGE 10
028B 8700 F 587 Mov BM0, @R1 ;BM0 := Left0
588
028D 7B08 589 Mov R3, #8 ;Inverse initial permutation IP^-1
028F 7800 F 590 Mov R0, #BM0
591
0291 E6 592 InvItPerm: Mov A, @R0
0292 08 593 Inc R0
0293 23 594 Rl A ;Due to Left and Right notation
0294 7C08 595 Mov R4, #8 ;which are rotated right 1 bit
0296 13 596 Rrc A ;in comparision with Standard
0297 C7 597 Xch A, @R1
0298 33 598 Rlc A
0299 C7 599 Xch A, @R1
029A 19 600 Dec R1
029B DCF9 601 Djnz R4, $-5
602
029D E9 603 Mov A, R1 ;Acc := addr (Output0) - 1
029E 2408 604 Add A, #8 ;Acc := addr (Output7)
02A0 F9 605 Mov R1, A ;R1 := addr (Output7)
02A1 DBEE 606 Djnz R3, InvItPerm
607
02A3 E7 608 Mov A, @R1 ;Acc := Output7 << 2
02A4 03 609 Rr A
02A5 03 610 Rr A
02A6 F7 611 Mov @R1, A
612 ;Result of DES operation available
02A7 EE 613 Mov A, R6 ;Acc := addr (Input0) + 8
02A8 F8 614 Mov R0, A ;R0 := addr (Input0) + 8
02A9 C3 615 Clr C
616
02AA ED 617 Mov A, R5
02AB 20E40C 618 Jb Acc.4, TestEnd ;BuildMac ?
02AE 23 619 Rl A
02AF 33 620 Rlc A
02B0 B0E7 621 Anl C, /Acc.7 ;Carry := Mode is CBC decode
622
02B2 7B08 623 Mov R3, #8 ;Copy data to input location
02B4 E7 624 Mov A, @R1 ;Acc := OutputI
02B5 19 625 Dec R1
02B6 18 626 Dec R0
02B7 F6 627 Mov @R0, A
02B8 DBFA 628 Djnz R3, $-4
629
02BA EF 630 TestEnd: Mov A, R7
02BB 6013 631 Jz DesEnd ;End of input data reached?
02BD 500E 632 Jnc NoCbcDec
02BF EE 633 Mov A, R6 ;For CBC decode set pointer to next block
02C0 24F0 634 Add A, #0F0h
02C2 FE 635 Mov R6, A
02C3 F9 636 Mov R1, A
02C4 7B08 637 Mov R3, #8 ;and XOR it with previous output
02C6 E7 638 Mov A, @R1
02C7 66 639 Xrl A, @R0
02C8 F6 640 Mov @R0, A
02C9 08 641 Inc R0
02CA 09 642 Inc R1
02CB DBF9 643 Djnz R3, $-5
02CD 020000 F 644 NoCbcDec: LJmp DesAction
645
02D0 D083 646 DesEnd: Pop Dph ;Restore DataPointer
02D2 D082 647 Pop Dpl
02D4 5017 648 Jnc DesRet
02D6 120000 F 649 Call VecExist
02D9 5012 650 Jnc DesRet
651
02DB 7401 652 Mov A, #1 ;CBC decode only
A51 MACRO ASSEMBLER DES 09/11/2002 09:44:25 PAGE 11
653
654 ; MovC A, @A+Dptr ;Acc := HeaderLength
02DD 120000 F 655 lcall GetKey
656
02E0 240E 657 Add A, #14 ;Acc := index (Vector0)
02E2 F9 658 Mov R1, A
02E3 E9 659 Mov A, R1
660 ; MovC A, @A+Dptr ;Acc := VectorI
02E4 120000 F 661 lcall GetKey
662
02E7 09 663 Inc R1
02E8 66 664 Xrl A, @R0
02E9 F6 665 Mov @R0, A
02EA 08 666 Inc R0
02EB DBF8 667 Djnz R3, $-6
668
02ED 7B08 669 DesRet: Mov R3, #8
02EF EA 670 Mov A, R2 ;Acc := addr (D0, C0)
02F0 2B 671 Add A, R3 ;Acc := addr (Output0)
02F1 F9 672 Mov R1, A ;R1 := addr (Output0)
02F2 ED 673 Mov A, R5 ;Acc := Mode
02F3 30E40D 674 Jnb Acc.4,NoMAC
675 ;MAC verification/copy MAC to end of data
02F6 A2E5 676 Mov C, Acc.5
02F8 E7 677 Mov A, @R1
02F9 4003 678 Jc $+5
02FB 66 679 Xrl A, @R0
02FC 700B 680 Jnz MacErr
02FE F6 681 Mov @R0, A
02FF 08 682 Inc R0
0300 09 683 Inc R1
0301 DBF5 684 Djnz R3, $-9
685
0303 EE 686 NoMAC: Mov A, R6
0304 F9 687 Mov R1, A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -