Microprocessor System-Ii (8086) Practical File: Semester
Microprocessor System-Ii (8086) Practical File: Semester
Microprocessor System-Ii (8086) Practical File: Semester
SUBMITTED BY: HIMANSHU CHOWDHARY DEPARTMENT: ELECTRONICS AND COMMUNICATION UNIVERSITY ID: 15713302809 COLLEGE/UNIVERSITY: HMRITM (G.G.S.I.P.U)
SEMESTER: SEVENTH
INDEX
Serial number
1 2
Topic
Introduction to 8086 kit and its commands
To add two binary numbers each of string eight bytes.
Date
Signature
7 8
TO MULTIPLY ASCII STRING OF EIGHT NUMBERS BY A SINGLE ASCII DIGIT TO CONVERT STRING OF DATA TO ITS COMPLEMENTFROM 1S AND 2S FORM AND STORE IT
10
LAB 1
Aim: Introduction to 8086 kit and its commands 8086 architecture:
Hardware description: 1. Cpu: 8086 is a 16 bit third generation microprocessor and is suitable for exceptionally wide spectrum of microprocessor application. The flexibility of one of the most outstanding characteristics 8086 has got 16 data lines and 20 address lines. This is done by using 74LS373 in this kit, 8086 is used in max mode. Then INTR, TEST and hold inputs of 8086 are pulled down and brought out at pcb . FRC connector the maskable interrupt is available to peripheral circuits. 2. Co-processor-8087: the 8087 coprocessor looks have been designed on 8086 and 8088 so that these types of processor can be accommodates in future.
3. I/O processor (8089): the 8086 and 8088 are designed to used with 8089 in high performance input output applications. The 8089 is conceptually resembles a microprocessor with two direct memory access channels and an instruction set specifically Tailored for i/o applications. 4. Clock generations: The clock generator circuit is an intels 8284 clock generator /driver. The circuit accepts a crystal i/p which operates at a fundamental frequency of 14745 hz. The clock generator/driver divides the frequency by three and produce 4.9 MHZ clk signal required by cpu. 5. Bus controller: the 8288 is the bus controller which decodes the status signal o/p by 8089 or a maximum mode 8086 or 8088 when these signal indicate that the processor is to run a clock cycle, the 8288 issues a bus command that identifies the bus cycle as memory read, write, i/o read or write etc. 6. Memory: M 86-02 provides 16k bytes of EPROM loaded with monitor and 16k bytes of CMOS RAM. EPROM 64bkbytes of EPROM using 27128, 128 bytes of EPROM using 27256, 256 bytes RAM -> 28kbytes of RAM using 62256. 28 pin socket and for EPROM area named as even rom and odd rom and 2 28 pin socket for RAM area named as even and odd RAM 7. 8255: The Intel 8255 (or i8255) Programmable Peripheral interface chip is a peripheral chip
originally developed for the Intel 8085 microprocessor, and as such is a member of a large array of such chips, known as the MCS-85 Family. This chip was later also used with the Intel 8086 and its descendants. It is made in DIP 40 and PLCC 44 pins encapsulated versions.
8. 8257: The Intel* 8257 is 4-channel direct memory access (DMA) controller. It is specifically designed to simplify the transfer of data at high speeds for the Intel microcomputer systems. Its primary function is to generate, upon peripheral request, sequential memory address which will allow the peripheral to read or write data directly to or from memory. Acquisition of the system bus in accomplished via the CPU's hold function. The 8257 has priority logic that resolves the peripherals requests and issues composite hold request to the CPU. It maintains the OMA cycle count for each channel and outputs control signal Jo notify the peripheral that the programmed number of OMA cycles is complete. Other output control signals simplify sectored data transfers. The 8257 represents significant savings in component count for DMA-based microcomputer systems and greatly simplifies the transfer of data athigh speed between peripherals and memories. 9. 8259: The Intel 8259 is a Programmable Interrupt Controller (PIC) designed for the Intel
8085 and Intel 8086 microprocessors. The initial part was 8259, a later A suffix version was upward compatible and usable with the 8086 or 8088 processor. The 8259 combines multiple interrupt input sources into a singleinterrupt output to the host microprocessor, extending the interrupt levels available in a system beyond the one or two levels found on the processor chip. The 8259A was the interrupt controller for the ISA bus in the original IBM PC and IBM AT. 10. Battery backup: the M86-02 provides a battery backup for use on real time ongoing onboard RAM area using 3.6 v rechargeable battery. 11. Display: it contains two lines and each line contain 20 words. This is a cursor lcd display modulator.
Commands: 1. A- assemble: this command is used to input assemble language to machine language in memory once under this command, first set the addres which is similar to command D Followed by an enter however maximum of 35 words followed for input. 2. D- display or modify the rams hexadecimal Adu are important commands in compliling the effective address or both effective address and segement base.can be used during input when the cursor is placed at the beginning key will immediately show F000 as the segement base and effective address. 3. F fill into data ram By setting the starting ending address and details an enter key will allow to enter the data to the ram once data entered, the command can proceed. Proceed to data for execution. the go command which causes machine language statement to proceed or executed. This command executes the loaded program and allow the user to specify the address at which program execution will stop. 4. I: interrupt : Three interrupt can bre set in for the program execution, the cpu will continiouslly make a single step subprogram for checking ip values when ip register has the some value at the interrupt addresses. It will enter the interrupt subprograms.enter command I.will interrupt the program. 5. M- Moving data: The command move is used to move data into memoryfrom a specified address to another address by input the starting address. A return key then used to execute the changes. 6. P-Print: This command allows the printer to print the output connect to the printer with input / output system of 8255 before turning the printer. 7. T- trace program: This command is used for program execution trace will enter the interrupt subprogram every time the program executes.N has a decimal range from 1-99with 10 as rounding of number. 8. U-Unassemble: The unassembled command decodes the value of the group memory location mnemonic and display on the displayed once entered this command input the proper design address.
LAB 2
Aim: To add two binary numbers each of string eight bytes. address 0400 0401 0404 mnemonics CLC Mov CX,8004 Mov SI,0500 Comments Clear carry flag Load counter register Load si register with starting address of first binary number Load destination index register with destination address. Load data bytes in al Address the contents(ms bytes of 0508,0509with contents of 0500+0501) INCREAMENT SI INCREMENT DI DECREMENT THE COUNETER IF NOT ZERO THEN CONTINUE ADDITION HALT PROGRAM
0407
040A 040C
RESULT:
Before execution: STRING 1 0500 H : 01 0501 H : 02 0502 H : 03 0503 H : 04 0504 H : 05 0505 H : 06 0506 H : 07 0507 H : 08 STRING 2 0508 H : 0A 0509 H : 0B 050A H : 0C 050B H : 0D 050C H : 0E 050D H : 0F 050E H : 10 050F H : 11
AFTER EXECUTION: 0508 H : 0B 0509 H : 0D 050A H : 0F 050B H : 12 050C H : 14 050D H : 06 050E H : 18 050F H : 1A
LAB 3
AIM: TO FIND MAXIMUM NUMBER IN A GIVEN STRING AND STORE IT AT LOCATION 0510H ADDRESS 0400 MNEMONICS MOV SI , 0500 COMMENTS LOAD ADDRESS REGISTER WITH STARTING ADDRESS OF STRING INITIALIZE COUNTER REGISTER INITIALIZE 8 BIT ACCUMALATOR THE FIRST DATA BYTES OF STRING WITH 00 IF BOTH BYTES MATCH THAN BRANCH TO (1) ELSE MOVE THE CONTENT OF 0500H INTO 8 BIT ACCUMULATOR POINT AT NEXT ADDRESS OF STRING DECREMENT THE COUNTER VALUE JUMP IF NOT ZERO MAX NUMBER IS AT 0510 ADDRESS HALT
MOV CX, 0010 MOV AH, 00 CMP AH,[SI] IAE ,040E MOV AH,[SI]
RESULT: BEFORE EXECUTION: 0500 H : 01 0501 H : 02 0502 H : 03 0503 H : 04 0504 H : 05 0505 H : 06 0506 H : 15 0507 H : 07 0508 H : 12 0509 H : 08 050A H : 09 050B H : 0A 050C H : 0B 050D H : 0E 050E H : 1C
LAB 4
AIM: TO SORT STRING OF BYTES IN ASCENDING ORDER ADDRESS 0400 0403 0405 0406 MNEMONICS MOV SI,0500 MOV BX, [SI] DEC BX MOV CX , [SI] COMMENTS INITIALISE MEMORY LOCTION WITH O5OOH BX HAS NUMBER OF BYTES LOCATION 0500 AND 0501 H DECREMENT BY ONE ALSO CX HAS NUMBER BYTES IN LOCTION 0500 AND 0501 H DECREMENT BY ONE INITIALISE STARTING ADDRESS MOVE THE FIRST DATA BYTE INTO AL POINT AT NEXT BYTE OF STRING COMPARE THE TWO BYTES OF STRING IF TWO BYTES ARE EQUAL AND FIRST BYTE IS ABOVE SECOND BYTE THEN BRANCH TO (1) ELSE IF SECOND BYTE IS LESS THAN FRIST BYTE SWAP THE SECOND BYTE POINT AT THE NEXT LOCATION OF STRING LOOP OF STRING IS NOT ZERO AT THIS JUNCTURE FIRST SORTING IS OVER SUCH THAT FIRST NUMBER IS LOGICALLY COMPARED WITH REST OF THE NUMBERS
DEC CX MOV SI, 0502 MOV AL, [SI] INC SI CMP AL,[ SI] JAE 419
0413 0415
0501 H : 00 0502 H : 20 0503 H : 25 0504 H : 28 0505 H : 15 0506 H : 07 AFTER EXECUTION: 0500 H : 00 0501 H : 05 0502 H : 07 0503 H : 15 0504 H : 20 0505 H : 25 0506 H : 28
LAB 5
AIM: TO SORT STRING OF BYTES IN DESCENDING ORDER ADDRESS 0400 0403 0405 0406 MNEMONICS MOV SI,0500 MOV BX, [SI] DEC BX MOV CX , [SI] COMMENTS INITIALISE MEMORY LOCTION WITH O5OOH BX HAS NUMBER OF BYTES LOCATION 0500 AND 0501 H DECREMENT BY ONE ALSO CX HAS NUMBER BYTES IN LOCTION 0500 AND 0501 H DECREMENT BY ONE INITIALISE STARTING ADDRESS MOVE THE FIRST DATA BYTE INTO AL POINT AT NEXT BYTE OF STRING COMPARE THE TWO BYTES OF STRING IF TWO BYTES ARE EQUAL AND FIRST BYTE IS ABOVE SECOND BYTE THEN BRANCH TO (1) ELSE IF SECOND BYTE IS LESS THAN FRIST BYTE SWAP THE SECOND BYTE POINT AT THE NEXT LOCATION OF STRING LOOP OF STRING IS NOT ZERO AT THIS JUNCTURE FIRST SORTING IS OVER SUCH THAT FIRST NUMBER IS LOGICALLY COMPARED WITH REST OF THE NUMBERS
DEC CX MOV SI, 0502 MOV AL, [SI] INC SI CMP AL,[ SI] JAE 419
0413 0415
0501 H : 00 0502 H : 20 0503 H : 25 0504 H : 28 0505 H : 15 0506 H : 07 AFTER EXECUTION: 0500 H : 00 0501 H : 05 0502 H : 07 0503 H : 15 0504 H : 20 0505 H : 25 0506 H : 28
LAB 6
AIM: TO CALCULATE NUMBER OF BYTES IN THE STRING ADDRESS 0400 MNEMONICS MOV SI, 0500 COMMENTS LOAD SI REGISTER WITH STARTING ADDRESS WHERE RESULT IS TO BE STORED INITIALIZE COUNTER REGISTER LOAD DI REGISTER WITH STATING ADDRESS OF STRINGSTORE THE IDENTIFIER IN AL DATA BYTES ACCESSED BY DI REGISTER COMPARED WITH I DENTIFIER WITHOUT ALTERING EITHER OF THE CONTENTS THIS COMPARING CONTINUOS WITH THE INCREMENTING OF DI CONTENTS ONES COMLEMENT CX MOV TO LACION SI HALT
0403 0406
0409
MOV AL , 03
040B
REPNE SCASB
RESULT: LET AT 0509 H =03 AND AT 0502 H =04 AFTER EXECUTION OF THE PROGRAM CX=0008 AND AT 0500 H= 08 AND AT 0501 H= 00
LAB 7
AIM: TO MULTIPLY ASCII STRING OF EIGHT NUMBERS BY A SINGLE ASCII DIGIT ADDRESS 0400 MNEMONICS MOV SI, 0500 COMMENTS LOAD SI REISTER WITH STARTING ADDRESS OF STRING LOAD DI REGISTER WITH STARTING ADDRESS OD RESULT LOCATION LOAD DL WITH THE MULTIPLIER ASCII DIGIT LOAD COUNTER REGISTER WITH THE NUMBER OF BYTES IN STRING
0403
0406 0408
040B 040D 040F 0412 0414 0415 0417 0419 041B 041D
MOV AL, 00 MOV DI,AL AN DL , 0F MOV AL, [SI] INC SI AND AL , 0F MVL 01 AAM ADD AL,DI AAA
MS NIBBLE OF MULTIPLIER IS ZEROED FIRST ASCII NUMBER OS STRING IS AL POINT AT NEXT LOCATION IN STRING MS NIBBLE OF MULTIPLIES NO GAP AND ALSO ZEROED PERFORM THE FUNCTION AX=AL *DL PERFORM THE FUNCTION AH=AL/0A, AL REMAINDER THE CONTENT OF AL ADDED WITH 00 WHICH IS FIRST DESTINATION LOCATION POINT THE NEXT DESTINATION LOCATION CONTENTENTS OF AH IS MOVED TO NEXT LEAST LOCATION DECREMENT THE COUNTER REGISTER IF NOT ZERO CONTINUE MLTIPLY HALT
RESULT: BEFORE EXECUTION: 0500 H : 31 0501 H : 32 0502 H : 33 0503 H : 34 0504 H : 35 0505 H : 36 0506 H : 31 0507 H : 32 AFTER EXECUTION: 0508 H : 04 0509 H : 08 050A H : 02 050B H : 07 050C H : 01 050D H : 06 050E H : 06 050F H : 08
LAB 8
AIM: TO CONVERT STRING OF DATA TO ITS COMPLEMENTFROM 1S AND 2S FORM AND STORE IT. ADDRESS MNEMONICS COMMENTS 0400 MOV SI, 0500 INITIATING THE SI 0403 MOV BX,0600 MOVING INITIAL ADDRESS WHERE ONES COMPLEMENT WOULD BE STORED 0406 MOV DX ,0700 MOVING INITIAL ADDRESS WHERE TWOS COMPLEMENT WOULD BE STORED 0409 MOV CX,0003 SETTING COUNTER 040B MOV DI,BX TRANSFERRING ADDRESS 040C LODSB LOADING ACCUMULATOR 040D NEG AL TWOS COMPLEMENT COMMAND 040E STOSB STORING VALUE OF ACCUMULATOR 040F MOV DI,DX MOVING ADDRESS TO DI 0410 LODSB LOADING ACCUMULATOR 0411 NOT AL COMPLEMENTING AL VALUE 0412 STOSB STORING ACCUMALATOR AND INCREMENTING THE LOCATION OF DI 0413 DEC CX DECREMENTING COUNTER 0414 JNZ 0409 JUMP TO 0409 IF COUNTER IS NOT ZERO 0415 HLT HALT PROGRAM
RESULT: BEFORE EXECUTION: 0500 H = 00 0501 H=01 0502 H=03 AFTER EXECUTION: ONES COMPLEMENT: 0600 H=FF
0601 H=FE 0602 H=FC TWOS COMPLEMENT: 0700 H=00 0701 H=FF 0702 H=FD
LAB 9
AIM: TO CALCULATE THE NUMBER OF BYTES IN A STRING WHICH IS TERMINATED BY AN IDENTIFIER IN AL
ADDRESS 0400
0403 0406
0409
MOV AL , 03
040B
REPNE SCASB
COMMENTS LOAD SI REGISTER WITH STARTING ADDRESS WHERE RESULT IS TO BE STORED INITIALIZE COUNTER REGISTER LOAD DI REGISTER WITH STATING ADDRESS OF STRINGSTORE THE IDENTIFIER IN AL DATA BYTES ACCESSED BY DI REGISTER COMPARED WITH I DENTIFIER WITHOUT ALTERING EITHER OF THE CONTENTS THIS COMPARING CONTINUOS WITH THE INCREMENTING OF DI CONTENTS ONES COMLEMENT CX MOV TO LACION SI HALT
RESULT: LET AT 0509 H =03 AND AT 0502 H =04 AFTER EXECUTION OF THE PROGRAM CX=0008 AND AT 0500 H= 08 AND AT 0501 H= 00
LAB 10
AIM: TO DIVIDE A STRING OF UNPACKED ASCII DIGIT
ADDRESS 0400 0402 0405 0408 040B 040E 0410 0411 0413 0415 0417
MNEMONICS MOV DL , 36 MOV SI, 0500 MOV DI, 0508 MOV CX, 0008 AND DL, 0F XOR AH ,AH LODSB AND AL,0F AAD DIV DL STOSB
COMMENTS DL HAVING THE DIVISIO, EIGHT BIT LOAD SI WITH STARTING ADDRESS OF ASCII STRING LOADING DI WITH STARTING ADDRESS OF RESULT INITIALIZING THE COUNTER REGISTER MS NIBBLE OF DL CONTENT IS ZEROED INITIALIZE THE EIGHT BIT ACC=(00) LOAD AL WITH ADDRESS MS NIBBLE OF AL CONTENT IS ALSO ZEROED PERFORM THE FUNCTION AL=(AH*OA)+AL, AH=00 DIVIDINGPERFORM THE FUNCTION AD/DL THE CONTENTS OF AL ARE STORED AT POSITION SPECIFIED BY DI DECREMENTING CONTINUE DIVIDING IF NOT ZERO HALT
RESULT:
0505 H : 36 0506 H : 31 0507 H : 32 AFTER EXECUTION: 0508 H : 12 0509 H : 00 050A H : 02 050B H : 00 050C H : 05 050D H : 07 050E H : 06 050F H : 00