-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathswitch.asm
63 lines (46 loc) · 1.75 KB
/
switch.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
TITLE switch : An AL Program that reads a digit, computes and prints 'P' if
; it is positive, 'N' if it is negative and 'Z' if it is zero
; ( Simulation of switch-case statement ).
.MODEL SMALL
.STACK 100H
.DATA
PROMPT DB 'Enter the digit : $'
MSG DB 'The entered digit is : $'
.CODE
MAIN PROC
MOV AX, @DATA ; initialize DS
MOV DS, AX
LEA DX, PROMPT ; load and print PROMPT
MOV AH, 9
INT 21H
MOV AH, 1 ; read a character
INT 21H
MOV BL, AL ; save the input character into BL
MOV AH, 2 ; carriage return
MOV DL, 0DH
INT 21H
MOV DL, 0AH ; line feed
INT 21H
LEA DX, MSG ; load and print MSG
MOV AH, 9
INT 21H
CMP BL, 30H ; compare input digit and 0
JL @NEGATIVE ; jump to label @NEGATIVE if digit<0
JZ @ZERO ; jump to label @ZERO if digit=0
JG @POSITIVE ; jump to label @POSITIVE if digit>0
@NEGATIVE: ; jump label
MOV DL, 'N'
JMP @DISPLAY ; jump to label @DISPLAY
@ZERO: ; jump label
MOV DL, 'Z'
JMP @DISPLAY ; jump to label @DISPLAY
@POSITIVE: ; jump label
MOV DL, 'P'
JMP @DISPLAY ; jump to label @DISPLAY
@DISPLAY: ; jump label
MOV AH, 2 ; print the character
INT 21H
MOV AH, 4CH ; return control to DOS
INT 21H
MAIN ENDP
END MAIN