23
06CSL48 - Microprocessor Lab Manual Solutions 4th Semester Visvesvaraya Technological University BCET ISE 1. a) Search a key element in a list of ‘n’ 16-bit numbers using the Binary search algorithm. Program : ;binary search .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 LEA DX,MSG1 JMP DISP FAIL:LEA DX,MSG2

Microprocessor Lab Manual Solutions 4th Semester ISE

Embed Size (px)

DESCRIPTION

Microprocessor Lab Manual Solutions 4th Semester Part A Solutions 06CSL58 Visvesvaraya Technological UniversityVTUBCETISE

Citation preview

Page 1: Microprocessor Lab Manual Solutions 4th Semester ISE

06CSL48 - Microprocessor Lab Manual Solutions 4thSemester

Visvesvaraya Technological UniversityBCETISE

1. a) Search a key element in a list of ‘n’ 16-bit numbersusing the Binarysearch algorithm.

Program :;binary search.MODEL SMALL.STACK.DATA

ARR DW 0111H,0112H,0113H,0114H,0115HLEN DW ($-ARR)/2KEY EQU 0115H

MSG1 DB "KEY IS FOUND AT "RES DB " POSITION",13,10,"$"

MSG2 DB 'KEY NOT FOUND!!!!!!!!!!!!!. $'.CODE

MOV AX,@DATAMOV DS,AXMOV BX,00MOV DX,LENMOV CX,KEY

AGAIN:CMP BX,DXJA FAILMOV AX,BXADD AX,DXSHR AX,1MOV SI,AXADD SI,SICMP CX,ARR[SI]JAE BIGDEC AXMOV DX,AXJMP AGAIN

BIG:JE SUCCESSINC AXMOV BX,AXJMP AGAIN

SUCCESS:ADD AL,01ADD AL,'0'MOV RES,ALLEA DX,MSG1JMP DISP

FAIL:LEA DX,MSG2

Page 2: Microprocessor Lab Manual Solutions 4th Semester ISE

DISP:MOV AH,09HINT 21HMOV AH,4CHINT 21HEND

Page 3: Microprocessor Lab Manual Solutions 4th Semester ISE

2. a) Write ALP macros:i. To read a character from the keyboard in the

module (1) (in a different file)ii. To display a character in module(2) (from different

file)iii. Use the above two modules to read a string of

characters from the keyboard terminated by the carriagereturn and print the string on the display in the next line.

Program:;2A) FPROGRAM TO WRITE ALP MACROS:;(1) TO READ A CHARACTER FROM THE KEYBOARD IN THE MODULE(1);(2) TO DISPLAY A CHARACTER IN MODULE(2)(FROM DIFFERENT FILE);(3) TO READ A STRING OF CHARACTERS TERMINATED BY THE; CARRIAGE RETURN AND DISPLAY THE STRING IN THE NEXT LINE.INCLUDE READKB.MAC ;Include file containing macro to read character from thekeyboard.INCLUDE DISPCHAR.MAC ;Include file containing macro to display a character from the

;keyboard..MODEL SMALL.STACK.DATA

ARR DB 40 DUP(?).CODE

MOV AX,@DATA ;To initialise Data Segment(DS) RegisterMOV DS,AXMOV SI,0 ;Set array index to 0

BAK: READ ARR[SI] ;Read a character from the keyboardINC SI ;and store it in arrCMP AL,13 ;check for carriage returnJNZ BAK ;read the next character if not carriage returnMOV DL,10 ;Move the cursor to beginning of the next lineMOV AH,2INT 21HMOV DL,13MOV AH,2INT 21HMOV SI,0

AGAIN: DISP ARR[SI] ;Display the string character by characterINC SI ;until carriage return is encounteredCMP AL,13JNZ AGAINMOV AH,4CHINT 21HEND

DISPCHAR.MAC

DISP MACRO LOC2MOV DL,LOC2

Page 4: Microprocessor Lab Manual Solutions 4th Semester ISE

MOV AH,02HINT 21HENDM

READKB.MAC

READ MACRO LOCMOV AH,01HINT 21HMOV LOC,ALENDM

Page 5: Microprocessor Lab Manual Solutions 4th Semester ISE

3. a) Sort a given set of ‘n’ numbers in ascending anddescending orders using the Bubble Sort algorithm.

Program:.MODEL SMALL.STACK.DATALIST DB 03H,04H,02H,01H,05HN DW $-LISTORDER EQU 0MSG DB 'THE SORTED ARRAY IS:: $'.CODE

MOV AX,@DATAMOV DS,AXMOV BX,NDEC BX

NXTPASS:MOV CX,BXMOV SI,00H

NXTCOMP:MOV AL,LIST[SI]INC SICMP AL,LIST[SI]IF ORDER EQ 0JB NEXTELSEJA NEXTENDIFXCHG AL,LIST[SI]MOV LIST[SI-1],AL

NEXT:LOOP NXTCOMPDEC BXJNZ NXTPASSLEA DX,MSGMOV AH,09HINT 21HMOV BX,NMOV SI,00H

AGAIN: MOV AL,LIST[SI]ADD AL,'0'MOV DL,ALMOV AH,02HINT 21HMOV AH,02HMOV DL,' 'INT 21HINC SIDEC BXJNZ AGAINMOV AH,4CHINT 21H

END

Page 6: Microprocessor Lab Manual Solutions 4th Semester ISE

4. a) Read an alphanumeric character and display itsequivalent ASCII code at the center of the screen.Program:

;4A) Read an alphanumeric character and display its equivalent; ASCII code(in HEX) at the center of the screen..MODEL SMALL.STACK.DATA

MSG DB 'ENTER A KEY',10,13,'$'.CODE

MOV AX,@DATAMOV DS,AX ;Initialise DS

MOV AH,0 ;To clear the screenMOV AL,3 ;Video mode =3INT 10H

LEA DX,MSG ;DISPLAY MSGMOV AH,9INT 21H

MOV AH,1 ;Read a char from KBINT 21H

MOV BL,AL ;Store it in BLMOV AH,2 ;move cursorMOV BH,0 ;page 0MOV DH,12 ;row=12 central rowMOV DL,40 ;col=40 central colINT 10H

MOV AL,BL ;display the charAND AL,0F0H ;select the higher order nibleMOV CL,4 ;Shift countSHR AL,CL ;Shift right by 4CALL DISP ;display itMOV AL,BLAND AL,0FH ;select the lower order nibbleCALL DISP ;display itMOV AH,4CH ;safe exit to dosINT 21H

DISP: CMP AL,0AH ;convert an alphanumeric character toJB SKIP ;equivalent ASCII valueADD AL,7

SKIP: ADD AL,30HMOV DL,ALMOV AH,02 ;call dos function 02h to print a characterINT 21HRETEND

Page 7: Microprocessor Lab Manual Solutions 4th Semester ISE

5. a) Reverse a given string and check whether it is apalindrome or not.Program:;5A) REVERSE A GIVEN STRING AND CHECK WHETHER IT IS A PALINDROME OR NOT..MODEL SMALL.STACK.DATA

STR DB 20 DUP(?)MSG DB 'ENTER THE STRING: $'MSG0 DB 'THE REVERSED STRING IS: ',10,13,'$'MSG1 DB 13,10,"STRING IS A PALINDROM$"MSG2 DB 13,10,"STRING IS NOT A PALINDROM!!!!!!!!!!!!!$"

.CODEMOV AX,@DATAMOV DS,AXMOV SI,00HLEA DX,MSGMOV AH,09H

INT 21HGETS: MOV AH,01H

INT 21HMOV STR[SI],ALINC SIMOV AH,0PUSH AXCMP AL,0DHJNZ GETSLEA DX,MSG0MOV AH,09HINT 21HMOV CX,SI

REV:POP AXMOV DL,ALMOV AH,02HINT 21HLOOP REV

DEC SIDEC SIMOV DI,SIMOV SI,00H

NC: MOV AL,STR[SI]CMP AL,STR[DI]JNZ FL_MSGINC SIDEC DIJNZ NCMOV AH,09HMOV DX,OFFSET MSG1INT 21HJMP END_PR

FL_MSG: MOV AH,09HMOV DX,OFFSET MSG2

Page 8: Microprocessor Lab Manual Solutions 4th Semester ISE

INT 21HEND_PR: MOV AH,4CH

INT 21HEND

Page 9: Microprocessor Lab Manual Solutions 4th Semester ISE

6. a) Read two strings, store them in locations STR1 andSTR2. Check whether they are equal or not and displayappropriated messages. Also display the length of thestored strings.Program:;6A) PROGRAM TO READ TWO STRINGS STR1 AND STR2 AND COMPARE THEM..MODEL SMALL.STACK.DATA

STR1 DB 20 DUP(?)STR2 DB 20 DUP(?)MS1 DB 'ENTER THE STRING1: $'MS2 DB 'ENTER THE STRING2: $'MSG1 DB 13,10,"STRINGS ARE EQUAL$"MSG2 DB 13,10,"STRINGS ARE NOT EQUAL$"

.CODEMOV AX,@DATAMOV DS,AXMOV SI,00HMOV DI,00HMOV AH,09HLEA DX,MS1INT 21H

SG1: MOV AH,01HINT 21HMOV STR1[SI],ALINC SICMP AL,0DHJNZ SG1MOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HMOV AH,09HLEA DX,MS1INT 21H

SG2: MOV AH,01HINT 21HMOV STR2[DI],ALINC DICMP AL,0DHJNZ SG2DEC DIDEC SI

nc: MOV AH,STR1[SI]CMP AH,STR2[DI]JNZ FL_MSGDEC SIDEC DI

Page 10: Microprocessor Lab Manual Solutions 4th Semester ISE

JNZ NCMOV AH,STR1CMP AH,STR2JNZ FL_MSGCMP SI,DIJNZ NCMOV AH,09H

MOV DX,OFFSET MSG1INT 21HJMP END_PR

FL_MSG: MOV AH,09HMOV DX,OFFSET MSG2INT 21H

END_PR: MOV AH,4CHINT 21HEND

Page 11: Microprocessor Lab Manual Solutions 4th Semester ISE

7. a) Read your name from the keyboard and display it at aspecified location on the screen in front of the messageWhat is your name? You must clear the entire screenbefore display.Program:;7A) READ YOUR NAME FROM THE KEYBOARD AND DISLAY IT AS A SPECIFIC LOCATION; ON THE SCREEN IN FRONT OF MESSAGE WHAT IS YOUR NAME ?READSTR MACRO LOC ;MACRO TO READ A CHARACTER

MOV AH,01HINT 21HMOV LOC,AL

ENDM.MODEL SMALL.STACK.DATA

M0 DB 'ENTER NAME:$'M1 DB 'WHAT IS YOUR NAME? $'LEN DW ($-M1)ARR DB 40H DUP(?)

.CODEMOV AX,@DATAMOV DS,AXMOV SI,00LEA DX,M0MOV AH,09HINT 21H

LOOP1: READSTR ARR[SI] ;READ NAME FROM THE KEYBOARDINC SICMP AL,13JNZ LOOP1MOV ARR[SI],'$'MOV AH,00 ;CLEAR THE SCREENMOV AL,3INT 10HMOV AH,2 ;POSITION THE CURSORMOV BH,0MOV DH,2MOV DL,20INT 10HLEA DX,M1MOV AH,09HINT 21HMOV SI,0

D: LEA DX,ARR[SI]MOV AH,09HINT 21HMOV AH,4CHINT 21HEND

Page 12: Microprocessor Lab Manual Solutions 4th Semester ISE

8. a) Compute the factorial of a positive integer ‘n’ usingrecursive procedure.

Program:;8A) COMPUTE FACTORIAL OF POSITIVE INTEGER 'N' USING RECURSIVE PROCEDURE.MODEL SMALL.STACK.DATA

NUM DB 05HRES DW 01H (?)MSG DB "THE FACTORIAL IS :$"

.CODEMOV AX,@DATAMOV DS,AXMOV AX,01HCALL FACTMOV RES,AXLEA DX,MSGMOV AH,09HINT 21HMOV AX,RESCALL ASCIIMOV AH,4CHINT 21H

FACT PROC NEARMUL NUMDEC NUMJZ NTCALL FACT

NT: RETFACT ENDP

ASCII PROC NEARMOV BX,AXAND AX,0F000HMOV AL,AHMOV CL,4SHR AL,CLCALL DISPMOV AX,BXAND AX,0F00HMOV AL,AHSHR AL,CLCALL DISPMOV AX,BXAND AL,0F0HSHR AL,CLCALL DISPMOV AX,BXAND AL,0FHCALL DISP

Page 13: Microprocessor Lab Manual Solutions 4th Semester ISE

RETASCII ENDP

DISP PROC NEARCMP AL,0AHJB SKIPADD AL,7

SKIP: ADD AL,30HMOV DL,ALMOV AH,02INT 21HRETEND

Page 14: Microprocessor Lab Manual Solutions 4th Semester ISE

9. a) Compute nCr using recursive procedure. Assume that‘n’ and ‘r’ are non-negative integers.Program:;9A) COMPUTE nCr USING RECURSION PROCEDURE. ASSUME THAT 'n' AND 'r' ARE; NON NEGATIVE INTEGER NUMBERS..MODEL SMALL.STACK.DATA

N DW 5R DW 4NCR DW 1

msg db "The nCr is :$".CODE

MOV AX,@DATAMOV DS,AXMOV BX,NINC BXMOV CX,RCALL NCP

lea dx,msgmov ah,09hint 21hmov ax,ncrcall ascii

MOV AH,4CHINT 21H

NCP PROC NEARCMP CX,00HJE L1PUSH CXDEC CXCALL NCPMOV AX,BXPOP CXSUB AX,CXMUL NCRDIV CXMOV NCR,AX

L1: RETNCP ENDP

ASCII PROC NEARMOV BX,AXAND AX,0F000HMOV AL,AHMOV CL,4SHR AL,CLCALL DISPMOV AX,BXAND AX,0F00HMOV AL,AHSHR AL,CLCALL DISPMOV AX,BX

Page 15: Microprocessor Lab Manual Solutions 4th Semester ISE

AND AL,0F0HSHR AL,CLCALL DISPMOV AX,BXAND AL,0FHCALL DISPRETASCII ENDP

DISP PROC NEARCMP AL,0AHJB SKIPADD AL,7

SKIP: ADD AL,30HMOV DL,ALMOV AH,02INT 21HRETEND

Page 16: Microprocessor Lab Manual Solutions 4th Semester ISE

10. a) Find out whether a given sub-string is present ornot in a main string of characters.

Program:;10A) FIND OUT WHETHER A GIVEN SUB STRING IS PRESENT OR NOT IN A; MAIN STRING OF CHARACTERS..MODEL SMALL.STACKDIS_MSG MACRO P1 ; DISPLAY MESSAGE

MOV AH,09HLEA DX,P1INT 21H ; CALL DOS SERVICES

ENDMREAD MACRO P1

MOV AH,0AHLEA DX,P1INT 21H

ENDM.DATA

CR EQU 0DHLF EQU 0AHM3 DB CR,LF,'ENTER THE MAIN STRING:$'M4 DB CR,LF,'ENTER THE SUB STRING:$'M1 DB CR,LF,'THE SUB STRING IS FOUND:$'M2 DB CR,LF,'THE SUB STRING IS NOT FOUND:$'Z DB 50H

DB 0HDB 50H DUP(?)

Y DB 50HDB 0HDB 50H DUP(?)

.CODEMOV AX,@DATAMOV DS,AXDIS_MSG M3READ ZDIS_MSG M4READ YMOV CL,Z+1LEA SI,ZADD SI,2H

LOOP1: PUSH SILEA DI,YADD DI,2HMOV CH,Y+1MOV BH,00H

LOOP3: MOV AL,[SI]CMP AL,[DI]JNE LOOP2INC SIINC DIINC BHCMP BH,Y+1

Page 17: Microprocessor Lab Manual Solutions 4th Semester ISE

JE MES1DEC CHJNZ LOOP3

LOOP2: POP SIINC SIDEC CLCMP CL,00HJNE LOOP1DIS_MSG M2JMP TER

MES1: DIS_MSG M1TER: MOV AH,4CH

INT 21HEND

Page 18: Microprocessor Lab Manual Solutions 4th Semester ISE

11. a) Generate the first ‘n’ Fibonacci numbers.

Program:;11A) PROGRAM TO GENERATE FIRST N FIBONACCI NUMBERS;.MODEL SMALL.STACK.DATA

ARR DB 20 DUP(?)COUNT DB 0AHmsg db "The fibonacci series : ",13,10,"$"

.CODEMOV AX,@DATAMOV DS,AXMOV SI,00HMOV AX,00HMOV ARR[SI],ALINC SImov bx,01hMOV ARR[SI],blINC SIMOV CH,COUNTSUB CH,02H

BACK: ADD AX,BXMOV ARR[SI],ALINC SIxchg ax,bxDEC CHJNZ BACKlea dx,msgmov ah,9int 21hcall dispMOV AH,4CHINT 21H

disp proc nearmov si,00hmov ch,count

loop1: mov al,arr[si]mov ah,0aamadd ax,3030hmov dl,ahmov ah,2push axint 21hpop axmov dl,alint 21hmov ah,2mov dl, ' 'int 21hinc sidec ch

Page 19: Microprocessor Lab Manual Solutions 4th Semester ISE

jnz loop1retdisp endpEND

Page 20: Microprocessor Lab Manual Solutions 4th Semester ISE

12. a) Read the current time from the system and displayit in the standard format on the screen.

Program:;12A) PROGRAM TO READ THE CURRENT TIME FROM THE SYSTEM AND; DISPLAY IT IN THE STANDARD FORMAT ON THRE SCREEN.MODEL SMALL.STACK.DATA

MSG DB 'THE CURRENT TIME IS : $'.CODE

MOV AX,@DATAMOV DS,AX ;Initialise DSLEA DX,MSG ;DISPLAY THE MESSAGEMOV AH,09HINT 21HMOV AH,2CH ;DOS FUNCTION TO GET THE CURRENT SYSTEM TIMEINT 21HMOV AL,CHAAM ;BCD ADJUST AFTER MULTIPLYMOV BX,AXCALL DISPLAYMOV DL,':' ;DISPLAY THE CHAR ':'MOV AH,02HINT 21HMOV AL,CLAAM ;BCD ADJUST AFTER MULTIPLYMOV BX,AXCALL DISPLAYMOV AH,4CH ;DOS FUNCTION TO TERMINATEINT 21H

DISPLAY: ;FUNCTION TO DISPLAY A CHARACTER ONMOV DL,BH ;THE STANDARD O/P DEVICEADD DL,30HMOV AH,02HINT 21HMOV DL,BLADD DL,30HMOV AH,02HINT 21HRETEND

Page 21: Microprocessor Lab Manual Solutions 4th Semester ISE

13. a) Program to simulate a Decimal Up-counter todisplay 00-99.

Program:;13A PROGRAM TO SIMULATE A DECIMAL UPCOUNTER TO DISPLAY 00-99.MODEL SMALL.STACK.DATA.CODE

MOV AX,@DATAMOV DS,AX

START: MOV AL,30H ;AL CONTAINS FIRST DIGITLOOP2: MOV DL,AL

MOV AH,02HINT 21HPUSH AXMOV BL,030H ;BL CONTAINS SECOND DIGIT

LOOP1: MOV AH,02HMOV DL,BLINT 21HINC BL ;INCREMENT SECOND DIGITCALL DELAYMOV AH,03H ;GET CURRENT CURSOR POSITIONINT 10HMOV AH,02H ;SET CURSOR TO NEXT COLUMNMOV DL,01HINT 10HCMP BL,039HJLE LOOP1 ;LOOP SECOND DIGIT(0-9)MOV AH,02H ;SET5 CURSOR POSITION TO PREVIOUS COLUMNMOV DL,00HINT 10HPOP AXINC AL ;INCREMENT 1ST DIGITCMP AL,039HJLE LOOP2 ;LOOP 1ST DIGIT(0-9)MOV AH,4CHINT 21H

DELAY PROCPUSH CXPUSH BXMOV CX,0FFFH

N3: MOV BX,0FFFFHN4: DEC BX

JNZ N4LOOP N3POP BXPOP CXRET

DELAY ENDPEND START

Page 22: Microprocessor Lab Manual Solutions 4th Semester ISE

14. a) Read a pair of input co-ordinates in BCD and movethe cursor to the specified location on the screen.Program:;14A) READ A PAIR OF INPUT CO-ORDINATES IN BCD AND MOVE CURSOR SPECIFIEDPOSITION ON SCREEN..MODEL SMALL.STACK.DATA

XMSG DB 13,10,'ENTER VALUE OF X CO-ORDINATES:','$'X DB ?YMSG DB 13,10,'ENTER VALUE OF Y CO-ORDINATES:','$'Y DB ?

.CODEMOV AX,@DATAMOV DS,AXMOV DX,OFFSET XMSG ;TO READ BCD CO=ORDINATESCALL READ_BCDMOV X,BHMOV DX,OFFSET YMSGCALL READ_BCDMOV Y,BHMOV AH,0 ;TO CLEAR THE SCREENMOV AL,03INT 10HMOV AH,02H ;TO SET CURSOR POSITIONMOV DH,XMOV DL,YMOV BH,0INT 10HMOV DL,'-'MOV AH,06HINT 21HMOV AH,4CHINT 21H

READ_BCD PROCMOV AH,09HINT 21HMOV AH,01H ;FIRST DIGITINT 21HMOV BH,ALMOV AH,01H ;SECOND DIGITINT 21HMOV BL,ALMOV CL,4HSUB BH,30H ;TO CONVERT FROM ASCII TO BCDSUB BL,30HSHL BH,CLOR BH,BLRET

READ_BCD ENDPEND

Page 23: Microprocessor Lab Manual Solutions 4th Semester ISE

15. a) Program to create a file (input file) and to delete anexisting file.

Program:;15A1) PROGRAM TO CREATE A FILE (INPUT FILE).MODEL SMALL.STACK.DATA

FNAME DB 'C:\MASM\FILE.ASM',00HSUCCESS DB 'FILE IS CREATED SUCCESSFULLY$'FAILURE DB 'ERROR DURING FILE CREATION$'

.CODEMOV AX,@DATAMOV DS,AXMOV CX,20HLEA DX,FNAMEMOV AH,3CHINT 21HJC FAILLEA DX,SUCCESSJMP EXIT

FAIL: LEA DX,FAILUREEXIT: MOV AH,09H

INT 21HMOV AH,4CHINT 21HEND

Program:;15A2) PROGRAM TO DELETE AN EXISTING FILE.MODEL SMALL.STACK.DATA

FNAME DB 'C:\MASM\FILE.ASM',00HSUCCESS DB 'FILE DELETED SUCCESSFULLY$'FAILURE DB 'ERROR IN DELETING FILE$'

.CODEMOV AX,@DATAMOV DS,AXMOV CX,20HLEA DX,FNAMEMOV AH,41HINT 21HJC FAILLEA DX,SUCCESSJMP EXIT

FAIL: LEA DX,FAILUREEXIT: MOV AH,09H

INT 21HMOV AH,4CHINT 21H

END