All pastes #565534 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-06-14 01:04 UTC
rendered paste body
TITLE	PROBLEM 5

STSEG	SEGMENT	STACK
	DB 32 DUP(?)
STSEG	ENDS

DTSEG	SEGMENT
	Data1	DB '3546882164'
	Data2	DB '2345611245'
	Result	DB 10 DUP (?)

DTSEG	ENDS

CDSEG	SEGMENT 
MAIN	PROC	FAR
	ASSUME	CS:CDSEG, DS:DTSEG, SS:STSEG
	MOV AX, DTSEG
	MOV DS, AX
	CALL SUB_ASICII
	CALL CONVERT_TO_ASICII
	MOV AH,4CH
	INT 21H
MAIN ENDP	

SUB_ASICII PROC
	CLC
	MOV CX, 10H		;add ten ASICII Numbers
	MOV BX, 9H		;Start Subtracting LEAST SIGNIFICANT ASICII
SUBTRACT:
	MOV AL,Data1[BX]	
	SBB AL,Data2[BX]
	AAS			;Result is AL in Unpacked BCD
	MOV Result[BX],AL	;Move Result to memory location "Result"
	DEC BX
	LOOP SUBTRACT		;Continue Untill full Subtraction Completed
	RET
SUB_ASICII ENDP

CONVERT_TO_ASICII PROC
	mov CX,10H		;Push ten Unpacked BCD Numbers onto Stack
	MOV BX, OFFSET Result	
PUSH_STACK:
	ADD [BX], 3030H		;Convert unpacked BCD to ASICII
	PUSH BX
	ADD BX,1H
	LOOP PUSH_STACK		;Continue untill all 10 numbers on stack
	MOV CX, 10H
	MOV BX, OFFSET Result
POP_STACK:
	POP AX
	MOV [BX], AX
	ADD BX, 1H
	LOOP POP_STACK
	RET
CONVERT_TO_ASICII ENP
	END MAIN

CDSEG	ENDS
	END MAIN