des.lst
来自「51系列计算DES的方法之一.....,很小的测试程序....」· LST 代码 · 共 896 行 · 第 1/5 页
LST
896 行
013E F500 F 342 Mov BM3, A ;Bit16
0140 23 343 Rl A
0141 33 344 Rlc A
0142 9200 F 345 Mov BM3.7,C ;Bit2
0144 08 346 Inc R0
0145 E6 347 Mov A, @R0 ;Acc := D2, C2
0146 33 348 Rlc A
0147 9200 F 349 Mov BM0.1,C ;Bit24
0149 33 350 Rlc A
014A 9200 F 351 Mov BM5.7,C ;Bit48
014C 33 352 Rlc A
014D 9200 F 353 Mov BM0.7,C ;Bit17
014F 33 354 Rlc A
0150 9200 F 355 Mov BM4.6,C ;Bit41
0152 33 356 Rlc A
0153 9200 F 357 Mov BM1.7,C ;Bit10
0155 33 358 Rlc A
0156 9200 F 359 Mov BM6.2,C ;Bit34
0158 33 360 Rlc A
0159 9200 F 361 Mov BM1.2,C ;Bit3
015B 33 362 Rlc A
015C 9200 F 363 Mov BM4.3,C ;Bit55
015E 08 364 Inc R0
015F E6 365 Mov A, @R0 ;Acc := D3, C3
0160 23 366 Rl A
0161 33 367 Rlc A
0162 9200 F 368 Mov BM6.7,C ;Bit49
0164 23 369 Rl A
0165 33 370 Rlc A
0166 9200 F 371 Mov BM7.3,C ;Bit42
0168 33 372 Rlc A
0169 9200 F 373 Mov BM0.0,C ;Bit11
016B 23 374 Rl A
016C 33 375 Rlc A
016D 9200 F 376 Mov BM2.1,C ;Bit4
016F 33 377 Rlc A
0170 9200 F 378 Mov BM6.1,C ;Bit56
0172 08 379 Inc R0
0173 E6 380 Mov A, @R0 ;Acc := D4, C4
0174 33 381 Rlc A
0175 9200 F 382 Mov BM2.2,C ;Bit26
0177 33 383 Rlc A
0178 9200 F 384 Mov BM7.4,C ;Bit50
017A 33 385 Rlc A
017B 9200 F 386 Mov BM2.7,C ;Bit19
017D 23 387 Rl A
017E 33 388 Rlc A
A51 MACRO ASSEMBLER DES 09/18/2002 08:53:03 PAGE 7
017F 9200 F 389 Mov BM2.0,C ;Bit12
0181 33 390 Rlc A
0182 9200 F 391 Mov BM7.5,C ;Bit36
0184 33 392 Rlc A
0185 9200 F 393 Mov BM0.3,C ;Bit5
0187 33 394 Rlc A
0188 9200 F 395 Mov BM7.6,C ;Bit29
018A 08 396 Inc R0
018B E6 397 Mov A, @R0 ;Acc := D5, C5
018C 33 398 Rlc A
018D 9200 F 399 Mov BM3.4,C ;Bit27
018F 33 400 Rlc A
0190 9200 F 401 Mov BM5.4,C ;Bit51
0192 33 402 Rlc A
0193 9200 F 403 Mov BM3.5,C ;Bit20
0195 33 404 Rlc A
0196 9200 F 405 Mov BM6.6,C ;Bit44
0198 33 406 Rlc A
0199 9200 F 407 Mov BM3.6,C ;Bit13
019B 33 408 Rlc A
019C 9200 F 409 Mov BM4.1,C ;Bit37
019E 33 410 Rlc A
019F 9200 F 411 Mov BM1.5,C ;Bit6
01A1 33 412 Rlc A
01A2 9200 F 413 Mov BM5.2,C ;Bit30
01A4 08 414 Inc R0
01A5 E6 415 Mov A, @R0 ;Acc := D6, C6
01A6 33 416 Rlc A
01A7 9200 F 417 Mov BM1.3,C ;Bit28
01A9 33 418 Rlc A
01AA 9200 F 419 Mov BM4.7,C ;Bit52
01AC 33 420 Rlc A
01AD 9200 F 421 Mov BM1.6,C ;Bit21
01AF 33 422 Rlc A
01B0 9200 F 423 Mov BM5.5,C ;Bit45
01B2 33 424 Rlc A
01B3 9200 F 425 Mov BM0.6,C ;Bit14
01B5 23 426 Rl A
01B6 33 427 Rlc A
01B7 9200 F 428 Mov BM3.3,C ;Bit7
01B9 33 429 Rlc A
01BA 9200 F 430 Mov BM4.0,C ;Bit31
431
432
01BC ED 433 Mov A, R5 ;Acc := Parameter2 of APDU
01BD 5430 434 Anl A, #030h ;Acc5..4 := Decode~, BuildMac
01BF 701B 435 Jnz InitExpand;
436
01C1 EA 437 Mov A, R2 ;Acc := addr (D0, C0)
01C2 F8 438 Mov R0, A ;R0 := addr (D0, C0)
01C3 E5F0 439 Mov A, B ;Acc := RoundCounter mod 7
01C5 14 440 Dec A
01C6 24FF 441 Add A, #0FFh ;Carry := Acc != 0 => Shift2
01C8 EB 442 Mov A, R3
01C9 7001 443 Jnz DecShift2-1 ;Last Round ?
01CB C3 444 Clr C ;Carry == 0 => Shift1
01CC E6 445 Mov A, @R0 ;Acc := D0, C0
01CD 7C06 446 DecShift2: Mov R4, #6 ;R4 := shift through 7 bytes
01CF 08 447 Inc R0 ;Address += 1
01D0 C6 448 Xch A, @R0 ;ShiftUp one byte
01D1 DCFC 449 Djnz R4, $-2
01D3 F8 450 Mov R0, A ;R0 := D0, C0 >> 2 = D6, C6
01D4 EA 451 Mov A, R2 ;Acc := addr (D0, C0)
01D5 C8 452 Xch A, R0 ;Acc := D0, C0 >> 2
01D6 23 453 Rl A ;Acc := D0, C0 >> 1
01D7 23 454 Rl A ;Acc := D0, C0
A51 MACRO ASSEMBLER DES 09/18/2002 08:53:03 PAGE 8
01D8 10D7F2 455 Jbc PSW.7,DecShift2 ;Shift twice ?
01DB F6 456 Mov @R0, A ;Store D0, C0
457
458
01DC 7800 F 459 InitExpand: Mov R0, #BM0 ;R0 := addr (first SBoxValue)
01DE 7C04 460 Mov R4, #4 ;Half number of SBoxes
01E0 900000 F 461 Mov Dptr,#SBoxes ;Dptr := addr (SBoxes)
01E3 E7 462 Mov A, @R1 ;Acc := Right3
01E4 09 463 Inc R1
01E5 09 464 Inc R1
01E6 09 465 Inc R1 ;R1 := addr (Right0)
466
01E7 D7 467 ExpXorSBox: XchD A, @R1 ;Acc3..0 := RightI, 4 bits
01E8 C6 468 Xch A, @R0 ;Acc := RoundKey, bits 7, 6, 3..0
01E9 66 469 Xrl A, @R0 ;Acc := SBoxIndex, bits 7, 6, 3..0
01EA C4 470 Swap A ;Acc7..2 := SBoxIndex, 6 bits
01EB 54FC 471 Anl A, #0FCh ;Mask SBoxIndex
01ED 93 472 MovC A, @A+Dptr ;Acc := SBoxValue, LowNibble valid
01EE C6 473 Xch A, @R0 ;Acc3..0 := RightI, 4 bits
01EF 08 474 Inc R0
01F0 D7 475 XchD A, @R1 ;Rebuild RightI
01F1 E7 476 Mov A, @R1 ;Acc7..0 := RightI
01F2 66 477 Xrl A, @R0 ;Acc7..2 := SBoxIndex, 6bits
01F3 54FC 478 Anl A, #0FCh ;Mask SBoxIndex
01F5 93 479 MovC A, @A+Dptr ;Acc := SBoxValue, HighNibble valid
01F6 F6 480 Mov @R0, A
01F7 08 481 Inc R0
01F8 E7 482 Mov A, @R1 ;Acc7..0 := RightI
01F9 19 483 Dec R1
01FA A3 484 Inc Dptr
01FB DCEA 485 Djnz R4, ExpXorSBox
486
01FD EB 487 Mov A, R3 ;Acc := RoundCounter
01FE 30E004 488 Jnb Acc.0,$+7 ;Odd Round ?
0201 E9 489 Mov A, R1 ;Acc := addr (Right3) -1
0202 2408 490 Add A, #8 ;Address += 8
0204 F9 491 Mov R1, A ;R1 := addr (Left0)
492
0205 A200 F 493 Mov C, BM1.6 ;P(B)1 := B7, Right := P(B) ExOr Left
0207 13 494 Rrc A
0208 A200 F 495 Mov C, BM4.3 ;P(B)2 := B20
020A 13 496 Rrc A
020B A200 F 497 Mov C, BM5.4 ;P(B)3 := B21
020D 13 498 Rrc A
020E A200 F 499 Mov C, BM7.4 ;P(B)4 := B29
0210 13 500 Rrc A
0211 A200 F 501 Mov C, BM2.3 ;P(B)5 := B12
0213 13 502 Rrc A
0214 A200 F 503 Mov C, BM6.3 ;P(B)6 := B28
0216 13 504 Rrc A
0217 A200 F 505 Mov C, BM4.0 ;P(B)7 := B17
0219 13 506 Rrc A
021A A200 F 507 Mov C, BM0.0 ;P(B)8 := B1
021C 13 508 Rrc A
021D 67 509 Xrl A, @R1 ;Acc := new Right0
021E F7 510 Mov @R1, A ;Left0 := new Right0
021F A200 F 511 Mov C, BM3.6 ;P(B)9 := B15
0221 13 512 Rrc A
0222 A200 F 513 Mov C, BM5.6 ;P(B)10 := B23
0224 13 514 Rrc A
0225 A200 F 515 Mov C, BM6.1 ;P(B)11 := B26
0227 13 516 Rrc A
0228 A200 F 517 Mov C, BM1.4 ;P(B)12 := B5
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?