-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path16BitAdd.asm
75 lines (59 loc) · 1.44 KB
/
16BitAdd.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
; 16 BIT ADDTION IN MASM
; OUTPUT FORMAT: CARRY - FIRST_DIGIT - SECOND_DIGIT
ASSUME DS: DATA , CS: CODE
DATA SEGMENT
MSG1 DB 13,10, "ENTER FIRST NUMBER: $"
MSG2 DB 13,10, "ENTER SECOND NUMBER: $"
MSG3 DB 13,10, "SUM: $"
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
LEA DX, MSG1
MOV AH, 09H
INT 21H
MOV AH, 01H
INT 21H
MOV BH, AL
MOV AH, 01H
INT 21H
MOV BL, AL
LEA DX, MSG2
MOV AH, 09H
INT 21H
MOV AH, 01H
INT 21H
MOV CH, AL
MOV AH, 01H
INT 21H
MOV CL, AL
MOV AL,BL
MOV AH, 00H ; CLEAR
ADD AL,CL
AAA
ADD AX, 3030H
MOV BL, AL ; LOWER VALUE OF RESULT
MOV AL, AH ; MOVE CARRY TO AL BEFORE AAA
MOV AH, 00H; CLEAR
ADD AL, BH
ADD AL, CH
AAA
ADD AX, 3030H
MOV BH, AL
MOV CL, AH
LEA DX, MSG3
MOV AH, 09H
INT 21H ; PRINT "SUM: "
MOV DL, CL
MOV AH, 02H
INT 21H ; PRINT CARRY
MOV DL, BH
MOV AH, 02H
INT 21H ; PRINT NEXT DIGIT
MOV DL, BL
MOV AH, 02H
INT 21H ; PRINT LAST DIGIT
MOV AH, 4CH
INT 21H
CODE ENDS
END START