Problem – Write an assembly language program in 8086 microprocessor to find sum of digit of an 8 bit number using 8 bit operation.
Example – Assume 8 bit number is stored at memory location 2050.

Assumptions – Addresses of input data and output data are 2050 and 2051 respectively.
Algorithm –
- Load contents of memory location 2050 in register AL
- Copy content of register AL to register AH
- Assign 0004 to CX Register Pair
- Do AND operation on content of AL with 0F and store result in AL
- Rotate the contents of AH by executing ROL instruction using CX
- Do AND operation on content of AH with 0F and store result in AH
- Add AL and AH content and store result in AL
- Store the content of AL in memory location 2051
Program –
Memory Address | Mnemonics | Comments |
---|
400 | MOV AL, [2050] | AL<-[2050] |
404 | MOV AH, AL | AH<-AL |
406 | MOV CX, 0004 | CX <- 0004 |
409 | AND AL, 0F | AL <- AL & 0F |
40B | ROL AH, CX | Rotate AH content left by 4 bits(value of CX) |
40D | AND AH, 0F | AH <- AH & 0F |
40F | ADD AL, AH | AL<-AL+AH |
411 | MOV [2051], AL | [2051]<-AL |
415 | HLT | Stop Execution |
Explanation –
- MOV AL, [2050]: loads contents of memory location 2050 in AL
- MOV AH, AL: copy content of register AL to register AH
- MOV CX, 0004: assign 0004 to CX register pair
- AND AL, 0F: does AND operation on content of AL with 0F and store result in AL
- ROL AH, CX: rotate the content of AH register left by 4 bits i.e. value of CX register pair
- AND AH, 0F: does AND operation on content of AH with 0F and store result in AH
- ADD AL, AH: add AL and AH content and store result in AL
- MOV [2051], AL: stores the content of AL in 2051 memory address
- HLT: stops executing the program