21
qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw ertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjkl zxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcv bnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnm qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw i df hjkl b i Microprocessor Subject code : 10CSL48 Lab Manual

Microprocessor Lab Manual

Embed Size (px)

Citation preview

Page 1: Microprocessor Lab Manual

qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqw

i df hjkl b i

Microprocessor Subject code : 10CSL48

Lab Manual

Page 2: Microprocessor Lab Manual

1. a) Search a key element in a list of ‘n’ 16-bit numbers using the Binary search algorithm.

. .MODEL SMALL .STACK .DATA ARR DW 0111H,0112H,0113H,0114H,0115H LEN DW ($-ARR)/2 KEY EQU 0115H MSG1 DB "KEY IS FOUND AT " RES DB " POSITION",13,10,"$" MSG2 DB 'KEY NOT FOUND!!!!!!!!!!!!!. $' .CODE MOV AX,@DATA MOV DS,AX MOV BX,00 MOV DX,LEN MOV CX,KEY AGAIN: CMP BX,DX JA FAIL MOV AX,BX

ADD AX,DX SHR AX,1

MOV SI,AX ADD SI,SI

CMP CX,ARR[SI] JAE BIG

DEC AX MOV DX,AX

JMP AGAIN BIG: JE SUCCESS

INC AX MOV BX,AX

JMP AGAIN SUCCESS: ADD AL,01 ADD AL,'0'

MOV RES,AL

Page 3: Microprocessor Lab Manual

LEA DX,MSG1 JMP DISP

FAIL: LEA DX,MSG2 DISP: MOV AH,09H

INT 21H MOV AH,4CH

INT 21H END

Page 4: Microprocessor Lab Manual

2. a) Write two ALP modules stored in two different files; one module is to read a character from the keyboard and the other one is to display a character. Use the above two modules to read a string of characters from the keyboard terminated by the carriage return and print the string on the display in the next line.

. .MODEL SMALL .DATA ARR DB 50 DUP(?) .CODE EXTRN MYREADKEY:FAR EXTRN MYECHO:FAR START: MOV AX,@DATA MOV DS,AX MOV SI,OFFSET ARR MOV DI,OFFSET ARR MOV CX,00H NEXT: CALL MYREADKEY INC CX CMP AL,0DH JNZ NEXT MOV DL,10 MOV AH,02H INT 21H NEXT1: MOV DL,[DI] INC DI CALL MYECHO LOOP NEXT1 MOV AH,4CH INT 21H END START .MODEL SMALL PUBLIC MYREADKEY .CODE MYREADKEY PROC MOV AH,07H

Page 5: Microprocessor Lab Manual

INT 21H MOV [SI],AL INC SI RET MYREADKEY ENDP END .MODEL SMALL PUBLIC MYECHO .CODE MYECHO PROC MOV AH,02H INT 21H RET MYECHO ENDP END

Page 6: Microprocessor Lab Manual

3. a) Sort a given set of ‘n’ numbers in ascending order using the Bubble Sort algorithm. . .MODEL SMALL .DATA A DB 22H,44H,11H,33H LEN DW $-A .CODE MOV AX,@DATA MOV DS,AX MOV BX,LEN DEC BX OUTLOOP:MOV CX,BX MOV SI,00H INLOOP: MOV AL,A[SI] INC SI CMP AL,A[SI] JB NEXT XCHG AL,A[SI] MOV A[SI-1],AL NEXT: LOOP INLOOP DEC BX JNZ OUTLOOP MOV AH,4CH INT 21H END

Page 7: Microprocessor Lab Manual

4. a) Read an alphanumeric character and display its equivalent ASCII code at the centre of the screen.

. .MODEL SMALL ; MODEL IS SMALL .STACK ; INITIALISING STACK .DATA ;DATA SEGMENT STARTS MESG1 DB 'ENTER THE CHARACHTER:$' ;MESSAGE TO BE DISPLAYED IN DOS CHAR DB ? ;UNINITIALISED ARRAY .CODE ;CODE SEGMENT STARTS START: MOV AX,@DATA ;INITIALIZE THE DS REG MOV DS,AX MOV AH,09H ;SERVICE NO. TO DISPLAY MOV DX,OFFSET MESG1 ;MOVE THE OFFSET OF MESG1 TO DX INT 21H ;INTERRUPT TO TERMINATE MOV AH,01H ;SERVICE NO TO READ KEY INT 21H MOV CHAR,AL ;CH=GETCH(); MOV AH,02H ;SERVICE NO TO MOVE CURSOR TO SPECIFIED MOV BH,00 ;PAGE NUMBER MOV DH,12 ;X CO-ORDINATE MOV DL,39 ;Y CO-ORDINATE INT 10H ;IT IS JUST LIKE GOTO(X,Y) FUNCTION MOV CL,4 ;COUNTER INITIALISED TO 4 MOV AL,CHAR SHR AL,CL ;SHIFT RIGHT 4 TIMES i.e. HIGHER BYTE FIRST CALL CONVERT MOV DL,AL ;TO DISPLAY NUMBER MOV AH,02H ;SERVICE NO TO DISPLAY INT 21H MOV AL,CHAR AND AL,0FH ;AL=AL AND 0FH CALL CONVERT ;CONVERT PROCEDURE MOV DL,AL MOV AH,02H ;SERVICE NO TO DISPLAY INT 21H MOV AH,4CH ;TERMINATE PROGRAM INT 21H ;PROCEDURE TO CONVERT DIGIT INTO ITS EQUIVALENT ASCII VALUE CONVERT PROC NEAR

Page 8: Microprocessor Lab Manual

CMP AL,0AH ;IF AL>9 JB ADD030 ADD AL,07H ;IF DIGIT IS A TO F ADD030:ADD AL,30H ;IF AL<=9 RET CONVERT ENDP END START ;END OF MAIN PROGRAM

Page 9: Microprocessor Lab Manual

5. a) Reverse a given string and check whether it is a palindrome or not. .MODEL SMALL ;MODEL IS SMALL .STACK 64 ;INITIALISING STACK .DATA ;CODE SEGMENT STARTS STR1 DB "MADAM$" ;INPUT STRING STRLEN DW ($-STR1) ;LENGTH OF THE STRING STR2 DB 40 DUP(0) ;UNINITIALISED STRING MESG1 DB "IT IS PALINDROME$" ;MESSAGE TO BE DISPLAYED IF PAL MESG2 DB "IS NOT A PALINDROME$" ;MESSAGE IF NOT A PALINDROME .CODE ;CODE SEGMENT STARTS START: MOV AX,@DATA ;INITIALISING DATA SEGMENT MOV DS,AX MOV ES,AX ;INITIALISING EXTRA SEGMENT MOV CX,STRLEN ;CX REG HAS LENGTH OF STRING DEC CX ;DECREMENT CX MOV SI,OFFSET STR1 ;SI HAS STARTING ADDRESS OF STR1 ADD SI,CX ;ADD SI TO CX DEC SI ;DECREMENT SI MOV DI,OFFSET STR2 ;DI HAS STARTING ADDRESS OF STR2 UP: MOV AL,[SI] ;MOVE CONTENTS OF SI TO AL REG MOV [DI],AL ;MOVE THE CONTENTS OF AL REG TO DI DEC SI ;DECREMENT SI INC DI ;INCREMENT DI DEC CX ;DECREMENT CX CMP CX,0000H ;COMP CX WITH 0000 JNE UP ;IF EQUAL JMP UP MOV AL,"$" ;MOVE NULL VALUE TO THE AL REG MOV [DI],AL ;MOV VALUE IN AL TO DI MOV SI,OFFSET STR1 ;MOVE STARTING ADDRESS OF STR1 TO SI MOV DI,OFFSET STR2 ;MOVE STARTING ADDRESS OF STR2 TO DI MOV CX,STRLEN ;LENGTH OF THE STRING IN CX REPE CMPSB ;REPEAT COMP JNE DOWN ;JMP IF NT EQUAL TO DOWN MOV DX,OFFSET MESG1 ;MOVE THE STARTING ADDRESS OF MESG1 TO DX JMP DOWN1 ;JMP TO DOWN1 DOWN: MOV DX,OFFSET MESG2 ;MOVE THE STARTING ADDRESS OF MESG2 TO DX DOWN1: MOV AH,09H ;SERVICE NO.TO DISPLAY MESSGE2 INT 21H ;TERMINATE INT 3 ;TERMINATION OF PROGRAM END START ;END OF THE PROGRAM

Page 10: Microprocessor Lab Manual

6. a) Read two strings, store them in locations STR1 and STR2.

Check whether they are equal or not and display appropriate

messages. Also display the length of the stored strings.

.MODEL SMALL

.STACK

.DATA STR1 DB 150 DB ? DB 150 DUP(?) STR2 DB 150 DB ? DB 150 DUP(?) MSG1 DB 10,10,13, 'STRINGS ARE EQUAL.$' MSG2 DB 10,10,13, 'STRINGS ARE NOT EQUAL.$' MSG3 DB 10,13, 'ENTER STRING 1 (UPTO 9 CHARACTERS):$' MSG4 DB 10,13, 'ENTER STRING 2 (UPTO 9 CHARACTERS):$' MSG5 DB 10,13, 'LENGTH OF STRING 1=$' MSG6 DB 10,13, 'LENGTH OF STRING 2=$' CLRSCR MACRO MOV AL,2 MOV AH,0 INT 10H ENDM DISPM MACRO STR LEA DX,STR MOV AH,09H INT 21H ENDM .CODE MOV AX,@DATA MOV DS,AX MOV ES,AX CLRSCR

Page 11: Microprocessor Lab Manual

DISPM MSG3 MOV DX,OFFSET STR1 MOV AH,0AH INT 21H DISPM MSG4 MOV DX,OFFSET STR2 MOV AH,0AH INT 21H DISPM MSG5 MOV DL,STR1[1] ADD DL,30H MOV AH,2 INT 21H DISPM MSG6 MOV DL,STR2[1] ADD DL,30H MOV AH,2 INT 21H MOV AL,STR1[1] CMP AL,STR2[1] JNE NOTEQ MOV CH,00H MOV CL,STR1[1] CLD LEA SI,STR1+2 LEA DI,STR2+2 REPE CMPSB JNZ NOTEQ DISPM MSG1 JMP STOP NOTEQ: DISPM MSG2 STOP: MOV AH,4CH INT 21H

Page 12: Microprocessor Lab Manual

END

Page 13: Microprocessor Lab Manual

7. a) Read your name from the keyboard and display it at a

specified location on the screen after the message “What is your name? ”You must clear the entire screen before display.

.MODEL SMALL .STACK READSTR MACRO LOC MOV AH,01H INT 21H MOV LOC,AL ENDM CLRSCR MACRO MOV AL,3 MOV AH,0 INT 10H ENDM .DATA MSG0 DB 10, 'ENTER THE NAME:$' MSG1 DB 'WHAT IS YOUR NAME?$' MSG2 DB 10, '$' LEN DW ($-MSG1) ARR DB 40 DUP(?) DISPLAY MACRO STR LEA DX,STR MOV AH,09H INT 21H ENDM .CODE START: MOV AX,@DATA MOV DS,AX MOV SI,00 DISPLAY MSG0

Page 14: Microprocessor Lab Manual

LOOP1: READSTR ARR[SI] INC SI CMP AL,13 JNZ LOOP1 MOV ARR[SI],'$' CLRSCR MOV BH,0 MOV DH,3 MOV DL,8 MOV AH,2 INT 10H DISPLAY MSG1 MOV SI,0 LEA DX,ARR[SI] MOV AH,09H INT 21H DISPLAY MSG2 MOV AH,4CH INT 21H END START

Page 15: Microprocessor Lab Manual

8. a) Compute nCr using recursive procedure. Assume that ‘n’ and ‘r’ are non-negative integers.

.MODEL SMALL .STACK .DATA N DW 5 R DW 2 NCR DW 1 MSG1 DB 10,13, "ERROR!! N VALUE CANNOT BE ZERO!$" DISPLAY MACRO STR LEA DX,STR MOV AH,9 INT 21H ENDM .CODE MOV AX,@DATA MOV DS,AX CMP N,0 JZ ERROR MOV BX,N INC BX MOV CX,R CALL NCP JMP STOP ERROR: DISPLAY MSG1 STOP: MOV AH,4CH INT 21H NCP PROC NEAR CMP CX,00H JE OVER PUSH CX DEC CX

Page 16: Microprocessor Lab Manual

CALL NCP MOV AX,BX POP CX SUB AX,CX MUL NCR DIV CX MOV NCR,AX OVER: RET NCP ENDP END

Page 17: Microprocessor Lab Manual

9. a) Read the current time from the system and display it in the standard format on the screen.

.MODEL SMALL ; MODEL IS SMALL

.DATA ; DATA SEGMENT STARTS MSG DB 10,13,'THE SYSTEM TIME IS:' HR DB 02 DUP(?),':' MIN DB 02 DUP(?),':' SEC DB 02 DUP(?),'$' .CODE ; CODE SEGMENT STARTS MOV AX,@DATA ; INTIALISING DATA SEGMENT MOV DS,AX MOV DS,AX MOV AH,2CH INT 21H MOV AL,CH CALL CONVERT MOV HR,AH MOV HR+1,AL MOV AL,CL CALL CONVERT MOV MIN,AH MOV MIN+1,AL MOV AL,DH CALL CONVERT MOV SEC,AH MOV SEC,AL LEA DX,MSG MOV AH,09 INT 21H MOV AH,4CH INT 21H CONVERT PROC NEAR AAM ADD AX,3030H RET CONVERT ENDP END

Page 18: Microprocessor Lab Manual

10. a) Write a program to simulate a Decimal Up-counter to display 00-99. .MODEL SMALL .DATA NO DB 00 .CODE MOV AX,@DATA MOV DS,AX LL: MOV AL,NO ADD AL,01 DAA MOV NO,AL AND AL,0F0H MOV CL,04H SHR AL,CL ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV DL,NO AND DL,0FH ADD DL,30H MOV AH,02H INT 21H MOV DL,13H MOV AH,02H INT 21H CALL DELAY CMP NO,099H JB LL MOV AH,4CH INT 21H DELAY PROC MOV CX,05FFH L2: MOV BX,0FFFH L3: DEC BX JNZ L3 LOOP L2 RET

Page 19: Microprocessor Lab Manual

DELAY ENDP END

11. a) Read a pair of input co-ordinates in BCD and move the cursor to the specified location on the screen. . .MODEL SMALL .DATA MSG1 DB 10,13,"Enter the row number (00-24):$" MSG2 DB 10,13,"Enter the cloumn number (00-70)$" MSG3 DB 10,13,"Enter any key to Exit$" ROW DB ? COL DB ? .CODE START: MOV AX,@DATA MOV DS,AX LEA DX,MSG1 MOV AH,09H INT 21H CALL READ MOV ROW,AL LEA DX,MSG2 MOV AH,09H INT 21H CALL READ MOV COL,AL LEA DX,MSG3 MOV AH,09H INT 21H MOV AH,02H MOV DH,ROW MOV DL,COL INT 10H CALL CLEAR MOV AH,08H INT 21H MOV AH,4CH INT 21H READ PROC MOV AH,01H INT 21H

Page 20: Microprocessor Lab Manual

AND AL,0FH MOV BL,AL MOV AH,01H INT 21H AND AL,0FH MOV AH,BL AAD RET READ ENDP CLEAR PROC PUSH AX MOV AH,06H MOV AL,00H MOV CH,00H MOV CL,00H MOV DH,24H MOV DL,79H MOV BH,07H INT 10H POP AX RET CLEAR ENDP END START

Page 21: Microprocessor Lab Manual

12. a) Write a program to create a file (input file) and to delete an existing file. .MODEL SMALL ; MODEL IS SMALL .DATA ; DATA SEGMENT STARTS FILE1 DB 'F:\8086\F1.ASM',0 FILE2 DB 'F:\8086\F1.ASM',0 MSG1 DB 10,13,'FILE CREATED SUCCESSFULLY $' MSG2 DB 10,13,'FILE DELETED SUCCESSFULLY $' MSG3 DB 10,13,'ERROR IN CREATION $' MSG4 DB 10,13,'ERROR IN DELETION $' .CODE ; CODE SEGMENT STARTS MOV AX,@DATA ; INTIALISING DATA SEGMENT MOV DS,AX MOV DS,AX ;CREATE A FILE XOR CX,CX ;FILE ATTRIBUTES IN CX MOV DX,OFFSET FILE1 MOV AH,3CH INT 21H JC ERROR1 LEA DX,MSG1 JMP DISP1 ERROR1: LEA DX,MSG3 DISP1: MOV AH,09 INT 21H ;DELETE A FILE

LEA DX,FILE2 MOV AH,41H

INT 21H JE ERROR2

LEA DX,MSG2 JMP DISP2

ERROR2: LEA DX,MSG4 DISP2: MOV AH,09 INT 21H

MOV AH,4CH INT 21H

END