Experiment No.: – 10
Aim of the experiment: –
Implementation of a program to communicate data to another 8051-microcontroller using USART module of 8051.(using Keil and 8051 burners)
Apparatus required: –
| Sl. No. | Name | Specification | Quantity |
|---|---|---|---|
Algorithm: –
Aim of the experiment: –
Implementation of a program to add and subtract two 8-bit and 16-bit numbers using different addressing modes.
Apparatus required: –
| Sl. No. | Name | Specification | Quantity |
|---|---|---|---|
| 1 | 8086 Microprocessor Kit | 1 no. | |
| 2 | Keyboard | 1 no. |
Algorithm for 8-bit Addition: –
- Start.
- Load 00H into CL Register (for Carry).
- Load the 1st data into AL Accumulator from Memory.
- Load the 2nd data into BL Register from Memory.
- Add BL with Accumulator AL.
- Jump if no Carry.
- Increment CL by 1.
- Move data from AL to memory location.
- Move data from CL to memory location.
- Stop.
Program: –
| Memory Address | Mnemonics | Opcode | Comments |
|---|---|---|---|
| 1000:0100 | MOV CL, 00H | B1 00 | [CL] <- 00H |
| 1000:0102 | MOV AL, [3000H] | A0 00 30 | [AL] <- [3000H] |
| 1000:0105 | MOV BL, [3001H] | 8A 1E 01 30 | [BL] <- [3001H] |
| 1000:0109 | ADD AL, BL | 02 C3 | [AL] <- [AL] + [BL] |
| 1000:010B | JNC Loop1 | 73 02 | Jump if no carry |
| 1000:010D | INC CL | FE C1 | [CL] <- [CL] + 1 |
| 1000:010F | Loop1: MOV [3002H], AL | A2 02 30 | [3002H] <- [AL] |
| 1000:0112 | MOV [3003H], CL | 88 0E 03 30 | [3003H] <- [CL] |
| 1000:0116 | HLT | F4 | Stop |
Result: –
Algorithm for 8-bit Subtraction: –
- Load 00H into CL Register (for Carry).
- Load the 1st data into AL Accumulator from Memory.
- Load the 2nd data into BL Register from Memory.
- Subtract BL from Accumulator AL.
- Jump if no borrow.
- Increment CL by 1.
- Move data from AL to memory location.
- Move data from CL to memory location.
- Stop.
| Memory Address | Mnemonics | Opcode | Comments |
|---|---|---|---|
| 1000:0100 | MOV CL, 00H | B1 00 | [CL] <- 00H |
| 1000:0102 | MOV AL, [3000H] | A0 00 30 | [AL] <- [3000H] |
| 1000:0105 | MOV BL, [3001H] | 8A 1E 01 30 | [BL] <- [3001H] |
| 1000:0109 | SUB AL, BL | 2A C3 | [AL] <- [AL] – [BL] |
| 1000:010B | JNC Loop1 | 73 02 | Jump if no borrow |
| 1000:010D | INC CL | FE C1 | [CL] <- [CL] + 1 |
| 1000:010F | Loop1: MOV [3002H], AL | A2 02 30 | [3002H] <- [AL] |
| 1000:0112 | MOV [3003H], CL | 88 0E 03 30 | [3003H] <- [CL] |
| 1000:0116 | HLT | F4 | Stop |
Result: –
Algorithm for 16-bit Addition: –
- Load 0000H into CX Register (for Carry).
- Load the 1st data into AX Accumulator from Memory.
- Load the 2nd data into BX Register from Memory.
- Add BX with Accumulator AX.
- Jump if no Carry.
- Increment CX by 1.
- Move data from AX to memory location.
- Move data from CX to memory location.
- Stop.
| Memory Address | Mnemonics | Opcode | Comments |
|---|---|---|---|
| 1000:0100 | MOV CX,0000H | B9 00 00 | [CX] <- 0000H |
| 1000:0103 | MOV AX, [3000H] | A1 00 30 | [AX] <- [3000H] |
| 1000:0106 | MOV BX, [3002H] | 8B 1E 02 30 | [BX] <- [3002H] |
| 1000:010A | ADD AX,BX | 03 C3 | [AX] <- [AX] + [BX] |
| 1000:010C | JNC STORE | 73 01 | Jump if no carry |
| 1000:010E | INC CX | 41 | [CX] <- [CX] + 1 |
| 1000:010F | STORE: MOV [3004H], AX | A3 04 30 | [3004H] <- [AX] |
| 1000:0112 | MOV [3006H], BX | 89 0E 06 30 | [3006H] <- [CX] |
| 1000:0116 | HLT | F4 | Stop |
Result: –
Algorithm for 16-bit Subtraction: –
- Load 0000H into CX Register (for Carry).
- Load the 1st data into AX Accumulator from Memory.
- Load the 2nd data into BX Register from Memory.
- Subtract BX from Accumulator AX.
- Jump if no borrow.
- Increment CX by 1.
- Move data from AX to memory location.
- Move data from CX to memory location.
- Stop.
| Memory Address | Mnemonics | Opcode | Comments |
|---|---|---|---|
| 1000:0100 | MOV CX, 0000H | B9 00 00 | [CX] <- 0000H |
| 1000:0103 | MOV AX, [3000H] | A1 00 30 | [AX] <- [3000H] |
| 1000:0106 | MOV BX, [3002H] | 8B 1E 02 30 | [BX] <- [3002H] |
| 1000:010A | SBB AX,BX | 1B C3 | [AX] <- [AX] – [BX] |
| 1000:010C | JNC STORE | 73 01 | Jump if no borrow |
| 1000:010E | INC CX | 41 | [CX] <- [CX] + 1 |
| 1000:010F | STORE: MOV [3004H], AX | A3 04 30 | [3004H] <- [AX] |
| 1000:0112 | MOV [3006H], CX | 89 0E 06 30 | [3006H] <- [CX] |
| 1000:0116 | HLT | F4 | Stop |
Result: –
Conclusion: –
To be written by student.
Instructions Used –
MOV – for copy data.
ADD – for addition.
SUB/SBB – for subtraction.
JNC – for jump if no carry/borrow.
INC – for increment.
INT A5/HLT – for stop/end.
Program: –
Result: –
Conclusion: –
To be written by student.