-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.asm
804 lines (601 loc) · 10.8 KB
/
main.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
.model small
DATA SEGMENT
Main_Menu db 10,13,' -:MAIN DISPLAY CONVERTER:- ',10,13
db '********************************************************************************'
db '********************************************************************************',10,13
db ' MAIN MENU ',10,13
;db '
db ' Press 1 for TEMPERATURE CONVERTOR ',10,13
db ' Press 2 for VOLUME CONVERTOR',10,13
db ' Press 3 for CURRENCY CONVERTOR',10,13
db ' Press 4 for MASS CONVERTOR',10,13
db ' ',10,13
db ' Press X to Exit CODE ',10,13
db 10,13,'********************************************************************************'
db '********************************************************************************$'
menuM db 10,13,' -:MASS CONVERTER:- ',10,13
db '********************************************************************************'
db '********************************************************************************',10,13
db ' MENU ',10,13
db ' Press 0 for KILOGRAM : ',10,13
db ' Press 1 for POUND : ',10,13
db ' Press X to Exit FOR CURRENCY MENU ',10,13
db 10,13,'********************************************************************************'
db '********************************************************************************$'
MSGm1 DB 10,13,"ENTER MASS IN KILOGRAM() : $"
MSGm2 DB 10,13,"CONVERTED IS US GRAM (MASS) : $"
MSGm3 DB 10,13,"ENTER MASS IN POUND() : $"
MSGm4 DB 10,13,"CONVERTED IS US GRAM (MASS) : $"
menuC db 10,13,' -:CURRENCY CONVERTER:- ',10,13
db '********************************************************************************'
db '********************************************************************************',10,13
db ' MENU ',10,13
db ' Press 0 for US DOLLLAR : ',10,13
db ' Press 1 for QAWAIT DINAR : ',10,13
db ' Press 2 for SAUDI RIYAAL :',10,13
db ' Press 3 for CHINESE YUHAAN ',10,13
db ' Press X to Exit FOR CURRENCY MENU ',10,13
db 10,13,'********************************************************************************'
db '********************************************************************************$'
MSGc1 DB 10,13,"ENTER CURRENCY IN PAKISTAN(.RS) : $"
MSGc2 DB 10,13,"CONVERTED IS US DOLLAR (CURRENCY) : $"
MSGc3 DB 10,13,"CONVERTED IS QAWAIT DINAR (CURRENCY) : $"
MSGc4 DB 10,13,"CONVERTED IS SAUDI RIYAAL (CURRENCY) : $"
MSGc5 DB 10,13,"CONVERTED IS CHINESE YUHAAN (CURRENCY) : $"
menuV db 10,13,' -:VOLUME CONVERTER:- ',10,13
db '********************************************************************************'
db '********************************************************************************',10,13
db ' MENU ',10,13
db ' Press 0 for LITER ',10,13
db ' Press 1 for GALLON ',10,13
db ' Press X to Exit FOR VOLUME MENU ',10,13
db 10,13,'********************************************************************************'
db '********************************************************************************$'
MSGV1 DB 10,13,"ENTER VOLUME IN LITER : $"
MSGV2 DB 10,13,"CONVERTED IS MILLILITER (VOLUME) : $"
MSGV3 DB 10,13,"ENTER VOLUME IN GALLON : $"
MSGV4 DB 10,13,"CONVERTED IS MILLILITER (VOLUME) : $"
V DB ?
A DW ?
menuT db 10,13,' -:TEMPERATURE CONVERTER:- ',10,13
db '********************************************************************************'
db '********************************************************************************',10,13
db ' MENU ',10,13
db ' Press 0 for CELSIUS -> FAHRENHEIT ',10,13
db ' Press 1 for FAHRENHEIT -> CELSIUS ',10,13
db ' Press X to Exit FOR TEMPERATURE MENU ',10,13
db 10,13,'********************************************************************************'
db '********************************************************************************$'
T DB ?
RES DB 10 DUP ('$')
MSG1 DB 10,13,"ENTER TEMPERATURE IN CELSIUS (ONLY IN 2 DIGITS) : $"
MSG2 DB 10,13,"CONVERTED IS FAHRENHEIT (TEMPERATURE) : $"
MSG3 DB 10,13,"ENTER TEMPERATURE IN FAHRENHEIT (ONLY IN 2 DIGITS) : $"
MSG4 DB 10,13,"CONVERTED IS CELSIUS (TEMPERATURE) : $"
str DB 10,13,"ENTER ANY NUMBER : $"
ms2 DB 10,13,"PLEASE ENTER CORRECT NUMBER... $"
C DW ?
str10 db 10,13,10,13,'********************************************************************************'
db '********************************************************************************'
db 10,13," THANK YOU... :) ",10,13,10,13
db ' For Using : ',10,13,10,13
db ' "UNIT CONVERTER" ',10,13,10,13
db ' GOOD BYE... :) ',10,13
db ' STAY HAPPY.... :) ',10,13
db 10,13,'********************************************************************************'
db '********************************************************************************$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
TEMP:
MOV AX,DATA
MOV DS,AX
LEA DX,str7
MOV AH,9
INT 21H
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
mov ah,00
int 16h
m_menu:
mov ah,00
mov al,02
int 10h
LEA DX,Main_Menu
MOV AH,9
INT 21H
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
;userinput
mov dx,offset str
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,al
;now compare
mov al,bl
cmp al,'1'
je while_
cmp al,'2'
je v_menu
cmp al,'3'
je c_menu
cmp al,'4'
je m_men
cmp al,'X'
jmp end_
mov dx,offset ms2
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
jmp m_menu
while_:
LEA DX,menuT
MOV AH,9
INT 21H
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
;userinput
mov dx,offset str
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,al
;now compare
mov al,bl
cmp al,'0'
je cels
cmp al,'1'
je fahrn
cmp al,'2'
;je klv
cmp al,'3'
;je ckl
cmp al,'4'
;je klc
cmp al,'5'
;je fhrk
cmp al,'X'
;jmp end_
mov dx,offset ms2
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
jmp while_
cels:
call C_F
fahrn:
call F_C
;klv:
;call K_F
;ckl:
;call C_K
;klc:
;call K_C
;fhrk:
;call F_K
MOV AH,00
INT 16H
end_:
LEA DX,str10
MOV AH,9
INT 21H
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
mov ah,00
int 16h
MOV AH,4CH
INT 21H
CODE ENDS
;celsius to fahrenheit
C_F PROC NEAR
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV AH,0
MOV BL,10
MUL BL
MOV BL,AL
MOV AH,1
INT 21H
SUB AL,30H
MOV AH,0
ADD AL,BL
MOV T,AL
MOV DL,9
MUL DL
MOV BL,5
DIV BL
MOV AH,0
ADD AL,32
LEA SI,RES
MOV CX,0
MOV BX,10
LOOP1: MOV DX,0
DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
LEA DX,MSG2
MOV AH,9
INT 21H
LEA DX,RES
MOV AH,9
INT 21H
MOV AH,00
INT 16H
RET
C_F ENDP
F_C PROC NEAR
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV AH,0
MOV BL,10
MUL BL
MOV BL,AL
MOV AH,1
INT 21H
SUB AL,30H
MOV AH,0
ADD AL,BL
MOV T,AL
SUB AL,32
MOV DL,5
MUL DL
MOV BL,9
DIV BL
MOV AH,0
LEA SI,RES
MOV CX,0
MOV BX,10
LOOPE1: MOV DX,0
DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOPE1
ADD AL,30H
MOV [SI],AL
LOOPE2: POP AX
INC SI
MOV [SI],AL
LOOP LOOPE2
LEA DX,MSG4
MOV AH,9
INT 21H
LEA DX,RES
MOV AH,9
INT 21H
MOV AH,00
INT 16H
RET
F_C ENDP
;VOLUME CONVERTER START HERE..
v_menu:
mov dx,offset menuV
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
;userinput
mov dx,offset str
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,al
;now compare
mov al,bl
cmp al,'0'
je L_M
cmp al,'1'
je G_M
cmp al,'2'
;je klv
cmp al,'3'
;je ckl
cmp al,'4'
;je klc
cmp al,'5'
;je fhrk
cmp al,'X'
jmp end_
mov dx,offset ms2
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
jmp v_menu
; liter to milli_liter convertor
L_M PROC
LEA DX,MSGV1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BX,1000h
MUL BL
LEA DX,MSGV2
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
L_M endp
; Gallon to milli_litter
G_M PROC
LEA DX,MSGV3
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BX,4546h
MUL BL
LEA DX,MSGV4
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
G_M endp
;CURRENCY CONVERTER START HERE..
c_menu:
mov dx,offset menuC
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
;userinput
mov dx,offset str
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,al
;now compare
mov al,bl
cmp al,'0'
je P_U
cmp al,'1'
je P_Q
cmp al,'2'
je P_S
cmp al,'3'
je P_Y
cmp al,'4'
;je klc
cmp al,'5'
;je fhrk
cmp al,'X'
jmp end_
mov dx,offset ms2
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
jmp c_menu
; PAKISTAN(.RS) to US DOLLAR($) convertor
P_U PROC
LEA DX,MSGc1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BX,160h
MUL BL
LEA DX,MSGc2
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
P_U endp
; PAKISTAN(.RS) to US QAWAIT DINAR convertor
P_Q PROC
LEA DX,MSGc1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BX,490h
MUL BL
LEA DX,MSGc3
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
P_Q endp
; PAKISTAN(.RS) to SAUDI RIYAAL convertor
P_S PROC
LEA DX,MSGc1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,47h
MUL BL
LEA DX,MSGc4
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
P_S endp
; PAKISTAN(.RS) to CHINESE YUHAAN convertor
P_Y PROC
LEA DX,MSGc1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,24h
MUL BL
LEA DX,MSGc5
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
P_Y endp
;MASS CONVERTER START HERE..
m_men:
mov dx,offset menuM
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
;userinput
mov dx,offset str
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,al
;now compare
mov al,bl
cmp al,'0'
je K_G
cmp al,'1'
je P_G
cmp al,'2'
;je klv
cmp al,'3'
;je ckl
cmp al,'4'
;je klc
cmp al,'5'
;je fhrk
cmp al,'X'
jmp end_
mov dx,offset ms2
mov ah,9
int 21h
mov dx,10
mov ah,2
int 21h
mov dx,13
mov ah,2
int 21h
jmp m_men
; KILOGRAM to GRAM convertor
K_G PROC
LEA DX,MSGm1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BX,1000h
MUL BL
LEA DX,MSGm2
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
K_G endp
; POUND to GRAM
P_G PROC
LEA DX,MSGm3
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BX,454h
MUL BL
LEA DX,MSGm4
MOV AH,9
INT 21H
;ADD ax,10h
MOV AH,2
MOV Dx,Ax
INT 21H
MOV AH,00
INT 16H
P_G endp
END TEMP