.MODEL TINY
.DATA
MSG DB "Hello, World!$"
.CODE
MAIN PROC
MOV AH, 02H
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
MOV AH, 09H
LEA DX, MSG
CALL DEMO
MOV AH, 4CH
INT 21H
MAIN ENDP
DEMO PROC
INT 21H
RET
DEMO ENDP
END MAIN
.MODEL TINY
.DATA
STR DB 50 DUP(?)
.CODE
MAIN PROC
MOV SI, 0
MOV AH, 01H
TAKE_INPUT:
INT 21H
MOV STR[SI], AL
INC SI
CMP AL, 0DH
JNE TAKE_INPUT
DEC SI
MOV AH, 02H
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
MOV CX, SI
MOV SI, 0
PRINT_LOOP:
MOV DL, STR[SI]
AND DL, 223
INT 21H
INC SI
LOOP PRINT_LOOP
MAIN ENDP
END MAIN
.MODEL TINY
.DATA
NSTR DB 50 DUP(?)
.CODE
MAIN PROC
MOV SI, 0
MOV AH, 01H
INPUT_TAKE:
INT 21H
MOV NSTR[SI], AL
INC SI
CMP AL, 0DH
JNE INPUT_TAKE
DEC SI
MOV AH, 02H
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
MOV CX, SI
MOV DI, 0
PRINT:
MOV DL, NSTR[DI]
OR DL, 00100000B
INT 21H
INC DI
LOOP PRINT
MOV AH, 4CH
INT 21H
ENDP MAIN
END MAIN
.MODEL TINY
.DATA
NSTR DB "***** ***** * * *", 13, 10, "* * * * * * *", 13, 10, "* * * * * *****", 13, 10, "* * * * * *", 13, 10, "***** ***** * *", "$"
.CODE
MAIN PROC
MOV AH, 09H
LEA DX, NSTR
INT 21H
MOV AH, 4CH
INT 21H
ENDP MAIN
END MAIN
.MODEL TINY
.DATA
TEMP DB ?
.CODE
MAIN PROC
MOV AH, 01H
INT 21H
SUB AL, '0'
MOV BL, 2
MUL BL
SUB AL, 1
MOV TEMP, AL
MOV AH, 02H
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
MOV BL, TEMP
LOOP1:
MOV CL, TEMP
SUB CL, BL
CMP CL, 1
JL SKIP_SPACE
SPACE_LOOP:
MOV DL, ' '
INT 21H
LOOP SPACE_LOOP
SKIP_SPACE:
MOV CL, BL
LOOP2:
MOV DL, '0'
ADD DL, CL
INT 21H
MOV DL, ' '
INT 21H
LOOP LOOP2
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
SUB BL, 2
CMP BL, 0
JG LOOP1
MOV BL, 1
LOOP3:
ADD BL, 2
MOV CL, TEMP
SUB CL, BL
CMP CL, 1
JL SKIP_SPACE2
SPACE_LOOP2:
MOV DL, ' '
INT 21H
LOOP SPACE_LOOP2
SKIP_SPACE2:
MOV CL, BL
LOOP4:
MOV DL, '0'
ADD DL, CL
INT 21H
MOV DL, ' '
INT 21H
LOOP LOOP4
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
CMP BL, TEMP
JNE LOOP3
MOV AH, 4CH
INT 21H
ENDP MAIN
END MAIN
.MODEL TINY
.DATA
DI1 DB ?
DI2 DB ?
DI3 DB ?
DI4 DB ?
.CODE
MAIN PROC
MOV AH, 01H
INT 21H
MOV BL, AL
CALL CHECK
MOV DI1, BL
INT 21H
MOV BL, AL
CALL CHECK
MOV DI2, BL
INT 21H
MOV BL, AL
CALL CHECK
MOV DI3, BL
INT 21H
MOV BL, AL
CALL CHECK
MOV DI4, BL
MOV AH, 02H
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
MOV BL, DI1
CALL PRINT_BINARY
MOV BL, DI2
CALL PRINT_BINARY
MOV BL, DI3
CALL PRINT_BINARY
MOV BL, DI4
CALL PRINT_BINARY
MOV AH, 4CH
INT 21H
MAIN ENDP
CHECK PROC
CMP BL, 48
JL SKIP_NUMBER
CMP BL, 57
JG SKIP_NUMBER
SUB BL, 48
JMP END_CHECK
SKIP_NUMBER:
CMP BL, 65
JL END_CHECK
CMP BL, 70
JG END_CHECK
SUB BL, 55
END_CHECK:
RET
CHECK ENDP
PRINT_BINARY PROC
MOV CL, 4
ROL BL, 4
PRINT_LOOP:
ROL BL, 1
JC PRINT_ONE
MOV DL, '0'
JMP PRINT_NUMBER
PRINT_ONE:
MOV DL, '1'
PRINT_NUMBER:
INT 21H
LOOP PRINT_LOOP
MOV DL, ' '
INT 21H
RET
PRINT_BINARY ENDP
END MAIN
.MODEL TINY
.DATA
STR DB 50 DUP(?)
PALIDROM DB "Palindrome$"
NOTPALIDROM DB "Not a Palindrome$"
.CODE
MAIN PROC
MOV AH, 01H
MOV SI, 0
MOV DI, 0
INPUT_LOOP:
INT 21H
MOV STR[SI], AL
INC SI
CMP AL, 13
JNE INPUT_LOOP
DEC SI
DEC SI
MOV AH, 02H
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
MOV DI, 0
PALIDROME_CHECK:
MOV BH, STR[SI]
MOV BL, STR[DI]
CMP BH, BL
JNE NOT_PLIDROME
DEC SI
INC DI
MOV BX, SI
SUB BX, DI
CMP BX, 0
JG PALIDROME_CHECK
LEA DX, PALIDROM
JMP EXIT
NOT_PLIDROME:
LEA DX, NOTPALIDROM
EXIT:
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
.MODEL TINY
.DATA
.CODE
MAIN PROC
MOV AH, 01H
INT 21H
SUB AL, '0'
MOV CL, AL
MOV DL, AL
MOV AL, 1
MOV BL, 1
SUB CL, 1
MOV DH, 3
LOOP1:
MUL DH
ADD BL, AL
LOOP LOOP1
MOV AL, 2
MUL DL
MOV DL, AL
MOV AL, BL
DIV DL
MOV BL, AL ; QUOTIENT
MOV BH, AH ; REMIDER
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN