Upload
saami-matloob
View
6.587
Download
348
Embed Size (px)
DESCRIPTION
Microprocessor Lab Manual Solutions 4th Semester Part A Solutions 06CSL58 Visvesvaraya Technological UniversityVTUBCETISE
Citation preview
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
DISP:MOV AH,09HINT 21HMOV AH,4CHINT 21HEND
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
MOV AH,02HINT 21HENDM
READKB.MAC
READ MACRO LOCMOV AH,01HINT 21HMOV LOC,ALENDM
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
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
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
INT 21HEND_PR: MOV AH,4CH
INT 21HEND
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
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
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
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
RETASCII ENDP
DISP PROC NEARCMP AL,0AHJB SKIPADD AL,7
SKIP: ADD AL,30HMOV DL,ALMOV AH,02INT 21HRETEND
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
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
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
JE MES1DEC CHJNZ LOOP3
LOOP2: POP SIINC SIDEC CLCMP CL,00HJNE LOOP1DIS_MSG M2JMP TER
MES1: DIS_MSG M1TER: MOV AH,4CH
INT 21HEND
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
jnz loop1retdisp endpEND
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
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
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
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