Upload
precila
View
221
Download
0
Embed Size (px)
DESCRIPTION
fbjhsbjjfnsk
Citation preview
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 103
UNIT-II
2.1) Arithmetic instruction ALPs 2.2) Logical instruction ALPs 2.3) Sorting and String manipulation ALP
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 104
2.1) Arithmetic instruction ALPs:
1) Write an 8086 assembly language program for addition of two ASCII numbers.
PROCEDURE: 1. Start the program
2. Move the data byte 39 to AL register 3. Move the data byte 35 to BL register 4. Add the contents BL to the contents of AL. Result will be stored in AL register. 5. Use the instruction AAA to adjust the result to correct unpacked BCD 5. Stop the program by using Interrupt. PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AL, 39
MOV BL, 35
ADD AL, BL
AAA
INT 3
2) Write an 8086 assembly language program for subtract two ASCII numbers. PROCEDURE: 1. Start the program
2. Move the data byte 39 to AL register 3. Move the data byte 35 to BL register 4. Subtract the contents of BL from the contents of AL. Result will be stored in AX register.
5. Use the instruction AAS to adjust the result to correct unpacked BCD 5. Stop the program by using Interrupt.
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 105
Program: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AL, 39
MOV BL, 35 SUB AL, BL
AAS
INT 3
3) Write an 8086 assembly language program for multiplication of two ASCII numbers.
PROCEDURE: 1. Start the program 2. Move the data byte 09 to AL register 3. Move the data byte to 06 BL register 4. Multiply the contents of AL with the contents of AL. Result will be stored in AX register.
5. Use the instruction AAM to adjust the result to correct unpacked BCD. 6. Stop the program by using Interrupt.
PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AL, 09
MOV BL, 06
MUL BL
AAM
INT 3
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 106
4) Write an 8086 assembly language program for division of two ASCII numbers. PROCEDURE: 1. Start the program 2. Move the data 0507 to AX register 3. Move the data 09 to CH register 4. Use the AAD instruction to adjust the content of AX to correct unpacked BCD before division operation. 5. Divide the contents of AX with the contents of CH. Result will be stored in AX register.
6. Stop the program by using Interrupt. PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0507 MOV CH, 09
AAD
DIV CH
INT 3
5) Write an 8086 assembly language program for GCM of given numbers. PROCEDURE: 1. Start the program 2. Move the data word10000 to AX register 3. Move the data word 3050 to BX register 4. Move the data word 0000 to DX register 5. Move the data word 0004 to CX register 6 Move the data word 3000 to source index register. 7. Move the data word 3010 to destination index register 8. Move the contents of source index register to AX register
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 107
9. Add the contents of destination index register to the contents of AX 10. Move the result in AX to memory location whose offset address is in BX register 11. Increment source index register twice 12. Increment destination index register twice. 13. Increment BX register. 14. Decrement CX register.
15. Check the flag register whether zero flag is set or reset. Jump to specified memory location if it is reset. Otherwise Check the flag register whether borrow flag is set or reset. Jump to specified memory location if it is not set. Otherwise increment DX register.
16. Stop the program by using Interrupt. PROGRAM: -
ADDRESS LABEL MNEMONIC OPERAND MOV AX, 0000
MOV BX, 3050 MOV DX,0000
MOV CX,0004
MOV SI, 3000
MOV DI,3010
L1: MOV AX, [SI] ADC AX, [DI] MOV [BX], AX INC SI
INC SI
INC DI
INC DI
INC BX
INC BX
DEC CX
JNZ L1
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 108
JNB L2
INC DX
L2: INT 3
6) Write an 8086 assembly language program for multi byte subtraction.
PROCEDURE: 1. Start the program 2. Move the data word10000 to AX register 3. Move the data word 3050 to BX register 4. Move the data word 0000 to DX register 5. Move the data word 0004 to CX register 6 Move the data word 3000 to source index register. 7. Move the data word 3010 to destination index register 8. Move the contents of source index register to AX register 9. Subtract the contents of destination index register from the contents of AX 10. Move the result in AX to memory location whose offset address is in BX register 11. Increment source index register twice 12. Increment destination index register twice. 13. Increment BX register twice. 14. Decrement CX register. 15. Check the flag register whether zero flag is set or reset. Jump to specified memory location if it is reset. Otherwise Check the flag register whether borrow flag is set or reset. Jump to specified memory location if it is not set. Otherwise increment DX register.
16. Stop the program by using Interrupt.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0000
MOV BX, 3050 MOV DX,0000
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 109
MOV CX,0004
MOV SI, 3000
MOV DI,3010
L1: MOV AX, [SI] SBB AX, [DI] MOV [BX], AX INC SI
INC SI
INC DI
INC DI
INC BX
INC BX
DEC CX
JNZ L1
JNB L2
INC DX
L2: INT 3
7) Write an 8086 assembly language program for the generation of Fibonacci series.
PROCEDURE: 1. Start the program 2. Move the data 00 to BL register 3. Move the data 01 to DL register 4. Move the data 2500 to CX register 5. Move the data 2600 to source index register 6. Move the contents of BL to the memory location whose offset address is specified in SI 7. Increment source index register 8. Move the contents of DL to the memory location whose offset address is specified in SI
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 110
9. Add the contents of DL with the contents of BL and store the result in BL 10. Exchange the contents of BL and DL 11. Repeat from step 7 until count in CX register is equal to zero. 12. Stop the program by using Interrupt.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV BL, 00
MOV DL, 01
MOV CX, 0005 MOV SI, 2600
MOV [SI], BL L1: INC SI
MOV [SI], DL ADD BL, DL
XCHG BL, DL
LOOP L1
INT 3
8) Write an 8086 assembly language program for finding the factorial of a given number. PROCEDURE: 1. Start the program 2. Move the contents of data from the memory location [2500] to AL register 3. Move the contents of AL to CL register. 4. Decrement the contents of CX register
5. Multiply the contents of CL with the contents of AL. Result will be stored in AX register. Repeat the multiplication until count in CX register is equal to zero.
6. Move the result to the memory location 2600 7. Stop the program by using Interrupt.
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 111
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV SI, 2500 MOV DI, 2600
MOV AX, [SI] MOV CX, AX
DEC CX
L1: MUL CX
LOOP LI
MOV [DI], AX INT 3
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 112
2.2) Logical instructions ALPs:
Packed BCD to Unpacked BCD Logical OR on two numbers Logical AND on 2 numbers Logical NOT on two numbers Logical TEST operation
Rotate left through carry on a given number Rotate right through carry on a given number Rotate left operation on a given number Rotate right operation on a given number Shift arithmetic right on a given number Shift given number right (SHR) Shift given number left (SHL) Conversion of ASCII to BCD
Conversion of BCD to ASCII
1) Write an 8086 assembly language program for conversion of packed to unpacked BCD. PROCEDURE: 1. Start the program 2. Move the data 00 to AL register 3. Move the data 00 to AH register 4. Move the content of AL to BL
5. Move the data 3010 to destination index 6. Perform logical AND operation on the contents of AL and 0F 7. Move this RESULT in AL to the memory location whose offset address is specified in destination index. 8. Increment destination index register. 9. Move the data 04 to CL register 10. Shift right the content of BL by CL times.
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 113
11. Move the contents of BL to the memory location whose offset address is stored in destination index. 12. Increment destination index register. 13. Now perform the AND operation on contents of AH register. Repeat the steps from 8
to 12 by replacing BL by BH 14. Stop the program by using Interrupt.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AL, 34
MOV AH, 12
MOV BL, AL
MOV BH, AH
MOV DI, 3010
AND AL, 0F
MOV [DI], AL INC DI
MOV CL, 04
SHR BL, CL
MOV [DI], BL INC DI
AND AH, 0F
MOV [DI], AH INC DI
SHR BH, CL
MOV [DI], BH INT 3
2) Write an 8086 assembly language program for logical OR operation.
PROCEDURE:
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 114
1. Start the program 2. Move the data 1234 to AX register 3. Move the data FFFH to BX register 4. OR the contents of BX and the contents of AX. Result will be stored in AX register. 5. Stop the program by using Interrupt.
PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 1234
MOV BX, 0FFFF
OR AX, BX
INT 3
3) Write an 8086 assembly language program for logical AND operation. PROCEDURE: 1. Start the program
2. Move the data 0012 to AX register 3. Move the data FFFH to BX register 4. AND the contents of BX and the contents of AX. Result will be stored in AX register. 5. Stop the program by using Interrupt.
PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0012
MOV BX, 0FFFF
AND AX, BX
INT 3
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 115
4) Write an 8086 assembly language program for logical NOT operation. PROCEDURE: 1. Start the program 2. Move the data FFFF to AX register 3. NOT the contents of AX. Result will be stored in AX register. 5. Stop the program by using Interrupt.
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0FFFF
NOT AX
INT 3
5) Write an 8086 assembly language program for logical TEST operation. PROCEDURE: 1. Start the program
2. Move the data 0F to AL register 3. Move the data 00 to BL register 4. TEST the contents of AL and the contents of BL. Result will be stored in AL register. 5. Stop the program by using Interrupt.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AL, 0F
MOV BL, 00
TEST AL, BL
INT 3
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 116
6) Write an 8086 assembly language program for rotate left through carry. PROCEDURE: 1. Start the program 2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Rotate the contents of AX register left through carry by the content of CL times. Result will be stored in AX register. 5. Stop the program by using Interrupt.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
RCL AX, CL
INT 3
7) Write an 8086 assembly language program for rotate right through carry. PROCEDURE: 1. Start the program 2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Rotate the contents of AX register right through carry by the content of CL times. Result will be stored in AX register. 5. Stop the program by using Interrupt.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 117
RCR AX, CL
INT 3
8) Write an 8086 assembly language program for rotate left.
PROCEDURE: 1. Start the program
2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Rotate the contents of AX register left by the content of CL times. Result will be stored in AX register.
5. Stop the program by using Interrupt.
PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
ROL AX, CL
INT 3
9) Write an 8086 assembly language program for rotate right operation. PROCEDURE: 1. Start the program 2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Rotate the contents of AX register right by the content of CL times. Result will be stored in AX register. 5. Stop the program by using Interrupt.
PROGRAM: -
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 118
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
ROR AX, CL
INT 3
10) Write an 8086 assembly language program for shift arithmetic right operation. PROCEDURE: 1. Start the program 2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Shift the contents of AX register right by the content of CL times. Result will be stored in AX register.
5. Stop the program by using Interrupt.
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
SAR AX, CL
INT 3
11) Write an 8086 assembly language program for shift left operation. PROCEDURE: 1. Start the program 2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Shift the contents of AX register left by the content of CL times. Result will be stored in AX register.
5. Stop the program by using Interrupt.
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 119
PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
SHL AX, CL
INT 3
12) Write an 8086 assembly language program for rotate right operation. PROCEDURE: 1. Start the program
2. Move the data AAAA to AX register 3. Move the data 01 to CL register 4. Rotate the contents of AX register right by the content of CL times. Result will be stored in AX register. 5. Stop the program by using Interrupt.
PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV AX, 0AAAA
MOV CL, 01
SHR AX, CL
INT 3
13) Write an 8086 assembly language program for conversion of ASCII to BCD. PROCEDURE: 1. Start the program
2. Move the data 000A to CX register
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 120
3. Move the data 3000 to source index 4. Move the data 4000 to destination index 5. Move the contents of source index to AX register. 6. Add 02 to SI 7. Call the subroutine below 8. Move the contents of AX to the memory location whose offset address is specified in destination index. 9. Add 02 to destination index. 10. Decrement CX 11. Check the flag register whether zero flag is set or reset. Jump to specified memory location if zero flag not set. Otherwise terminate the program. Subroutine: -
Move data 000F to BX register. Add the contents of BX to the contents of AX Return to main program.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV CX,000A
MOV SI, 3000
MOV DI, 4000
TOP: MOV AX, [SI] ADD SI, 02
CALL BELOW
MOV [DI], AX ADD DI, 02
DEC CX
JNZ TOP
INT 3
BELOW: MOV BX, 0F0F
AND AX, BX
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 121
RET
14) Write an 8086 assembly language program for conversion of BCD to ASCII. PROCEDURE: 1. Start the program 2. Move the data 000A to CX register 3. Move the data 3000 to source index 4. Move the data 4000 to destination index 5. Move the contents of source index to AX register. 6. Add 02 to SI 7. Call the subroutine below 8. Move the contents of AX to the memory location whose offset address is specified in destination index. 9. Add 02 to destination index. 10. Decrement CX 11. Check the flag register whether zero flag is set or reset. Jump to specified memory location if zero flag not set. Otherwise terminate the program. Subroutine: -
Move data 3030 to BX register. OR the contents of BX to the contents of AX
Return to main program.
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV CX, 000A
MOV SI, 3000
MOV DI, 4000
TOP: MOV AX, [SI] ADD SI, 02
CALL BELOW
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 122
MOV [DI], AX ADD DI, 02
DEC CX
JNZ TOP
INT 3
BELOW: MOV BX, 3030
OR AX, BX
RET
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 123
2.3) Sorting and String manipulation ALPS:
1) Write an 8086 assembly language program for sort the numbers in ascending order.
PROCEDURE: 1. Start the program
2. Move the data 2100 to DX register 3. Move the data 2102 to source index and destination index 4. Decrement DX
5. Move the contents of DX to CX 6. Move the contents of SI to AX 7. Add 02 to DI 8. Compare the contents of AX and contents of destination index 9. Jump if less than or equal to one to the specified memory location. 10. Exchange the contents of Ax and the contents of destination index. 11. Repeat from step 2 until count in the CX register is equal to zero. 12. Exchange the contents of Ax and the contents of source index. 13. Add 02 to SI 14. Move the contents of source index to destination index. 15. Decrement DX 16. Jump if not equal to specified location. 17. Stop the program by using Interrupt. PROGRAM: -
ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV DX, 0004
MOV SI, 2102
MOV DI, 2102
DEC DX
L 3: MOV CX, DX
MOV AX, [SI] L2: ADD DI, 02
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 124
CMP AX, [DI] JLE L1
XCHG AX, [DI] L1: LOOP L2
XCHG AX, [SI] ADD SI, 02
MOV DI, SI
DEC DX
JNE L3
INT 3
2) Write an 8086 assembly language program for sort the numbers in descending order. PROCEDURE: 1. Start the program 2. Move the data 2100 to DX register 3. Move the data 2102 to source index and destination index 4. Decrement DX
5. Move the contents of DX to CX 6. Move the contents of SI to AX 7. Add 02 to DI 8. Compare the contents of AX and contents of destination index 9. Jump if not less than to the specified memory location. 10. Exchange the contents of Ax and the contents of destination index. 11. Repeat from step 2 until count in the CX register is equal to zero. 12. Exchange the contents of Ax and the contents of source index. 13. Add 02 to SI 14. Move the contents of source index to destination index. 15. Decrement DX 16. Jump if not equal to specified location. 17. Stop the program by using Interrupt.
NRI Institute Of Technology
CSE III B.Tech I SEMESTER MPI 125
PROGRAM: - ADDRESS OPCODE LABEL MNEMONIC OPERAND MOV DX, 0004
MOV SI, 2102
MOV DI, 2102
DEC DX
L 3: MOV CX, DX
MOV AX, [SI] L2: ADD DI, 02
CMP AX, [DI] JNL L1
XCHG AX, [DI] L1: LOOP L2
XCHG AX, [SI] ADD SI, 02
MOV DI, SI
DEC DX
JNE L3
INT 3