Question Bank 2-1

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

Q1. Attempt the following.

1. Write ALP for addition of two 8bit numbers. Assume suitable data. 2 M
Ans .Model small
.Data NUM DB 12H
.Code
START: MOV AX, @DATA
MOV DS,AX
MOV AL, NUM
MOV AH,13H
ADD AL,AH
MOV AH, 4CH
INT 21H
ENDS
END
2. How single stepping or tracing is implemented in 8086? 2 M
Ans By setting the Trap Flag (TF) the 8086 goes to single-step mode. In this mode, after the
implementation of every instruction s 8086 generates an internal interrupt and by writing
some interrupt service routine we can show the content of desired registers and memory
locations. So it is useful for debugging the program. OR If the trap flag is set, the 8086 will
automatically do a type-1 interrupt after each instruction executes.
When the 8086 does a type-1 interrupt, it pushes the flag register on the stack.
OR
The instructions to set the trap flag are:
PUSHF ; Push flags on stack
MOV BP,SP ; Copy SP to BP for use as index
OR
WORD PTR[BP+0],0100H ; Set TF flag
POPF ; Restore flag Register
3. List any four instructions from the bit manipulation instructions of 8086. 2 M
Ans Bit Manipulation Instructions These instructions are used to perform operations where
data bits are involved,
i.e. operations like logical, shift, etc.
Following is the list of instructions under this group
− Instructions to perform logical operation
 NOT − Used to invert each bit of a byte or word.
 AND − Used for adding each bit in a byte/word with the corresponding bit in another
byte/word.
 OR − Used to multiply each bit in a byte/word with the corresponding bit in another
byte/word.
State the use of REP in string related instructions. 2 M Ans  This is an instruction prefix
which can be used in string instructions.  It causes the instruction to be repeated CX number
of times.  After each execution, the SI and DI registers are incremented/decremented based
on the DF (Direction Flag) in the flag register and CX is decremented i.e. DF = 1; SI, DI
decrements. E.g. MOV CX, 0023H CLD REP MOVSB The above section of a program will
cause the following string operation ES: [DI] ← DS: [SI] SI ← SI + I XOR − Used to
perform Exclusive-OR operation over each bit in a byte/word with the corresponding bit in
another byte/word.
4. Describe any four string instructions of 8086 assembly language
Ans
1] REP:
 This is an instruction prefix which can be used in string instructions.
 It causes the instruction to be repeated CX number of times.
 After each execution, the SI and DI registers are incremented/decremented based on the DF
(Direction Flag) in the flag register and CX is decremented i.e. DF = 1; SI, DI decrements.
E.g. MOV CX, 0023H
CLD
REP MOVSB
The above section of a program will cause the following string operation
ES: [DI] ← DS: [SI]
SI ← SI + I
DI ← DI + I
CX ← CX – 1
to be executed 23H times (as CX = 23H) in auto incrementing mode (as DF is cleared).
REPZ/REPE (Repeat while zero/Repeat while equal)
 It is a conditional repeat instruction prefix.
 It behaves the same as a REP instruction provided the Zero Flag is set (i.e. ZF = 1).
 It is used with CMPS instruction. REPNZ/REPNE (Repeat while not zero/Repeat while not
equal)
 It is a conditional repeat instruction prefix.
 It behaves the same as a REP instruction provided the Zero Flag is reset (i.e. ZF = 0).
 It is used with SCAS instruction.
2] MOVS/ MOVSB/ MOVSW - Move String byte or word.
Syntax:
MOVS destination, source
MOVSB destination, source
MOVSW destination, source
Operation: ES:[DI]<----- DS:[SI]
It copies a byte or word a location in data segment to a location in extra segment. The offset
of source is pointed by SI and offset of destination is pointed by DI.CX register contain
counter and direction flag (DE) will be set or reset to auto increment or auto decrement
pointers after one move.
Example
LEA SI, Source
LEA DI, destination
CLD
MOV CX, 04H
REP MOVSB
3] CMPS /CMPSB/CMPSW: Compare string byte or Words.
Syntax:
CMPS destination, source
CMPSB destination, source
CMPSW destination, source
Operation: Flags affected < ----- DS:[SI]- ES:[DI] It compares a byte or word in one string
with a byte or word in another string. SI Holds the offset of source and DI holds offset of
destination strings. CS contains counter and DF=0 or 1 to auto increment or auto decrement
pointer after comparing one byte/word.
Example LEA SI, Source
LEA DI, destination
CLD MOV CX, 100 REPE CMPSB
4] SCAS/SCASB/SCASW: Scan a string byte or word.
Syntax: SCAS/SCASB/SCASW
Operation: Flags affected < ----- AL/AX-ES: [DI] It compares a byte or word in AL/AX with
a byte /word pointed by ES: DI. The string to be scanned must be in the extra segment and
pointed by DI. CX contains counter and DF may be 0 or 1. When the match is found in the
string execution stops and ZF=1 otherwise ZF=0.
Example LEA DI, destination MOV Al, 0DH MOV CX, 80H CLD REPNE SCASB
5] LODS/LODSB/LODSW: Load String byte into AL or Load String word into AX. Syntax:
LODS/LODSB/LODSW
Operation: AL/AX < ----- DS: [SI]
IT copies a byte or word from string pointed by SI in data segment into AL or AX.CX may
contain the counter and DF may be either 0 or 1
Example
LEA SI, destination
CLD
LODSB
6] STOS/STOSB/STOSW (Store Byte or Word in AL/AX)
Syntax STOS/STOSB/STOSW
Operation: ES:[DI] < ----- AL/AX
It copies a byte or word from AL or AX to a memory location pointed by DI in extra segment
CX may contain the counter and DF may either set or reset

5. Explain any two assembler directives of 8086. 4 M


Ans
1. DB – The DB directive is used to declare a BYTE -2-BYTE variable – A BYTE is made
up of 8 bits. Declaration examples:
Byte1 DB 10h Byte2 DB 255; 0FFh, the max. possible for a BYTE CRLF DB 0Dh, 0Ah,
24h ;Carriage Return, terminator BYTE

2. DW – The DW directive is used to declare a WORD type variable – A WORD occupies


16 bits or (2 BYTE). Declaration examples: Word DW 1234h Word2 DW 65535; 0FFFFh,
(the max. possible for a WORD)

3. DD – The DD directive is used to declare a DWORD – A DWORD double word is


made up of 32 bits =2 Word’s or 4 BYTE. Declaration examples: Dword1 DW
12345678h Dword2 DW 4294967295 ;0FFFFFFFFh.
4. EQU - The EQU directive is used to give name to some value or symbol. Each time
the assembler finds the given names in the program, it will replace the name with the
value or a symbol. The value can be in the range 0 through 65535 and it can be another
Equate declared anywhere above or below.
The following operators can also be used to declare an Equate: THIS BYTE THIS
WORD THIS DWORD A variable – declared with a DB, DW, or DD directive – has an
address and has space reserved at that address for it in the .COM file. But an Equate does
not have an address or space reserved for it in the .COM file. Example: A – Byte EQU
THIS BYTE DB 10 A_ word EQU THIS WORD
DW 1000 A_ dword EQU THIS DWORD DD 4294967295 Buffer Size EQU 1024
Buffer DB 1024 DUP (0) Buffed_ ptr EQU $ ; actually points to the next byte after the;
1024th byte in buffer.
5. SEGMENT: It is used to indicate the start of a logical segment. It is the name given to
the segment. Example: the code segment is used to indicate to the assembler the start of
logical segment.
6. PROC: (PROCEDURE) It is used to identify the start of a procedure. It follows a
name we give the procedure. After the procedure the term NEAR and FAR is used to
specify the procedure Example: SMART-DIVIDE PROC FAR identifies the start of
procedure named SMART-DIVIDE and tells the assembler that the procedure is far.
7. ASSUME ASSUME tells the assembler what names have been chosen for Code, Data
Extra and Stack segments. Informs the assembler that the register CS is to be initialized
with the address allotted by the loader to the label CODE and DS is similarly initialized
with the address of label DATA.
8. OFFSET OFFSET is an operator, which tells the assembler to determine the offset or
displacement of a named data item (variable), a procedure from the start of the segment,
which contains it. Example MOV BX;
9. EVEN (ALIGN ON EVEN MEMORY ADDRESS) As an assembler assembles a
section of data declaration or instruction statements, it uses a location counter to keep
track of how many bytes it is from the start of a segment at any time. The EVEN directive
tells the assembler to increment the location counter to the next even address, if it is not
already at an even address. A NOP instruction will be inserted in the location incremented
over.

6. Write classification of instruction set of 8086. Explain any one type out of them. 4 M

Ans classification of instruction set of 8086

 Data Transfer Instructions


 Arithmetic Instructions
 Bit Manipulation Instructions
 String Instructions
 Program Execution Transfer Instructions (Branch & Loop Instructions)
 Processor Control Instructions
 Iteration Control Instructions
 Interrupt Instructions 1) Arithmetic Instructions: These instructions are used to
perform arithmetic operations like addition, subtraction, multiplication, division, etc.
ADD: The add instruction adds the contents of the source operand to the destination
operand.
Eg. ADD AX, 0100H
ADD AX, BX
ADD AX, [SI]
ADD AX, [5000H]
ADD [5000H], 0100H
ADD 0100H
ADC: Add with Carry
This instruction performs the same operation as ADD instruction, but adds the carry
flag to the result. Eg.
ADC 0100H
ADC AX, BX
ADC AX, [SI]
ADC AX, [5000]
ADC [5000], 0100H
SUB: Subtract The subtract instruction subtracts the source operand from the
destination operand and the result is left in the destination operand.
Eg. SUB AX, 0100H
SUB AX, BX
SUB AX, [5000H]
SUB [5000H], 0100H
SBB: Subtract with Borrow The subtract with borrow instruction subtracts the source
operand and the borrow flag (CF) which may reflect the result of the previous
calculations, from the destination operand
Eg. SBB AX, 0100H
SBB AX, BX
SBB AX, [5000H]
SBB [5000H], 0100H
INC: Increment This instruction increases the contents of the specified Register or
memory location by 1. Immediate data cannot be operand of this instruction.
Eg. INC AX INC [BX]
INC [5000H]
DEC: Decrement The decrement instruction subtracts 1 from the contents of the
specified register or memory location.
Eg. DEC AX DEC [5000H]
NEG: Negate The negate instruction forms 2’s complement of the specified
destination in the instruction. The destination can be a register or a memory location.
This instruction can be implemented by inverting each bit and adding 1 to it.
Eg. NEG AL AL = 0011 0101 35H
Replace number in AL with its 2’s complement AL = 1100 1011 = CBH
CMP: Compare This instruction compares the source operand, which may be a
register or an immediate data or a memory location, with a destination operand that
may be a register or a memory location
Eg. CMP BX, 0100H
CMP AX, 0100H
CMP [5000H], 0100H
CMP BX, [SI]
CMP BX, CX MUL: Unsigned Multiplication Byte or Word This instruction
multiplies an unsigned byte or word by the contents of AL.
Eg. MUL BH ; (AX) (AL) x (BH)
MUL CX ; (DX)(AX) (AX) x (CX)
MUL WORD PTR [SI] ; (DX)(AX) (AX) x ([SI])
IMUL: Signed Multiplication This instruction multiplies a signed byte in source
operand by a signed byte in AL or a signed word in source operand by a signed word
in AX.
Eg. IMUL BH IMUL CX IMUL [SI]
CBW: Convert Signed Byte to Word This instruction copies the sign of a byte in AL
to all the bits in AH. AH is then said to be sign extension of AL.
Eg. CBW AX= 0000 0000 1001 1000 Convert signed byte in AL signed word in AX.
Result in AX = 1111 1111 1001 1000
CWD: Convert Signed Word to Double Word This instruction copies the sign of a
byte in AL to all the bits in AH. AH is then said to be sign extension of AL.
Eg. CWD Convert signed word in AX to signed double word in DX : AX DX= 1111
1111 1111 1111 Result in AX = 1111 0000 1100 0001
DIV: Unsigned division This instruction is used to divide an unsigned word by a byte
or to divide an unsigned double word by a word.
Eg. DIV CL ; Word in AX / byte in CL ; Quotient in AL, remainder in AH DIV CX ;
Double word in DX and AX / word ; in CX, and Quotient in AX, ; remainder in DX
2) Processor Control Instructions These instructions are used to control the processor
action by setting/resetting the flag values.
STC: It sets the carry flag to 1.
CLC: It clears the carry flag to 0.
CMC: It complements the carry flag.
STD: It sets the direction flag to 1. If it is set, string bytes are accessed from higher
memory address to lower memory address.
CLD: It clears the direction flag to 0. If it is reset, the string bytes are accessed from
lower memory address to higher
7. Write an ALP to count the number of positive and negative numbers in array. 4 M
Ans ;Count Positive No. And Negative No.S In Given ;Array Of 16 Bit No.
;Assume array of 6 no.s
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,0000H
MOV CX,COUNT
MOV SI, OFFSET ARRAY
NEXT: MOV AX,[SI]
ROR AX,01H
JC NEGATIVE
INC DL
JMP COUNT_IT
NEGATIVE: INC DH
COUNT_IT: INC SI
INC SI
LOOP NEXT
MOV NEG_COUNT,DL
MOV POS_COUNT,DH
MOV AH,4CH
INT 21H
CODE ENDS
DATA SEGMENT
ARRAY DW F423H,6523H,B658H,7612H, 2300H,1559H
COUNT DW 06H
POS_COUNT DB ?
NEG_COUNT DB ?
DATA ENDS
END START

8. Write an ALP to find the sum of series. Assume series of 10 numbers. 4 M


Ans ; Assume TEN , 8 bit HEX numbers
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX LEA SI,DATABLOCK
MOV CL,0AH
UP:MOV AL,[SI]
ADD RESULT_LSB,[SI]
JNC DOWN
INC REULT_MSB
DOWN:INC SI
LOOP UP
CODE ENDS
DATA SEGMENT
DATABLOCK DB 45H,02H,88H,29H,05H,45H,78H, 95H,62H,30H
RESULT_LSB DB 0 R
ESULT_MSB DB 0
DATA ENDS END
9. Write ALP to count ODD and EVEN numbers in an array. 4 M
Ans ;Count ODD and EVEN No.S In Given ;Array Of 16 Bit No. ;Assume array of 10
no.s
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,0000H
MOV CX,COUNT
MOV SI, OFFSET ARRAY1
NEXT: MOV AX,[SI]
ROR AX,01H JC ODD_1
INC DL JMP COUNT_IT
ODD_1 : INC DH
COUNT_IT: INC SI
INC SI
LOOP NEXT
MOV ODD_COUNT,DH
MOV EVENCNT,DL
MOV AH,4CH INT 21H
CODE ENDS
DATA SEGMENT
ARRAY1 DW F423H, 6523H, B658H, 7612H, 9875H, 2300H, 1559H, 1000H, 4357H,
2981H COUNT DW 0AH
ODD_COUNT DB ?
EVENCNT DB ?
DATA ENDS
END START
10. Write ALP to perform block transfer operation of 10 numbers. 4 M
Ans ;Assume block of TEN 16 bit no.s ;
Data Block Transfer Using String Instruction
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EXTRA
MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV CX,000AH
LEA SI,BLOCK1
LEA DI,ES:BLOCK2
CLD REPNZ
MOVSW
MOV AX,4C00H
INT 21H
CODE ENDS
DATA SEGMENT
BLOCK1 DW 1001H,4003H,6005H,2307H,4569H, 6123H, 1865H,
2345H,4000H,8888H
DATA ENDS
EXTRA SEGMENT
BLOCK2 DW ?
EXTRA ENDS
END
11. Write ALP using procedure to solve equation such as Z= (A+B)*(C+D) 4 M
Ans ; Procedure For Addition
SUM PROC NEAR
ADD AL,BL
RET
SUM ENDP
DATA SEGMENT
NUM1 DB 10H
NUM2 DB 20H
NUM3 DB 30H
NUM4 DB 40H
RESULT DB?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,NUM1
MOV BL,NUM2
CALL SUM
MOV CL,AL
MOV AL, NUM3
MOV BL,NUM4
CALL SUM
MUL CL
MOV RESULT,AX
MOV AH,4CH
INT 21H
CODE ENDS
END
12. Write an ALP to arrange numbers in array in descending order. 6 M
Ans DATA SEGMENT
ARRAY DB 15H,05H,08H,78H,56H
DATA ENDS
CODE SEGMENT
START:ASSUME CS:CODE,DS:DATA
MOV DX,DATA
MOV DS,DX
MOV BL,05H
STEP1: MOV SI,OFFSET ARRAY
MOV CL,04H S
TEP: MOV AL,[SI]
CMP AL,[SI+1]
JNC DOWN
XCHG AL,[SI+1]
XCHG AL,[SI]
DOWN:ADD SI,1
LOOP STEP
DEC BL J
NZ STEP1
MOV AH,4CH
INT 21H
CODE ENDS
END START
13. What is role of XCHG instruction in assembly language program? Give example 2M
Ans Role of XCHG: This instruction exchanges the contents of a register with the
contents of another register or memory location.
Example: XCHG AX, BX ; Exchange the word in AX with word in BX.
14. Explain logical instructions of 8086.(Any Four) 4M
Ans Logical instructions.
1) AND- Logical AND
Syntax : AND destination, source
Operation Destination ←destination AND source

Flags Affected :CF=0,OF=0,PF,SF,ZF


This instruction AND’s each bit in a source byte or word with the same number bit in a
destination byte or word. The result is put in destination.
Example: AND AX, BX
• AND AL,BL
• AL 1111 1100
• BL 0000 0011
---------------------
• AL0000 0000 (AND AL,BL)
2) OR – Logical OR
Syntax :OR destination, source
Operation
Destination OR source
Flags Affected :CF=0,OF=0,PF,SF,ZF
This instruction OR’s each bit in a source byte or word with the corresponding bit in a
destination byte or word. The result is put in a specified destination.
Example :
• OR AL,BL
• AL 1111 1100
• BL 0000 0011
---------------------
• AL1111 1111
3) NOT – Logical Invert Syntax : NOT destination Operation: Destination NOT
destination Flags Affected :None The NOT instruction inverts each bit of the byte or
words at the specified destination.
Example NOT BL
BL = 0000 0011
NOT BL gives 1111 1100
4) XOR – Logical Exclusive OR
Syntax : XOR destination, source
Operation : Destination Destination XOR source
Flags Affected :CF=0,OF=0,PF,SF,ZF
This instruction exclusive, OR’s each bit in a source byte or word with the same number
bit in a destination byte or word.
Example(optional)
XOR AL,BL
• AL 1111 1100
• BL 0000 0011
---------------------
• AL1111 1111 (XOR AL,BL)
5)TEST
Syntax : TEST Destination, Source
This instruction AND’s the contents of a source byte or word with the contents of
specified destination byte or word and flags are updated, , flags are updated as result ,but
neither operands are changed.
Operation performed: Flags set for result of (destination AND source)
Example: (Any 1)
TEST AL, BL ; AND byte in BL with byte in AL, no result, Update PF, SF, ZF.
e.g MOV AL, 00000101 TEST AL, 1 ; ZF = 0.
TEST AL, 10b ; ZF = 1
15. Write an ALP to find length of string. 4M
Ans Data Segment
STRG DB 'GOOD MORNING$'
LEN DB ?
DATA ENDS
CODE SEGMENT
START:
ASSUME CS: CODE, DS : DATA
MOV DX, DATA
MOV DS,DX
LEA SI, STRG
MOV CL,00H
MOV AL,'$'
NEXT: CMP AL,[SI]
JZ EXIT
ADD CL,01H
INC SI
JMP
NEXT EXIT: MOV LEN,CL
MOV AH,4CH
INT 21H
CODE ENDS
16. Write an ALP to count no.of 0’s in 16 bit number. 4M Ans
DATA SEGMENT
N DB 1237H
Z DB 0
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA, CS:CODE
START:
MOV DX,DATA
MOV DS,DX
MOV AX, N
MOV CL,08
NEXT: ROL AX,01
JC ONE
INC Z ONE: LOOP NEXT
HLT
CODE ENDS
END START
17. Write an ALP to find largest number in array of elements 10H, 24H, 02H, 05H, 17H. 4M
Ans DATA SEGMENT
ARRAY DB 10H,24H,02H,05H,17H
LARGEST DB 00H
DATA ENDS
CODE SEGMENT
START: ASSUME CS:CODE,DS:DATA
MOV DX,DATA
MOV DS,DX
MOV CX,04H
MOV SI ,OFFSET ARRAY
MOV AL,[SI]
UP: INC SI
CMP AL,[SI]
JNC NEXT
MOV AL,[SI]
NEXT: DEC CX
JNZ UP
MOV LARGEST,AL
MOV AX,4C00H
INT 21H
CODE ENDS
END START
18. Write an ALP for addition of series of 8-bit number using procedure. 4M
Ans DATA SEGMENT
NUM1 DB 10H,20H,30H,40H,50H
RESULT DB 0H
CARRY DB 0H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV DX,DATA
MOV DS, DX
MOV CL,05H
MOV SI, OFFSET NUM1
UP: CALL SUM
INC SI
LOOP UP
MOV AH,4CH INT 21H
SUM PROC; Procedure to add two 8 bit numbers
MOV AL,[SI]
ADD RESULT, AL
JNC NEXT
INC CARRY
NEXT: RET
SUM ENDP
CODE ENDS
END START
19. Describe any 6 addressing modes of 8086 with one example each
Ans
1. Immediate addressing mode: An instruction in which 8-bit or 16-bit operand (data) is
specified in the instruction, then the addressing mode of such instruction is known as
Immediate addressing mode.
Example: MOV AX,67D3H
2. Register addressing mode An instruction in which an operand (data) is specified in
general purpose registers, then the addressing mode is known as register addressing
mode.
Example: MOV AX,CX
3. Direct addressing mode An instruction in which 16 bit effective address of an
operand is specified in the instruction, then the addressing mode of such instruction is
known as direct addressing mode.
Example: MOV CL,[2000H]
4. 4. Register Indirect addressing mode An instruction in which address of an operand
is specified in pointer register or in index register or in BX, then the addressing mode
is known as register indirect addressing mode.
Example: MOV AX, [BX]
5. Indexed addressing mode An instruction in which the offset address of an operand is
stored in index registers (SI or DI) then the addressing mode of such instruction is
known as indexed addressing mode. DS is the default segment for SI and DI. For
string instructions DS and ES are the default segments for SI and DI resp. this is a
special case of register indirect addressing mode.
Example: MOV AX,[SI]
6. Based Indexed addressing mode: An instruction in which the address of an operand is
obtained by adding the content of base register (BX or BP) to the content of an index
register (SI or DI) The default segment register may be DS or ES\ Example: MOV
AX, [BX][SI]
7. Register relative addressing mode: An instruction in which the address of the
operand is obtained by adding the displacement (8-bit or 16 bit) with the contents of
base registers or index registers (BX, BP, SI, DI). The default segment register is DS
or ES.
Example: MOV AX, 50H[BX]
8. Relative Based Indexed addressing mode An instruction in which the address of the
operand is obtained by adding the displacement (8 bit or 16 bit) with the base
registers (BX or BP) and index registers (SI or DI) to the default segment.
9. Example: MOV AX, 50H [BX][SI]
20. Write an ALP to reverse a string. Also draw flowchart for same.
Ans Program:
DATA SEGMENT
STRB DB 'GOOD MORNING$'
REV DB 0FH DUP(?)
DATA ENDS
CODE SEGMENT
START:ASSUME CS:CODE,DS:DATA]
MOV DX,DATA
MOV DS,DX
LEA SI,STRB
MOV CL,0FH
LEA DI,REV
ADD DI,0FH
UP:MOV AL,[SI]
MOV [DI],AL
INC SI
DEC DI
LOOP UP
MOV AH,4CH
INT 21H
CODE ENDS
END START

You might also like