MalwareSourceCode/MSDOS/Virus.MSDOS.Unknown.subr.asm

43 lines
1.1 KiB
NASM
Raw Normal View History

2021-01-12 23:58:25 +00:00
SUBR PROC FAR
SPACE
; -------------------------------------------------------------------
; ADD BCD NUMBERS
; THIS ROUTINE ADDS TWO BCD NUMBERS OF EQUAL LENGTH
; ASSUMPTIONS:
; CX CONTAINS THE LENGTH OF THE FIELDS BEING ADDED
; SI POINTS TO THE LEFTMOST BYTE OF THE BCD DATA
; DI POINTS TO THE SECOND OPPERAND WHICH IS OVERLAID BY RESULT
; AX DESTROYED BY THIS ROUTINE
;
BCDADD LABEL FAR
CLC ;CLEAR CARY FLAG
BCD1 LABEL NEAR
MOV AL,[SI] ;GET A DATA BYTE
ADC AL,[DI] ;ADD A BYTE
DAA ;ADJUST RESULT
MOV [DI],AL ;STORE ANSWER
INC SI ;BUMP POINTER
INC DI ;BUMP POINTER
DEC CX ;DECREMENT AND TEST
JNZ BCD1 ;LOOP TILL DONE
RET ;BACK TO CALLER
SPACE 2
; ADD ASCII NUMBERS
; LINKAGE IS SAME AS ABOVE
;
ASCADD LABEL FAR
CLC ;CLEAR CARRY FLAG
ASC1 LABEL NEAR
MOV AL,[SI] ;GET A BYTE
ADC AL,[DI] ;ADD DATA
AAA ;ADJUST RESULT
MOV [DI],AL ;STORE ANSWER
INC SI ;BUMP POINTER
INC DI ;BUMP POINTER
DEC CX ;LOOP CONTROL
JNZ ASC1 ;LOOP FOR MORE
RET
;
; -------------------------------------------------------------
SUBR ENDP