8086 program to convert 8 bit BCD number into ASCII Code
Problem – Write an assembly language program in 8086 microprocessor to convert 8 bit BCD number to its respective ASCII Code.
Assumption –
Starting address of program: 400
Input memory location: 2000
Output memory location: 3000
Example :
Input: DATA: 98H in memory location 2000 Output: DATA: 38H in memory location 3000 and 39H in memory location 3001
Algorithm –
- Load contents of memory location 2000 in register AL
- Copy contents of register AL in register AH
- Perform AND operation on register AL with 0F
- Assign 04 to CL Register
- Shift the contents of AH by executing SHR instruction using CL
- Perform OR operation on register AX with 3030
- Store the content of AX in memory location 3000
Program –
Memory Address | Mnemonics | Comments |
---|---|---|
400 | MOV AL, [2000] | AL<-[2000] |
404 | MOV AH, AL | AH<-AL |
406 | AND AL, 0F | AL <- (AL AND 0F) |
408 | MOV CL, 04 | CL <- 04 |
40A | SHR AH, CL | Shift AH content Right by 4 bits(value of CL) |
40C | OR AX, 3030 | AX <- (AX OR 3030) |
40F | MOV [3000], AX | [3000]<-AX |
413 | HLT | Stop Execution |
Explanation –
- MOV AL, [2000]: loads contents of memory location 2000 in AL
- MOV AH, AL: copy contents of AL in AH
- AND AL, 0F: do AND operation on AL with 0F
- MOV CL, 04 assign 04 to CL register
- SHR AH, CL: shift the content of AH register right by 4 bits i.e. value of CL register
- OR AX, 3030: do OR operation on AX with 3030
- MOV [3000], AX: stores the content of AX register pair in 3000 memory address
- HLT: stops executing the program
Please Login to comment...