30-Module 2 - 8086 Programming-22-03-2024
30-Module 2 - 8086 Programming-22-03-2024
ORG 100H
INC BX
INC BX
MOV AL, 0H
DEC BX
DEC BX
MOV BL, 3H
DIV BL
RET
FACTORIAL (JNZ)
ORG 100H
;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;
LAB: MUL BL
DEC BL
JNZ LAB
;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;
RET
FACTORIAL (LOOP)
ORG 100H
;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;
LAB: MUL BL
DEC BL
JNZ LAB
;;;;;;;;;;;;;;;;;;;;LOOP;;;;;;;;;;;;;;;;;
RET
REVERSING AN ARRAY
DATA SEGMENT
STR1 DB 01H,02H,05H,03H,04H
STR2 DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
LEA SI, STR1
LEA DI, STR2+4
MOV CX, 05H
BACK: CLD
MOV AL, [SI]
MOV [DI], AL
INC SI
DEC DI
DEC CX
JNZ BACK
CODE ENDS
END START
;
MOVING A STRING
.ORG 100H
MOV DS, AX
INC SI
INC SI
MOV DS, AX
MOV ES, AX
CLD
REP MOVSB
MOV DS, AX
INC DI
MOV AL, [DI]
INC DI
RET
.ORG 100H
MOV DS, AX
INC SI
MOV [SI], 68H
INC SI
MOV DS, AX
INC DI
INC DI
MOV DS, AX
MOV ES, AX
CLD
; IF SAME ZF=1, DIFFERENT ZF=0
REPE CMPSB
RET
SCANNING A STRING
; YOU MAY CUSTOMIZE THIS AND OTHER START-UP TEMPLATES;
; THE LOCATION OF THIS TEMPLATE IS
C:\EMU8086\INC\0_COM_TEMPLATE.TXT
ORG 100H
MOV DS, AX
INC SI
INC SI
MOV ES, AX
REPNE SCASB
RET
ASSUME CS:CODE,DS:DATA1
DATA1 SEGMENT
A DB 02H
B DB 05H
SUM DB ?
CARRY DB 00H
DATA1 ENDS
CODE SEGMENT
START:
MOV AX,DATA1
MOV DS, AX
MOV AL, A
MOV BL, B
ADD AL, BL
JNC GO
END START
CODE ENDS
END
RET
DATA SEGMENT
DATA ENDS
CODE SEGMENT
START:
MOV DS, AX
ADD AX, BX
INC SI
DEC CX
JNZ LP
MOV [DI], AX
; MOV RESULT, AX
INT 21H
CODE ENDS
END START
RET
DATA SEGMENT
OPR1 DB 42H
OPR2 DB 98H
DATA ENDS
CODE SEGMENT
START:
MOV DS, AX
MOV AX, 0000H
ADD AL, BL
DAA
MOV [SI], AL
JNC MSB0
MOV AH,01H
INC SI
MOV [SI], AH
INT 21H
CODE ENDS
END START
RET
DATA SEGMENT
OPR1 DB 63H
OPR2 DB 86H
DATA ENDS
CODE SEGMENT
START:
MOV DS, AX
SUB AL, BL
DAS
JNC MSB0
MOV BH, AL
SUB AL, BH
DAS
DAA
MSB0: MOV AH, 00H
INT 21H
CODE ENDS
END START
RET
MATRIX ADDITION
DATA SEGMENT
MAT1 DB 01H, 02H, 03H, 07H, 02H, 06H, 04H, 02H, 05H ;3X3 1X9
MAT2 DB 05H, 07H, 08H, 02H, 02H, 04H, 03H, 01H, 06H ;3X3 1X9
DATA ENDS
CODE SEGMENT
START:
MOV DS, AX
ADD AL, DL
INC DI
INC SI
DEC CX
JNZ LP
INT 21H
CODE ENDS
END START
RET
DATA SEGMENT
NUM EQU 36
RESULT DB ?
DATA ENDS
CODE SEGMENT
START:
MOV DS, AX
MOV BL, 1
MOV AL, 0
UP:CMP CL, 0
JZ ZERO
SUB CL, BL
INC AL
ADD BL, 02
JMP UP
MOV AH, 00
INT 21H
CODE ENDS
END START
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
MSG1 DB 'HELLO',0
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET MSG1
MOV CX,0005H
MOVE:
MOV AH,02H
MOV DL,[BX]
INT 21H
INC BX
DEC CX
JNZ MOVE
MOV AH,00H
INT 21H
CODE ENDS
END START