⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shift.s

📁 SecuDe是一个由安全应用程序接口组成,对验证机制、证件处理、PEM、X.400报文处理和密钥管理提供支持。SecuDe提供DES、 RSA杂凑函数、密钥生成以及数字签名的生成和核实等多种密码机制。
💻 S
字号:
;;-------------------------------------------------------+-----;;                                                       | GMD ;;   PROC 'SHIFT'                        VERSION 1.0     +-----;;                                          DATE 09.10.87      ;;                                            BY BOTT WOLFGANG ;;                                                             ;;                                                             ;;   DESCRIPTION PROGRAMM ZUM SHIFTEN EINER LANGEN ZAHL.       ;;               EIN POSITIVER FAKTOR BEDEUTET LINKSSHIFT      ;;               EIN NEGATIVER FAKTOR BEDEUTET (LOGISCHEN)     ;;               RECHTSSCHIFT.                                 ;;               POINTER AUF DIE OPERANDEN SIND 4 BYTE LANG.   ;;                                                             ;;   IN           DESCRIPTION                 ADR:             ;;     OP1          ZU VERSCHIEBENDE ZAHL       [BP] + 6       ;;     FAKTOR       VERSCHIEBUNGSFAKTOR         [BP] + 10      ;;                                                             ;;   INOUT                                                     ;;                                                             ;;   OUT                                                       ;;     ERGEBNIS     ERGEBNISFELD                [BP] + 14      ;;                                                             ;;-------------------------------------------------------------;;include asmtoken.h;;--------------------------------------;;                                      ;; BLOCKSTRUKTUR DEFINIEREN.            ;;                                      ;;--------------------------------------;;_TEXT      SEGMENT BYTE PUBLIC 'CODE'_TEXT      ENDS_DATA      SEGMENT WORD PUBLIC 'DATA'_DATA      ENDSCONST      SEGMENT WORD PUBLIC 'CONST'CONST      ENDS_BSS       SEGMENT WORD PUBLIC 'BSS'_BSS       ENDS;DGROUP     GROUP _DATA,_BSS,CONSTASSUME CS:_TEXT,DS:DGROUP,SS:DGROUP,ES:DGROUP;;--------------------------------------;;                                      ;; PROGRAMMTEXT:                        ;;                                      ;; ZUERST REGISTER RETTEN.              ;;                                      ;;--------------------------------------;;_TEXT      SEGMENT           PUBLIC  _SHIFT           PUBLIC  _SSHIFT_SHIFT     PROC   FAR   PUSH    BP   MOV     BP,SP   PUSH    ES   PUSH    DI   PUSH    SI   PUSH    DS   PUSH    DS   PUSH    DS;; OPERAND1 VON FAR IN NEAR UMSPEICHERN;   POP     ES         ; REP MOVS BEFEHL   MOV     DS,[BP+8]  ; VORBEREITEN.   MOV     SI,[BP+6]  ; SOURCE = DS:SI   LEA     DI,OPER1   ; DEST   = ES:DI   MOV     CX,DS:[SI] ; COUNT  = CX   SAR     CX,1   ADD     CX,1   REP     MOVSW   POP     DS   POP     ES   LEA     BX,[OPER2]   PUSH    BX   MOV     BX,[BP+10]   PUSH    BX   LEA     BX,[OPER1]   PUSH    BXCALL _SSHIFT;; ERGEBNIS VON NEAR IN FAR UMSPEICHERN;   MOV     ES,[BP+14]   MOV     DI,[BP+12]   MOV     CX,OPER2   SAR     CX,1   ADD     CX,1   LEA     SI,OPER2   REP     MOVSW   ADD     SP,6   POP     SI   POP     DI   POP     ES   MOV     SP,BP   POP     BP   RET_SHIFT     ENDP_SSHIFT    PROC    NEAR;--------------------------------------;; EIGENTLICHE SHIFT-OPERATION.         ;; DIE POINTER AUF DIE OPERANDEN SIND   ;; JETZT ALLE 'NEAR'.                   ;;--------------------------------------;   PUSH    BP   MOV     BP,SP   PUSH    DI   PUSH    SI;;--------------------------------------;;                                      ;; ADRESSEN DER PARAMETER:              ;;                                      ;; OP1 : 4 + (BP)                       ;; FAKTOR : 6 + (BP)                    ;; ERGEBNIS : 8 + (BP)                  ;;                                      ;;--------------------------------------;;;;--------------------------------------;;                                      ;; LOKALE VARIABLEN WERDEN KEINE        ;;                                      ;;   KEINE BENOETIGT.                   ;;                                      ;;--------------------------------------;;;;--------------------------------------;;                                      ;; SONDERFAELLE BEARBEITEN: OP1 = 0     ;; UND 'FAKTOR' = 0                     ;;                                      ;;--------------------------------------;;   MOV     BX,[4+BP]  ; ADRESSE DER AUS-                      ; GANGSZAHL   MOV     SI,[BX]    ; LAENGE DERSELBEN   CMP     SI,0   JE      ZERO   MOV     DX,[6+BP]  ; SHIFTFAKTOR LADEN   CMP     DX,0   JNE     TRUESHIFT;;--------------------------------------;;                                      ;; ERGEBNIS = OP1 FALLS 'FAKTOR' = 0    ;;                                      ;;--------------------------------------;;   MOV     SI,BX      ; 'REP MOVS'-BEFEHL   MOV     DI,[8+BP]  ; VORBEREITEN   MOV     CX,[BX]   SAR     CX,1   INC     CX   REP     MOVSW   JMP     RETURN;;--------------------------------------;;                                      ;; FALL, DASS OP1 = 0                   ;;                                      ;;--------------------------------------;;ZEROS:                ; BP wurde auf dem Stack   POP     BP         ; abgelegt und mu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -