Skip to content

Instantly share code, notes, and snippets.

@hatim-the-dark-knight
Created April 26, 2022 16:20
Show Gist options
  • Save hatim-the-dark-knight/8f19b1e80e65dcf32a0215b3b64c8849 to your computer and use it in GitHub Desktop.
Save hatim-the-dark-knight/8f19b1e80e65dcf32a0215b3b64c8849 to your computer and use it in GitHub Desktop.
DATA SEGMENT
S1 DB "HELLO$"
VC DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DL,00H
MOV CX,05H
LEA SI,S1
LP:
MOV AL,[SI]
CMP AL,'A'
JZ V_INC
CMP AL,'I'
JZ V_INC
CMP AL,'E'
JZ V_INC
CMP AL,'O'
JZ V_INC
CMP AL,'U'
JZ V_INC
INC SI
LOOP LP
JMP EXIT
V_INC:
INC DL
INC SI
LOOP LP
EXIT:
MOV VC,DL
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
ARR DB 33H, 32H, 45H, 36H, 38H
ODD DB 00H
EVEN DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
LEA SI, ARR
MOV CX, 05H
MOV DL, 00H
MOV DH, 00H
BACK: MOV AL, [SI]
ROR AL, 01H
JC OCOUNT
INC DL
JMP NEXT
OCOUNT: INC DH
NEXT: INC SI
LOOP BACK
MOV ODD, DH
MOV EVEN, DL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
NUM DB 04H
M1 DB "NUMBER IS PRIME$"
M2 DB "NUMBER IS NOT PRIME$"
DATA ENDS
PRINT MACRO MSG
MOV AH,09H
LEA DX,MSG
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,NUM
MOV BL,02H
MOV AH,00H
CMP AL,02H
JC NOT_PRIME
CMP AL,02H
JZ PRIME
LP:
DIV BL
CMP AH,00H
JE NOT_PRIME
MOV AX,0000H
MOV AL,NUM
INC BL
CMP AL,BL
JNE LP
PRIME:
PRINT M1
JMP EXIT
NOT_PRIME:
PRINT M2
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
ARR DB 07H, 12H, 23H, 19H, 03H
SMALLEST DB ?
LARGEST DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,04H ;FIRST ELEMENT IS ALREADY ASSIGNED
LEA SI,ARR
MOV BL,[SI] ;CONTAINS CURRENT SMALLEST
MOV BH,[SI] ;CONTAINS CURRENT LARGEST
INC SI
LP:
MOV AL,[SI]
CMP BL,AL
JC NEXT1 ;JUMP IF BL<AL
MOV BL,AL
NEXT1:
CMP BH,AL
JNC NEXT2 ;JUMP IF BL>AL
MOV BH,AL
NEXT2:
INC SI
LOOP LP
MOV SMALLEST,BL
MOV LARGEST,BH
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
NUM DW 0004H
SQUARE DW ?
CUBE DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,NUM
MOV BX,NUM
MUL BX
MOV SQUARE,AX
MUL BX
MOV CUBE,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
S1 DB "HELLO$"
S2 DB 6 DUP ('$')
M1 DB 'ORIGINAL: $'
NL DB 0AH,0DH,"$"
M2 DB 'REVERSED: $'
DATA ENDS
PRINT MACRO MSG
MOV AH,9
LEA DX,MSG
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
PRINT M1
PRINT S1
MOV CX,05H
LEA SI,S2
LEA DI,S1
ADD DI,04H
LP: MOV AL,[DI]
MOV [SI],AL
INC SI
DEC DI
LOOP LP
PRINT NL
PRINT M2
PRINT S2
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
S1 DB "abABAB$"
UC DB 00H
LC DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DL,00H
MOV DH,00H
MOV CX,06H
LEA SI,S1
LP:
MOV AL,[SI]
CMP AL,'A'
JB V_INC
CMP AL,'Z'
JA V_INC
INC DH ;INC UPPER COUNT
INC SI
LOOP LP
JMP EXIT
V_INC:
INC DL ;INC LOWER COUNT
INC SI
LOOP LP
EXIT:
MOV LC,DL
MOV UC,DH
MOV AH,4CH
INT 21H
CODE ENDS
END START
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment