vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web...

73
Department of Information Science and Engineering Microprocessor 8086 Lab Manual [Software] 06CS48L Prepared By: Mr.Venkatesh P Miss.Suma C Microprocessor Lab manual

Transcript of vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web...

Page 1: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

Microprocessor 8086 Lab Manual [Software]

06CS48L

Prepared By: Mr.Venkatesh P Miss.Suma C

Microprocessor Lab manual

Page 2: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

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 ;array given in the sorted order only N DW ($-ARR)/2 ;get the length of the array KEY EQU 0112H POS DB ? MSG1 DB 10,13, "KEY IS FOUND AT POSITION:$" MSG2 DB 10,13, "KEY NOT FOUND$"

.CODE MOV AX,@DATA ; Initialization the data segment register MOV DS, AX MOV BX, 00 ; (copy first index 0 of the array to BX) MOV DX, N-1 ; copy last index N-1 of array to DX register MOV CX, KEY ; copy Keyword to CX register

AGAIN: CMP BX, DX ; Check key word is within array or not JA FAIL ; if not display MSG2 MOV AX, BX ADD AX, DX SHR AX, 1 ; Get the mid position MOV POS,AL MOV SI, AX ADD SI, SI ; since word of data double SI to get exact mid position CMP CX, ARR [SI] ; compare keyword with mid element JAE BIG ; if above or equal make mid as low (jump to label BIG) DEC AX ; else make mid as high MOV DX, AX ; move mid value to DX and check the range again JMP AGAIN BIG: JE SUCCESS ; if key=mid display position of key word INC AX ; else AX=AX+1 MOV BX, AX ; move AX value to BX JMP AGAIN ; Repeat the procedure from label again SUCCESS: LEA DX,MSG1 ; display MSG1 (KEY IS FOUND AT --- POSITION ) MOV AH,09 INT 21H MOV DL,POS ADD DL,01 ; if key=mid then Position in AL=AL+1 ADD DL,30H ; to display position value add ‘0’=30 (converting to ASCII) Microprocessor Lab manual

Page 3: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV AH,02 INT 21H JMP EXIT FAIL: LEA DX, MSG2 ; display MSG2 (KEY NOT FOUND) DISP: MOV AH, 09H ; call DOS function 09h to print the string INT 21HEXIT: MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21H END

Microprocessor Lab manual

Page 4: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

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 carriage return and print the string on the display in the next line.

INCLUDE ONE.ASM ; Include file containing macro to read a character from the keyboard.INCLUDE TWO.ASM ; Include file containing macro to display a character from the keyboard.

.MODEL SMALL .STACK

.DATA M1 DB “ENTER A STRING:$” STR DB 10 DUP(?)

.CODE MOV AX,@DATA ; to initialize Data Segment (DS) Register MOV DS, AX LEA DX,M1

MOV AH,09H INT 21H MOV SI, 0 ; Set array index to 0 NC: READ ; Read a character from the keyboard CMP AL,0DH

JZ NEXT MOV STR[SI],AL INC SI JMP NC NEXT : MOV BX,SI MOV DL,10 MOV AH,02H

INT 21H

MOV DL,13MOV AH,02INT 21H

MOV SI,0MOV DL,STR[SI]

; and store it in array JNZ BAK ; read the next character if not carriage return MOV DL, 10 ; Move the cursor to beginning of the next Line Microprocessor Lab manual

Page 5: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV AH, 2 ; call DOS function 02h to print the character INT 21H

MOV DL, 13 MOV AH, 2 INT 21H

MOV SI, 0 ; Set array index to 0AGAIN: DISP ARR [SI] ; Display the string character by character INC SI ; until carriage return is encountered CMP AL, 13 JNZ AGAIN MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21H END

; Macro to read the character (save as one.asm)

READ MACRO LOC MOV AH, 01H ; call DOS function 01h to read the character INT 21H MOV LOC, AL ENDM

; Macro to display the character (save as two.asm)

DISP MACRO LOC2 MOV DL, LOC2 MOV AH, 02H ; call DOS function 02h to display the character INT 21H ENDM

Microprocessor Lab manual

Page 6: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

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

; sorting in ascending order

.MODEL SMALL

.STACK 100

.DATA

ARRAY DB 73H, 22H, 05H, 80H, 43H ; initialize array of 5 numbers NUM EQU 05 ; size is stored in memory location called NUM

.CODEMOV AX,@DATA ; to initialize Data Segment (DS) RegisterMOV DS, AX

MOV DX, NUM-1 ; store the length in DX register (outer loop count)

FIR: MOV CX, DX ; keep the copy of length in CX (inner loop count)

MOV SI, OFFSET ARRAY ;Offset address of the array is stored in SIBACK: MOV AL, [SI] ; compare first two elements of array

CMP AL, [SI+1] JAE SWAP ; if first element is not greater than second,then swap

INC SI ; Si and Si+1, and compare with next element of array

Microprocessor Lab manual

Page 7: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering LOOP BACK JMP NEXT ; Jump to label next to decrement outer count SWAP: XCHG [SI+1], AL ; swapping content of [SI] with content of [SI+1]

XCHG AL, [SI] INC SI

LOOP BACKNEXT: DEC DX ; decrement outer count to get next element of array till JNZ FIR ; the end of the array MOV AH,4CH INT 21H ; call DOS function 4Ch to safe exit from DOS END

; sorting in descending order

.MODEL SMALL

.STACK 100

.DATA

ARRAY DB 73H, 22H, 05H, 80H, 43H ; initialize array of 5 numbers NUM EQU 05 ; size is stored in memory location called NUM

.CODEMOV AX,@DATA ; to initialize Data Segment (DS) RegisterMOV DS, AX

MOV DX, NUM-1 ; store the length in DX register (outer loop count)

FIR: MOV CX, DX ; keep the copy of length in CX (inner loop count)

MOV SI, OFFSET ARRAY ;Offset address of the array is stored in SIBACK: MOV AL, [SI] ; compare first two elements of array

CMP AL, [SI+1] JLE SWAP ; if first element is not greater than second,then swap

INC SI ; Si and Si+1, and compare with next element of array

LOOP BACK JMP NEXT ; Jump to label next to decrement outer count Microprocessor Lab manual

Page 8: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering SWAP: XCHG [SI+1], AL ; swapping content of [SI] with content of [SI+1]

XCHG AL, [SI] INC SI

LOOP BACKNEXT: DEC DX ; decrement outer count to get next element of array till JNZ FIR ; the end of the array MOV AH,4CH INT 21H ; call DOS function 4Ch to safe exit from DOS END

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

.MODEL SMALL

.STACK

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

.CODE MOV AX,@DATA MOV DS, AX ; to initialize Data Segment (DS) Register MOV AH, 0 ; to clear the screen MOV AL, 3 ; video mode =3 INT 10H LEA DX, MSG ; display MSG MOV AH, 09 ; call DOS function 09h to print the string INT 21H MOV AH, 01 ; call DOS function 01h to read the character INT 21H MOV BL, AL ; store it in BL register MOV BH, 0 ; page zero MOV DH, 12 ; row =12 central row MOV DL, 40 ; col=40 central column MOV AH, 02 ; call dos function to move curserMicroprocessor Lab manual

Page 9: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering INT 10H MOV AL, BL ; display the char AND AL, 0F0H ; select the higher order nibble MOV CL, 4 ; shift count SHR AL, CL ; shift right by 4 CALL DISP ; display it

MOV AL, BL AND AL, 0FH ; select the lower order nibble CALL DISP ; display it MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21H

DISP: CMP AL, 0AH ; convert an alphanumeric character to JB SKIP ; equivalent ASCII value ADD AL, 7 ; if greater than 9 add 37H else

SKIP: ADD AL, 30H ; add 30H MOV DL, AL MOV AH, 02 ; call DOS function 02h to print the character INT 21H RET END

Microprocessor Lab manual

Page 10: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

5. a) Reverse a given string and check whether it is a palindrome or not.

READSTR MACRO AAA ;macro named readstr to read a string MOV SI,0 NC: MOV AH,01 INT 21H CMP AL,0DH ;read the characters until the enter button is pressed JE NEXT MOV AAA[SI],AL INC SI JMP NCNEXT: MOV AAA[SI],'$' ENDM

.MODEL SMALL

.DATA STR DB 10 DUP(0) REVSTR DB 10 DUP(0) LEN1 DW ? P1 DB 10,13, "ENTER A STRING:$" P2 DB 10,13, "REVERSED STRING IS:$" M1 DB 10,13, "STRING IS PALINDROME$" M2 DB 10,13, "STRING IS NOT PALINDROME$"

.CODEMicroprocessor Lab manual

Page 11: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV AX,@DATA ; initializes data segment MOV DS,AX MOV ES,AX ;initializes extra segment

LEA DX,P1 ;to display message P1 on the screen MOV AH,09 INT 21H

READSTR STR ; call a macro to read a string

MOV LEN1,SI ;store the length of the string in LEN1 MOV SI,0 ;initialize SI=0 MOV DI,LEN1 ;keep the copy of length in DI DEC DI

MOV CX,LEN1 REPEAT: MOV AL,STR[DI] ; store the last character in the array str to first location MOV REVSTR[SI],AL ; in the revstr array INC SI DEC DI DEC CX JNZ REPEAT MOV REVSTR[SI],'$'

LEA DX,P2 ;to display message P2 on screen MOV AH,09H INT 21H

LEA DX,REVSTR ; to display the reversed string on sceen MOV AH,09H INT 21H

LEA SI,STR1 ; si points to first string LEA DI,STR2 ;di points to 2nd string CLD ;clear direction flag to increment si and di after the ;execution of string instruction repne cmpsb MOV CX,LEN1 REPE CMPSB ;compare 1st string and second string character by ;character.After each character comparison it sets Z=1 ;if characters are equal,decrements cx by 1 and increment si ;and di and it repeatedly executed until cx=0 JZ SUCCESS LEA DX,M2 MOV AH,09 INT 21H JMP EXIT

SUCCESS: LEA DX,M1 MOV AH,09Microprocessor Lab manual

Page 12: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering INT 21H

EXIT: MOV AH,4CH INT 21H END

6. a) Read two strings, store them in locations STR1 and STR2.Check whether they are equal or not and display appropriated messages. Also display the length of the stored strings.

DISPMSG MACRO M ;macro to display messages LEA DX, M MOV AH, 09 INT 21H ENDM

READSTR MACRO AAA ; macro to read a string LOCAL NC,NEXT MOV SI,0 NC: MOV AH,01 INT 21H CMP AL,0DH ; read the characters until the enter button is pressed JE NEXT MOV AAA[SI],AL INC SI JMP NCMicroprocessor Lab manual

Page 13: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and EngineeringNEXT: MOV AAA[SI],'$' ENDM

DISPLAY MACRO XY ; macro to display length of string MOV BX,XY ADD BX,3030H MOV DL,BH MOV AH,02 INT 21H MOV DL,BL MOV AH,02 INT 21H ENDM

.MODEL SMALL

.DATA P1 DB 10,13, "ENTER 1ST STRING:$" P2 DB 10,13, "ENTER 2ND STRING:$" M1 DB 10,13,"STRINGS ARE EQUAL$" M2 DB 10,13,"STRINGS ARE NOT EQUAL$" S1 DB 10,13,"LENGTH OF FIRST STRING:$" S2 DB 10,13,"LENGTH OF 2ND STRING:$" STR1 DB 20 DUP(0) STR2 DB 20 DUP(0) LEN1 DW ? LEN2 DW ?

.CODE MOV AX,@DATA ; initialize data segment and extra segment MOV DS,AX MOV ES,AX

DISPMSG P1 READSTR STR1 ;call readstr macro to read 1st string MOV LEN1,SI ; move length of 1st string to len1

DISPMSG P2 ; call macro dispmsg to display P2 READSTR STR2 ;call readstr macrto to read 2nd string MOV LEN2,SI ;move length of 2nd string to len2

DISPMSG S1 ; call macro dispmsg to display S1 MOV AL,BYTE PTR LEN1 AAM DISPLAY AX ;call display macro to display the length of 1st string Microprocessor Lab manual

Page 14: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering DISPMSG S2 ; call macro dispmsg to display S2 MOV AL,BYTE PTR LEN2 AAM DISPLAY AX ; call display macro to display the length of 2nd string MOV DX,LEN1 ;compare the length of 1st string with the length of 2nd string CMP DX,LEN2 JNZ FAIL ; if lengths are not equal go to label failure LEA SI,STR1 ; si points to first string LEA DI,STR2 ;di points to 2nd string CLD ;clear direction flag to increment si and di after the ;execution of string instruction repne cmpsb MOV CX,LEN1 REPE CMPSB ;compare 1st string and second string character by ;character.After each character comparison it sets Z=1 ;if characters are equal,decrements cx by 1 and increment si ;and di and it repeatedly executed until cx=0 JZ SUCCESS FAIL: DISPMSG M2 JMP EXITSUCCESS: DISPMSG M1 EXIT: MOV AH,4CH INT 21H END

Microprocessor Lab manual

Page 15: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

7. a) Read your name from the keyboard and display it at a specified location on the screen in front of the message What is your name? You must clear the entire screen before display. READSTR MACRO AAA ; macro to read a name MOV SI,0NCHAR: MOV AH,01 INT 21H CMP AL,0DH JE NEXT MOV STR1[SI],AL INC SI JMP NCHAR NEXT: MOV STR1[SI], '$' ENDM

.MODEL SMALL

.DATA MSG1 DB 10,13, "ENTER THE NAME:$" MSG2 DB 10,13, "WHAT IS YOUR NAME? $" STR DB 40 DUP(?) ROW DB 10 COL DB 20

.CODE MOV AX,@DATA ;initialize data segment MOV DS,AXMicroprocessor Lab manual

Page 16: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering LEA DX,MSG1 MOV AH,09H INT 21H READSTR STR ;call macro to read a name

MOV AH,00 ;clear screen MOV AL,3 INT 10H

MOV DH,ROW ; set row and column value to set the cursor to the MOV DL,COL ; required position MOV AH,02 INT 10H LEA DX,MSG2 ;to display What is your name? MOV AH,09H INT 21H

LEA DX,STR ;to display read name MOV AH,09H INT 21H MOV AH,4CH ;call dos function to safe exit from dos INT 21H END

Microprocessor Lab manual

Page 17: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

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

.MODEL SMALL

.DATA N DB 6 R DB 4 RES DB ?

.CODE

MOV AX,@DATA MOV DS,AX MOV AL,N ;move 'n' value to al register MOV BL,R ;move 'r' value to bl register CALL NCR ;call ncr procedure INT 3H

NCR PROC NEAR ;START OF THE PROCEDURE CMP AL,BL ;if n=r,result is 1 je next

CMP BL,0 ; if r=0, result is 1 je nextMicroprocessor Lab manual

Page 18: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering CMP BL,1 ;if r=1, result is n JE NEXT1 DEC AL ; n=n-1 CMP AL,BL ; if r=n-1, result is n JE NEXT2 PUSH AX PUSH BX CALL NCR ; else ncr= (n-1)cr + (n-1)c(r-1) POP BX POP AX

DEC BL PUSH AX PUSH BX CALL NCR POP BX POP AX RET

NEXT2:ADD RES,1

NEXT1:ADD RES,AL RET

NEXT:MOV RES,1 RET NCR ENDP END

Microprocessor Lab manual

Page 19: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

10. a) Program to simulate a Decimal Up-counter to display 00-99.

; Decimal UP Counter 00-99..MODEL SMALL.STACK.DATA

.CODE MOV AX,@DATA ; to initialize Data Segment (DS) Register MOV DS, AX MOV AL, 30H ; AL contains first digitLOOP2: MOV DL, AL MOV AH, 02H ; call DOS function 02h to print the character INT 21H PUSH AX ;save the first digit in AL to stack

MOV BL, 30H ; BL contains second digitLOOP1: MOV DL, BL MOV AH, 02H INT 21H INC BL ; increment second digit CALL DELAY

MOV AH, 03H ; get current cursor positionMicroprocessor Lab manual

Page 20: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering INT 10H MOV DL, 01H ; set cursor to next column MOV AH, 02H INT 10H

CMP BL, 039H JLE LOOP1 ; loop second digit(0-9)

MOV DL,00H ; set cursor position to previous column MOV AH,02H INT 10H

POP AX INC AL ; increment 1st digit CMP AL, 039H JLE LOOP2 ; loop 1st digit(0-9)

MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21H

DELAY PROC ; Delay procedure between each count value PUSH CX PUSH BX MOV CX, 0FFFH N3: MOV BX, 0FFFFHN4: DEC BX JNZ N4 LOOP N3 POP BX POP CX RETDELAY ENDP END ;end of program

Microprocessor Lab manual

Page 21: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

11. a) Read a pair of input co-ordinates in BCD and move the cursor to the specified location on the 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 ?

.CODE MOV AX,@DATA ; to initialize Data Segment (DS) Register MOV DS,AX

LEA DX, XMSG ;display xmsg MOV AH, 09H INT 21H CALL READ_BCD ;call a procedure read_bcd to read the x-coordinate

MOV X,BH ;store the x-coordinate value from BH reg to X

LEA DX,YMSG ;display ymsg MOV AH, 09H INT 21HMicroprocessor Lab manual

Page 22: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

CALL READ_BCD ;call a procedure read_bcd to read the y-coordinate

MOV Y,BH ;store the Y-coordinate value from BH reg to Y

MOV AH,0 ; to clear the screen MOV AL,03 INT 10H

MOV BH,00 ;to selects page 0 MOV DH,X ; to set cursor position MOV DL,Y MOV AH,02H INT 10H

NEXT:MOV DL,0FFH ;to check whether any key pressed,if any key pressed MOV AH,06 ; it sets Z=0 INT 21H JZ NEXT

MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21H

READ_BCD PROC NEAR

MOV AH, 01H ; to read first digit INT 21H MOV BH, AL

MOV AH, 01H ; to read second digit INT 21H MOV BL, AL

SUB BX,3030H ; to convert from ASCII to bcd MOV CL,04H SHL BH, CL OR BH, BL ;to pack two bcd digits RET READ_BCD ENDP END

Microprocessor Lab manual

Page 23: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

12. a) Program to create a file (input file) and to delete an existing file.

;Program to create a file

.MODEL SMALL

.STACK

.DATA FNAME DB 'C:\8086\FILE.c',00H SUCCESS DB 'FILE IS CREATED SUCCESSFULLY$' FAILURE DB 'ERROR DURING FILE CREATION$'

.CODE MOV AX,@DATA ; to initialize Data Segment (DS) Register MOV DS,AX MOV CX,00H ; normal file with no attributes LEA DX,FNAME ; load the offset add of the path of file to be created to DX MOV AH,3CH ; call DOS function 3CH to create a file INT 21H JC FAIL ; if CF = 1 display fail message LEA DX, SUCCESS ; else display success message JMP EXITFAIL: LEA DX, FAILUREEXIT: MOV AH, 09H ; Call DOS function 09H to print the string

INT 21HMicroprocessor Lab manual

Page 24: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21H END

; Program to delete an existing file

.MODEL SMALL

.STACK

.DATA FNAME DB 'C:\8086\FILE.c',00H SUCCESS DB 'FILE IS DELETED SUCCESSFULLY$' FAILURE DB 'ERROR DURING FILE DELETION$'

.CODE MOV AX,@DATA ; to initialize Data Segment (DS) Register MOV DS,AX MOV CX,00H ; attribute LEA DX,FNAME ; load the offset add of the path of file to be created to DX MOV AH,41H ; call DOS function 3CH to delete a file INT 21H JC FAIL ; if CF = 1 display fail message LEA DX, SUCCESS ; else display success message JMP EXITFAIL: LEA DX, FAILUREEXIT: MOV AH, 09H ; Call DOS function 09H to print the string

INT 21H MOV AH, 4CH ; call DOS function 4Ch to safe exit from DOS INT 21HMicroprocessor Lab manual

Page 25: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering END

*********************************END*************************************

Microprocessor 8086 Lab Manual [Hardware]

06CS48L

Microprocessor Lab manual

Page 26: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

Microprocessor Lab manual

Page 27: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering;1b) Read status of 8 input bits from the logic controller interface & display ff if even parity ;bits otherwise display 00. Also display number of 1's in the input data.

.MODEL SMALL

.STACK

.DATA PA EQU 0E880H ; port-A address PB EQU 0E881H ; port-B address PC EQU 0E882H ; port-C address CR EQU 0E883H ; control register address CW EQU 82H ; contol word to program port-B as input port and port-A & port-C as output ;port MSG DB "NUMBER OF 1'S:$"

.CODE MOV AX,@DATA MOV DS,AX ; ds initialisation

MOV DX,CR MOV AL,CW OUT DX,AL ; to initialise control register

MOV DX,PB ; point dx to port-b IN AL,DX ; get data from port-b MOV BL,AL OR AL,AL JPO ODD ; if parity is odd then display 00 in port-a

MOV DX,PA ; else display ff in port-a MOV AL,0FFH OUT DX,AL

JMP COUNT ; go to counting the no of 1's

ODD: MOV DX,PA ; if parity is odd then display 00 in port-a MOV AL,00H OUT DX,AL

COUNT: MOV CL,08 ; no of bits to be tested MOV BH,00 ; count of 1's

BACK: SHR BL,01 ; to test each bit JNC SKIP INC BH ; if bit is 1 increment bhSKIP: LOOP BACK ; decrement cx, if not 0 it go to label back

Microprocessor Lab manual

Page 28: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV DX, OFFSET MSG ; to display message MOV AH,09H INT 21H

ADD BH,30H ; to dispaly count MOV DL,BH MOV AH,02H INT 21H

MOV AH,4CH ; termination INT 21H

DELAY PROC ; Delay procedure between each count value PUSH CX PUSH BX MOV CX, 0FFFH N3: MOV BX, 0FFFFHN4: DEC BX JNZ N4 LOOP N3 POP BX POP CX RETDELAY ENDP END ;end of program

Microprocessor Lab manual

Page 29: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

2b) Perform the following functions using the Logic Controller Interface. i. BCD up-down Counter ii. Ring Counter

.MODEL SMALL

.STACK

.DATA PA EQU 01100H PB EQU 01101H PC EQU 01102H CR EQU 01103H CW EQU 82H ; MSG DB "PRESS 1 FOR BCD COUNTER 2 FOR RING COUNTER $"

.CODE MOV AX , @DATA MOV DS , AX

MOV DX , CR MOV AL , CW OUT DX , AL

; MOV DX , OFFSET MSG ; MOV AH , 09H ; MOV AH , 01H ; INT 21H

; CMP AL,31H ; JE BCD ; CMP AL,32H ; JE RING

; JMP STOP

BCD: MOV AL ,00H MOV DX , PAUP: OUT DX , AL CALL DELAY

INC AL CMP AL , 09H JB UPUP1: OUT DX , AL CALL DELAY

DEC AL CMP AL ,00H

Microprocessor Lab manual

Page 30: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering JGE UP1 ; JMP STOP RING: MOV AL , 01H MOV DX , PA MOV CL , 16UP2: OUT DX , AL CALL DELAY

ROR AL , 01H LOOP UP2 OUT DX,AL

STOP: MOV AH , 4CH INT 21H

DELAY PROC PUSH CX PUSH AX MOV CX , 0FFFFHDELLOOP:MOV AX , 0FFFFHBK: DEC AX JNZ BK LOOP DELLOOP POP AX POP CX RET DELAY ENDP END

OR.MODEL SMALL.STACK.DATA PA EQU 1100H ; PORT-A ADDRESS PB EQU 1101H ; PORT-B ADDRESS PC EQU 1102H ; PORT-C ADDRESS CR EQU 1103H ; CONTROL REG ADDRESS CW EQU 82H ; CONTOL WORD TO PROGRAM PORT-B AS INPUT & PORT-A & PORT-C AS OUTPUT MSG DB "ENTER 1 FOR BCD COUNTER, 2 FOR RING COUNTER",13,10,"$".CODE MOV AX,@DATA MOV DS,AX ;DATA SEGMENT INITIALISATION

Microprocessor Lab manual

Page 31: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV DX,CR MOV AL,CW OUT DX,AL ;TO INITIALISE CONTROL REGISTER

MOV DX,OFFSET MSG MOV AH,09H INT 21H ; TO DISPLAY MESSAGE

MOV AH,01H INT 21H ; TO READ CHARACTER FROM KEYBOARD(BCD OR RING)

CMP AL,31H ;IF 1 IS ENTERED GO TO BCD COUNTER JE BCD1

CMP AL,32H ; IF 2 IS ENTERED GO TO RING COUNTER JE RING1

JMP EXIT ; OTHERWISE TERMINATE THE PROGRAM

BCD1: MOV CL,0AH ; NO OF COUNTS THAT IS FROM 0 TO 9 BCD: MOV AL,00H ; TO COUNT FROM 0 TO 9(UP-COUNTER) MOV DX,PA UP: OUT DX,AL

CALL DELAY INC AL LOOP UP MOV CL,0AH ; TO COUNT FROM 9 TO 0(DOWN-COUNTER) DOWN: DEC AL OUT DX,AL

CALL DELAY ; TO INTRODUCE DELAY BETWEEN SUCCESSIVE COUNTS LOOP DOWN JMP EXIT ; TERMINATE

RING1: MOV CL,16 ; 16 ITERATIONS(RING COUNTER) MOV AL,80H MOV DX,PA RING: OUT DX,AL ; OUTPUT PORT-A

CALL DELAY ROR AL,01H ; TO ROTATE THE BITS TOWARDS RIGHT WITHOUT CARRY LOOP RING

EXIT: MOV AH,4CH INT 21H ;TERMINATION OF PROGRAM

DELAY PROC PUSH CX PUSH AXMicroprocessor Lab manual

Page 32: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV CX,0FFFFHDELLOOP:MOV AX,0FFFFH BACK: DEC AX JNZ BACK LOOP DELLOOP POP AX POP CXRETDELAY ENDPEND

Microprocessor Lab manual

Page 33: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

3b) Read the status of two 8-bit inputs (X & Y ) from the Logic Controller Interface and display X*Y..MODEL SMALL.STACK.DATA.CODEMOV DX,1103HMOV AL,82HOUT DX,ALMOV DX,1101HIN AL,DXMOV BL,ALIN AL,DXMUL BLMOV DX,1100HOUT DX,ALMOV AH,4CHINT 21HEND

Microprocessor Lab manual

Page 34: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

4b) Display messages FIRE and HELP alternately with flickering effects on a 7-segment display interface for a suitable period of time. Ensure a flashing rate that makes it easy to read both the messages (Examiner does not specify these delay values nor it is necessary for the student to compute these values).

.MODEL SMALL

.STACK

.DATA FIRE DB 71H, 06H, 31H, 79H, 0, 0 HELP DB 76H, 79H, 38H, 73H, 0, 0 PA EQU 01100H PB EQU 01101H PC EQU 01102H CR EQU 01103HCW EQU 80H

.CODEMOV AX , @DATAMOV DS , AX

MOV AL , CWMOV DX , CROUT DX , AL

CALL DELAY

MOV DX, PC MOV AL, 07H OUT DX,AL MOV CX, 0FH

IT: CALL FIRE1 CALL DELAY CALL HELP1 LOOP ITMOV AH , 4CH INT 21HFIRE1 : PUSH CX MOV CX,0FFHXX: MOV BL, 05H MOV SI, OFFSET FIRE

Microprocessor Lab manual

Page 35: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and EngineeringLOOP1: MOV AL, BL MOV DX, PC OUT DX, AL MOV DX, PA LODSB OUT DX, AL CALL DELAY DEC BL JNZ LOOP1 LOOP XX POP CX RET

HELP1: PUSH CX MOV CX,0FFHXX1: MOV BL, 05H MOV SI, OFFSET HELPLOOP2: MOV AL, BL MOV DX, PC OUT DX, AL MOV DX, PA LODSB OUT DX, AL CALL DELAY DEC BL JNZ LOOP2 LOOP XX1 POP CX RET DELAY: PUSH CX PUSH AX MOV AX, 0FH LP1: MOV CX, 0FFFFH LP: LOOP LP DEC AX JNZ LP1 POP AX POP CX RET END

Microprocessor Lab manual

Page 36: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

5 b) Assume any suitable message of 12 characters length and display it in the rolling fashion on a 7-segment display interface for a suitable period of time. Ensure a flashing rate that makes it easy to read both the messages. (Examiner does not specify these delay values nor it is necessary for the student to compute these values).

.MODEL SMALL

.STACK

.DATAARCH DB 0,0,0,0,0,0,7BH,50H,1CH,78H,58H,7BH,78H,10H,74H,58H,50H,77H,0,0,0,0,0,0,0PA EQU 1100HPB EQU 1101HPC EQU 1102HCR EQU 1103HCW EQU 80HCOUNT DB ?.CODE MOV AX,@DATA MOV DS,AX MOV COUNT,40H MOV AL,CW MOV DX,CR OUT DX,AL CALL DELAY MOV DI,00HLOOP0: MOV DX,PC MOV AL,07H OUT DX,AL MOV CX,06H MOV BL,00 MOV SI,OFFSET ARCH ADD SI,DILOOP1: MOV AL,BL MOV DX,PC OUT DX,AL MOV DX,PA LODSB OUT DX,AL CALL DELAY INC BL CMP BL,05 JLE LOOP2

Microprocessor Lab manual

Page 37: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV BL,00LOOP2: LOOP LOOP1 DEC COUNT JNZ LOOP0 MOV COUNT,40H INC DI CMP DI,18 JLE LOOP3 MOV DI,00LOOP3: MOV AH,0BH INT 21H OR AL,AL JZ LOOP0 MOV AH,4CH INT 21HDELAY PROC NEAR PUSH CX PUSH AX MOV AX,0FHLP1: MOV CX,0FFFFHLP: LOOP LP DEC AX JNZ LP1 POP AX POP CX RET DELAY ENDP END

Microprocessor Lab manual

Page 38: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

6b) Convert a 16-bit binary value (assumed to be an unsigned integer) to BCD and display it from left to right and right to left for specified number of times on a 7-segment display interface.

.MODEL SMALL

.STACK

.DATA PORTA EQU 01100H PORTB EQU 01101H PORTC EQU 01102H CWR EQU 01103H NUM DW 0FFFFH TIMES DW 3 ;NO. OF TIMES TO EXECUTE TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH BLANK1 DB 0,0,0,0,0,0 TABLE1 DB 5 DUP(?) BLANK2 DB 0,0,0,0,0,0 ADDR DW ? ; ADDRESS OF THE STRING COUNT DW 0FFH ; NO.OF TIMES TO DISPLAY

.CODESTART: MOV AX,@DATA MOV DS,AX

MOV AL,80H MOV DX,CWR OUT DX,AL

MOV CX,05 MOV SI,4 MOV AX,NUM MOV BP,10 ; MUM/10 FOR EXTRACTING DIGIT LEA BX,TABLERPT1: MOV DX,0 DIV BP PUSH AX MOV AL,DL XLAT MOV TABLE1[SI],AL POP AX DEC SI LOOP RPT1

Microprocessor Lab manual

Page 39: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV BX,TIMES

;THE FOLLOWING LOOP DISPLAYS FROM LEFT TO RIGHT

LOOP1: MOV CX,12 ; NO.OF STRINGS TO BE DISPLAYED (LENGTH-6) LEA DX,BLANK1 ; ADDRESS OF STRING MOV ADDR,DX

RPT2: MOV COUNT,0FFH ; NO.OF TIMES A SINGLE STRING TO BE DISPLAYED

CALL DISPLAY ; CALL DISPLAY PROCEDURE WHILE INCREMENTING ADDRESS

INC ADDR LOOP RPT2

MOV CX,12 ; NO.OF STRINGS TO BE DISPLAYED (LENGTH-6) LEA DX,BLANK2 ; ADDRESS OF STRING MOV ADDR,DX

;THE FOLLOWING LOOP DISPLAYS FROM RIGHT TO LEFT

RPT3: MOV COUNT,0FFH ; NO.OF TIMES A SINGLE STRING TO BE DISPLAYED CALL DISPLAY ; CALL THE DISPLAY PROCEDURE DEC ADDR ; DECREMENT THE ADDRESS IN A LOOP LOOP RPT3 DEC BX JNZ LOOP1

MOV AH,4CH ; TERMINATING THE PROGRAM INT 21H

DISPLAY PROC

PUSH BX PUSH CX MOV DI,COUNTNTIMES: MOV SI,ADDR ; GET STARTING ADDRESS TO DISPLAY MOV BL,6 ; DISPLAY 6 CHARACTERS FROM GIVEN ADDRESSRPT11: MOV AL,BL MOV DX,PORTC ; SELECT DIGIT ON PORT C DEC AL OUT DX,AL MOV DX,PORTA ; DATA ON PORT A LODSB OUT DX,AL MOV CX,0FFFFHD1: NOP NOP NOP NOPMicroprocessor Lab manual

Page 40: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering NOP NOP NOP LOOP D1 DEC BL JNZ RPT11 ; LOOP TO DISPLAY 6 DIGITS DEC DI JNZ NTIMES ; LOOP TO DISPLAY COUNT TIMES POP CX POP BX RET

DISPLAY ENDP END START

Microprocessor Lab manual

Page 41: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

7b) Drive a Stepper Motor interface to rotate the motor in clockwise direction by N steps (N is specified by the examiner). Introduce suitable delay between successive steps. (Any arbitrary value for the delay may be assumed by the student).

.MODEL SMALL

.STACK

.DATAPA EQU 01100HPB EQU 01101HPC EQU 01102HCR EQU 01103HCW EQU 80HN EQU 50PHASE_D EQU 088HPHASE_C EQU 044HPHASE_B EQU 022HPHASE_A EQU 011H

.CODE MOV DX,CR MOV AL,CW OUT DX,AL MOV CX,N

AGAIN: MOV AL,PHASE_A MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_B MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_C MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_D

Microprocessor Lab manual

Page 42: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV DX,PC OUT DX,AL CALL DELAY

LOOP AGAIN MOV AH,4CH INT 21H

DELAY PROC PUSH CX PUSH AX MOV CX,0FFFH

L1:MOV AX,1FFFH L2:DEC AX JNZ L2 LOOP L1 POP AX POP CX RET DELAY ENDP END

Microprocessor Lab manual

Page 43: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

8b) Drive a stepper motor interface to rotate the motor in anti- clockwise direction by N steps (N is specified by the examiner). Introduce suitable delay between successive steps ( Any arbitrary value for he delay may be assumed by the student).

.MODEL SMALL

.STACK

.DATAPA EQU 01100HPB EQU 01101HPC EQU 01102HCR EQU 01103HCW EQU 80HN EQU 50PHASE_D EQU 011HPHASE_C EQU 022HPHASE_B EQU 044HPHASE_A EQU 088H

.CODE MOV DX,CR MOV AL,CW OUT DX,AL MOV CX,N

AGAIN: MOV AL,PHASE_A MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_B MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_C MOV DX,PC OUT DX,ALMicroprocessor Lab manual

Page 44: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering CALL DELAY

MOV AL,PHASE_D MOV DX,PC OUT DX,AL CALL DELAY

LOOP AGAIN MOV AH,4CH INT 21H

DELAY PROC PUSH CX PUSH AX MOV CX,0FFFH

L1:MOV AX,1FFFH L2:DEC AX JNZ L2 LOOP L1 POP AX POP CX RET DELAY ENDP END

Microprocessor Lab manual

Page 45: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

9b) Drive a stepper motor interface to rotate the motor by N steps left direction and N steps right direction (N is specified by the examiner). Introduce suitable delay between successive steps. (Any arbitrary value for the delay may be assumed by the student).

.MODEL SMALL

.STACK

.DATA PA EQU 01100H PB EQU 01101H PC EQU 01102H CR EQU 01103H CW EQU 80H N EQU 100H

PHASE_A EQU 077H PHASE_B EQU 0BBH PHASE_C EQU 0DDH PHASE_D EQU 0EEH

PHASE_AT EQU 0EEH PHASE_BT EQU 0DDH PHASE_CT EQU 0BBH PHASE_DT EQU 077H.CODE

MOV DX,CR MOV AL,CW OUT DX,AL MOV CX,N CALL CLOCK MOV CX,N CALL ANTI MOV AH,4CH INT 21H

CLOCK PROCAGAIN: MOV AL,PHASE_A MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_B

Microprocessor Lab manual

Page 46: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_C MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_D MOV DX,PC OUT DX,AL CALL DELAY

LOOP AGAIN RET CLOCK ENDP

ANTI PROCAGAIN1: MOV AL,PHASE_AT MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_BT MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_CT MOV DX,PC OUT DX,AL CALL DELAY

MOV AL,PHASE_DT MOV DX,PC OUT DX,AL CALL DELAY LOOP AGAIN1 RET ANTI ENDP DELAY PROC PUSH CX PUSH AX MOV CX, 0FFFHL1: MOV AX, 0FFFHL2: DEC AX JNZ L2Microprocessor Lab manual

Page 47: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering LOOP L1 POP AX POP CX RETDELAY ENDPEND

10b) Scan a 8 x 3 keypad for key closure and to store the code of the key pressed in a memory location or display on screen. Also display row and column numbers of the key pressed.

.MODEL SMALL

.STACK 100

.DATA MSG1 DB 13,10,'ROW NUMBER : ' ROW DB ? MSG2 DB ' COL NUMBER : ' COL DB ? MSG3 DB ' KEY PRESSED: ' KEYINFO DB ?,'$' PROMPT DB ' PRESS ANY KEY ON THE COMPUTER KBD TO RETURN TO DOS',13,10,'$' ASKICOD DB '0123456789+-*/=%CEXXXXXX'; NUM DB 0FFH

PORTA EQU 01100H PORTB EQU 01101H PORTC EQU 01102H CW EQU 01103H

.CODESTART : MOV AX,@DATA MOV DS,AX

MOV AL,90H MOV DX,CW OUT DX,AL MOV AH,9 LEA DX,PROMPT ; PRINT MESSAGE FOR QUIT INT 21H

HELL : MOV AH,0BH INT 21H OR AL,AL JNZ HEAVEN

CALL SCANKEY CALL DELAY CALL DELAY

Microprocessor Lab manual

Page 48: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering CALL PRINT

JMP HELL

HEAVEN: MOV AH,4CH INT 21H

SCANKEY PROC MOV DI,00 ; ASSUME KEY IS NOT PRESSEDLOOP1 : MOV BL,01 ; ROW NUMBER = 1RPT1 : MOV DX,PORTC MOV AL,BL OUT DX,AL MOV DX,PORTA IN AL,DX CMP AL,00 JNE SCANCOL ; JUMP FOR SCAN COLUMN SHL BL,01 ; CHECK FOR NEXT ROW CMP BL,04 JLE RPT1 JMP QUIT ; UNTIL KEY IS RECOGNIZED ON BOARD

SCANCOL:MOV COL,31H ; ASCII CODE FOR ROW 1

NEXTBIT:SHR AL,01 JC NEXT1 INC COL JMP NEXTBIT

NEXT1 :CMP BL,04 ; IF BL=4, ROW=3 JL NEXT2 DEC BLNEXT2 :ADD BL,30H MOV ROW,BL MOV DI,01H ; KEY IS PRESSED

QUIT : RET

SCANKEY ENDP

PRINT PROC

CMP DI,01 ; KEY PRESSED JNE RETRY

MOV AL,ROW SUB AL,31H MOV CL,3 SHL AL,CLMicroprocessor Lab manual

Page 49: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

ADD AL,COL SUB AL,31H MOV BX,OFFSET ASKICOD XLAT MOV KEYINFO,AL

MOV AH,09H ; PRINT AFTER CALCULATING LEA DX,MSG1 INT 21H

RETRY : RETPRINT ENDP

DELAY PROC

PUSH CX PUSH DX MOV DX,0FFFH D2 : MOV CX,060FAH D1 : LOOP D1 DEC DX JNZ D2 POP DX POP CX RET

DELAY ENDP

END START

Microprocessor Lab manual

Page 50: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

11b) Scan a 8 x 3 keypad for key closure and simulate ADD and SUBTRACT operations as in a calculator..MODEL SMALL

.STACK 100

.DATA MSG1 DB 13,10,'ROW NUMBER : ' ROW DB ? MSG2 DB ' COL NUMBER : ' COL DB ? MSG3 DB ' KEY PRESSED: ' KEYINFO DB ?,'$'

INPUT DB 20 DUP(?) ; CHARACTERS STORED HERE INPUT1 DB 20 DUP(?),'$' RESULT DB ? MSG4 DB 13,10,' THE RESULT : ' FINAL DB 0,0,'$' PROMPT DB 'PRESS ANY KEY ON THE COMPUTER KBD TO RETURN TO DOS',13,10,'$'

ASKICOD DB '0123456789+-*/=%CE '

PORTA EQU 01100H PORTB EQU 01101H PORTC EQU 01102H CW EQU 01103H

.CODESTART : MOV AX,@DATA MOV DS,AX

MOV AL,90H MOV DX,CW OUT DX,AL MOV AH,09H LEA DX,PROMPT ; PRINT MESSAGE FOR QUIT INT 21H

HELL : MOV AH,0BH ; UNTIL KEY IS PRESSED INT 21H OR AL,AL JNZ HEAVEN

Microprocessor Lab manual

Page 51: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering CALL SCANKEY CALL DELAY CALL DELAY CALL PRINT JMP HELL

HEAVEN:CALL CALCULATE MOV AH,4CH INT 21H

SCANKEY PROC ; PROCEDURE FOR GETTING KEY STATUS

MOV DI,00 ; ASSUME KEY IS NOT PRESSEDLOOP1 : MOV BL,01 ; ROW NUMBER = 1RPT1 : MOV DX,PORTC MOV AL,BL OUT DX,AL

MOV DX,PORTA IN AL,DX CMP AL,00 JNE SCANCOL ; JUMP FOR SCAN COLUMN SHL BL,01 ; CHECK FOR NEXT ROW CMP BL,04 JLE RPT1 ; SCAN FOR ALL THREE ROWS JMP QUIT ; IMPORTANT INSTRUCTION

SCANCOL : MOV COL,31H ; ASCII CODE FOR ROW 1NEXTBIT : SHR AL,01 JC NEXT1 INC COL JMP NEXTBIT

NEXT1 : CMP BL,04 ; IF BL=4, ROW=3 JL NEXT2 DEC BLNEXT2 : ADD BL,30H MOV ROW,BL MOV DI,01H ; KEY IS PRESSED

QUIT : RET

SCANKEY ENDP

Microprocessor Lab manual

Page 52: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and EngineeringPRINT PROC ; PROCEDURE TO DECODE KEY PRESSED

CMP DI,01 ; KEY PRESSED JNE RETRY MOV AL,ROW SUB AL,31H MOV CL,3 SHL AL,CL

ADD AL,COL SUB AL,31H MOV INPUT[SI],AL ; STORE IN INPUT ARRAY MOV BX,OFFSET ASKICOD XLAT MOV KEYINFO,AL MOV INPUT1[SI],AL INC SI

MOV AH,2 ; PRINT THE CHARACTER MOV DL,AL INT 21H

RETRY : RET

PRINT ENDP

DELAY PROC

PUSH CX PUSH DX MOV DX,0FFFH D2 : MOV CX,060FAH D1 : LOOP D1 DEC DX JNZ D2 POP DX POP CX

RET

DELAY ENDP

CALCULATE PROC ; PROCEDURE TO CALCULATE

MOV CX,SI SHR CX,1 ; NUMBER OF OPERATIONS MOV SI,1Microprocessor Lab manual

Page 53: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering MOV AL,INPUT[0] MOV RESULT,AL

LOOP4 : MOV BL,INPUT[SI] ; OPCODE + OR - MOV AL,INPUT[SI+1] CMP BL,0AH ; ADD JE ADDNUM CMP BL,0BH ; SUB JE SUBNUM

ADDNUM: ADD RESULT,AL ADD SI,2 LOOP LOOP4 JMP HEX2DEC

SUBNUM :SUB RESULT,AL ADD SI,2 LOOP LOOP4

HEX2DEC:MOV AL,RESULT ; CONVERT HEX TO DECIMAL AAM ADD AX,3030H MOV FINAL,AH MOV FINAL+1,AL ; TO PRINT USING ASCII

MOV AH,9 MOV DX,OFFSET MSG4 INT 21H

RET

CALCULATE ENDP

END START

12b) Generate the Sine Wave using DAC interface (The output of the DAC is to be displayed on the CRO).

.MODEL SMALL

Microprocessor Lab manual

Page 54: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering.STACK

.DATA PORTA EQU 01100H PORTB EQU 01101H PORTC EQU 01102H CTRL EQU 01103H

SINS DB 127,149,170,191,209,225,237,247,253,255,253,247,238,225,209,191,170,149,127,105,83,63,45,29,16,7,1,0,1,7,16,29,45,63,83,105,127.CODE MOV AX,@DATA MOV DS,AX

MOV DX,CTRL MOV AL,80H OUT DX,AL PREV : MOV CX,36 LEA SI,SINS MOV DX,PORTA

BACK : MOV AL, [SI+1] OUT DX,AL CALL DELAY INC SI LOOP BACK JMP PREV MOV AH,4CH INT 21H DELAY PROC PUSH CX PUSH DX MOV DX,0FFH D2 : MOV CX,0FFH D1 : LOOP D1 DEC DX JNZ D2 POP DX POP CX RET DELAY ENDP

END

13b) Generate a Half Rectified Sine wave form using the DAC interface. (The output of the DAC is to be displayed on the CRO).

.MODEL SMALL

Microprocessor Lab manual

Page 55: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering.STACK

.DATA PORTA EQU 01100H PORTB EQU 01101H PORTC EQU 01102H CTRL EQU 01103H

SINS DB 127,149,170,191,209,225,237,247,253,255,253,247,238,225,209,191,170,149,127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127

.CODE MOV AX,@DATA MOV DS,AX

MOV DX,CTRL MOV AL,80H OUT DX,AL PREV : MOV CX,36 LEA SI,SINS MOV DX,PORTA

BACK : MOV AL, [SI+1] OUT DX,AL CALL DELAY INC SI LOOP BACK JMP PREV MOV AH,4CH INT 21H DELAY PROC PUSH CX PUSH DX MOV DX,0FFH D2 : MOV CX,0FFH D1 : LOOP D1 DEC DX JNZ D2 POP DX POP CX RET DELAY ENDP

END

Microprocessor Lab manual

Page 56: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering14b) Generate a Fully Rectified Sine waveform using the DAC interface. (The output of the DAC is to be displayed on the CRO).

.MODEL SMALL

.STACK

.DATA PORTA EQU 01100H PORTB EQU 01101H PORTC EQU 01102H CTRL EQU 01103H

SINS DB 127,149,170,191,209,225,237,247,253,255,253,247,238,225,209,191,170,149,127.CODE MOV AX,@DATA MOV DS,AX

MOV DX,CTRL MOV AL,80H OUT DX,AL PREV : MOV CX,18 LEA SI,SINS MOV DX,PORTA

BACK : MOV AL, [SI+1] OUT DX,AL CALL DELAY INC SI LOOP BACK JMP PREV MOV AH,4CH INT 21H DELAY PROC PUSH CX PUSH DX MOV DX,0FFH D2 : MOV CX,0FFH D1 : LOOP D1 DEC DX JNZ D2 POP DX POP CX RET DELAY ENDP

END

Microprocessor Lab manual

Page 57: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering15b) Drive an elevator interface in the following way:i. Initially the elevator should be in the ground floor, with all requests in OFF state.ii. When a request is made from a floor, the elevator should move to that floor, wait there for a couples of seconds,and then come down to ground floor and stop. If some requests occur during going up or coming down they should be ignored.

.

.MODEL SMALL

DISPLAY MACRO XLOCAL UP,DOWNMOV CX,XMOV AL,00HMOV DX, 1100H

UP:OUT DX,ALCALL DELAY

INC ALLOOP UP

MOV CX,XDEC AL

DOWN: OUT DX,ALCALL DELAYDEC ALLOOP DOWNENDM

.CODEMOV AL,82HMOV DX,1103HOUT DX,AL

MOV DX,1100HMOV AL,00HOUT DX,AL

MOV AL,0F0HOUT DX,AL

MOV AH,01HINT 21H

MOV DX,1101HIN AL, DXAND AL,0FHCMP AL,0EHJZ GRNDMicroprocessor Lab manual

Page 58: vpnaik.weebly.comvpnaik.weebly.com/uploads/1/0/1/1/10114562/mp_lab_ma…  · Web viewMicroprocessor 8086 Lab Manual [Software] 06CS48L . Prepared By: Mr.Venkatesh P. Miss.Suma C

Department of Information Science and Engineering

CMP AL,0DHJZ FIRST

CMP AL,0BHJZ SECOND

JMP THIRDGRND: MOV AL,00H MOV DX,1100H OUT DX,AL JMP LAST FIRST: DISPLAY 04H JMP LAST SECOND: DISPLAY 07H JMP LAST

THIRD: DISPLAY 0AH LAST: MOV AH,4CH INT 21H DELAY PROC NEAR PUSH CX PUSH BX MOV CX,08F0H LOP: MOV BX,0FFFFH LOOP1: DEC BX JNZ LOOP1 LOOP LOP POP BX POP CX RET DELAY ENDP END

Microprocessor Lab manual