microprocessors & interfacing lab manual
TRANSCRIPT
Microprocessors & Interfacing Lab 1
EXPERIMENT NO.1
ADDITION OF TWO 16-BIT NUMBERS-SIGNED & UNSIGNED
AIM: To write an assembly language program to perform addition of two 16-bit signed and unsigned numbers.REGISTERS USED: AX,DSFLAGS AFFECTED: AF,CF,OF,PF,SF,ZFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 4269HOPR2 DW 1000HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1ADD AX,OPR2MOV RES,AXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:UNSIGNED NUMBERSINPUT: OPR1 = 4269H
OPR2 = 1000HOUTPUT: RES = 5269H
SIGNED NUMBERSINPUT: OPR1 = 9763H
OPR2 = A973HOUTPUT: RES = 40D6H , CF = 1
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 2
SUBTRACTION OF TWO 16-BIT NUMBERS-SIGNED & UNSIGNED
AIM: To write an assembly language program to perform subtraction of two 16-bit signed and unsigned numbers.REGISTERS USED: AX,DSFLAGS AFFECTED: AF,CF,OF,PF,SF,ZFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 4269HOPR2 DW 1000HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1SUB AX,OPR2MOV RES,AXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:UNSIGNED NUMBERSINPUT: OPR1 = 4269H
OPR2 = 1000HOUTPUT: RES = 3269H
SIGNED NUMBERSINPUT: OPR1 = 9763H
OPR2 = 8973HOUTPUT: RES = 0DF0H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 3
MULTIPLICATION OF TWO 16-BIT UNSIGNED NUMBERS
AIM: To write an assembly language program to perform multiplication of two 16-bit unsigned numbers.REGISTERS USED: AX,DSFLAGS AFFECTED: OF,CFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 2000HOPR2 DW 4000HRESLW DW ?RESHW DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1MUL OPR2MOV RESLW,AXMOV RESHW,DXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: OPR1 = 2000H
OPR2 = 4000HOUTPUT: RESLW = 0000H (AX)
RESHW = 0800H (DX)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 4
MULTIPLICATION OF TWO 16-BIT SIGNED NUMBERS
AIM: To write an assembly language program to perform multiplication of two 16-bit signed numbers.REGISTERS USED: AX,DSFLAGS AFFECTED: OF,CFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 7593HOPR2 DW 6845HRESLW DW ?RESHW DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1IMUL OPR2MOV RESLW,AXMOV RESHW,DXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:CASE I: Two positive numbersINPUT: OPR1 = 7593H
OPR2 = 6845HOUTPUT: RESLW = 689FH (AX)
RESHW = 2FE3H (DX)CASE II: one positive number & one negative numberINPUT: OPR1 = 8A6DH 2’s Complement of (-7593H)
OPR2 = 6845HOUTPUT: RESLW = 9761H (AX) 2’s Complement
RESHW = D01CH (DX) of (- 2FE3689FH)CASE III: two negative numbersINPUT: OPR1 = 8A6DH 2’s Complement of (-7593H)
OPR2 = 97BBH 2’s Complement of (-6845H)OUTPUT: RESLW = 689FH (AX)
RESHW = 2FE3H (DX)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 5
DIVISION OF UNSIGNED NUMBERS
AIM: To write an assembly language program to perform division of 16-bit unsigned number by 8-bit unsigned number.REGISTERS USED: AX,DSFLAGS AFFECTED: IFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 2C58HOPR2 DB 56HRESQ DB ?RESR DB ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1DIV OPR2MOV RESQ,ALMOV RESR,AHMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: OPR1 = 2C58H (DIVIDEND)
OPR2 = 56H (DIVISOR)OUTPUT: RESQ = 84H (AL)
RESR = 00H (AH)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 6
DIVISION OF SIGNED NUMBERS
AIM: To write an assembly language program to perform division of 16-bit signed number by 8-bit signed number.REGISTERS USED: AX,DSFLAGS AFFECTED: IFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 26F8HOPR2 DB 0AAHRESQ DW ?RESR DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1IDIV OPR2MOV RESQ,ALMOV RESR,AHMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:CASE I: two positive numbersINPUT: OPR1 = 26F8H (DIVIDEND)
OPR2 = 56H (DIVISOR)OUTPUT: RESQ = 74H (AL)
RESR = 00H (AH)CASE II: one positive number & one negative numberINPUT: OPR1 = D908H 2’s Complement of (-26F8H)
OPR2 = 56HOUTPUT: RESQ = 8CH (AL) 2’s Complement of (- 74H)
RESR = 00H (AH) CASE III: one positive number & one negative number INPUT: OPR1 = 26F8H
OPR2 = AAH 2’s Complement of (-56H)OUTPUT: RESQ = 8CH (AL) 2’s Complement of (- 74H)
RESR = 00H (AH)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 7
ASCII ADDITION
AIM: To write an ALP to perform the addition of two ASCII bytes.REGISTERS USED: AX,DSFLAGS AFFECTED: AF,CFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTCHAR DB '8'CHAR1 DB '6'RES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AH,00HMOV AL,CHARADD AL,CHAR1AAAMOV RES,AXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: CHAR = ‘8’
CHAR1 = ‘6’OUTPUT: RES = 0104 (AX) unpacked BCD of 14
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 8
ASCII SUBTRACTION
AIM: To write an ALP to perform the subtraction of two ASCII bytes.REGISTERS USED: AX,DSFLAGS AFFECTED: AF,CFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTCHAR DB '9'CHAR1 DB '5'RES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AH,00HMOV AL,CHARSUB AL,CHAR1AASMOV RES,AXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:CASE I:INPUT: CHAR = ‘9’
CHAR1 = ‘5’OUTPUT: RES = 0004 (AX) CASE II:INPUT: CHAR = ‘5’
CHAR1 = ‘9’OUTPUT: RES = 00FC (AX) 2’s Complement of (-4)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 9
ASCII MULTIPLICATION
AIM: To write an ALP to perform the multiplication of two ASCII bytes.REGISTERS USED: AX,DSFLAGS AFFECTED: PF,SF,ZFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTNUM1 DB 09NUM2 DB 05RES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AH,00MOV AL,NUM1MUL NUM2AAMMOV RES,AXMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: NUM1 = 09
NUM2 = 05OUTPUT: RES = 0405 (AX) unpacked BCD of 45
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 10
ASCII DIVISION
AIM: To write an ALP to perform the multiplication of two ASCII numbers.REGISTERS USED: AX,DSFLAGS AFFECTED: PF,SF,ZFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTDIVIDEND DW 0607HDIVISOR DB 09HRESQ DB ?RESR DB ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,DIVIDENDAADMOV CH,DIVISORDIV CHMOV RESQ,ALMOV RESR,AHMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: DIVIDEND = 0607H unpacked BCD of 67
DIVISOR = 09HOUTPUT: RESQ = 07 (AL)
RESR = 04 (AH)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 11
EXPERIMENT NO.3
LOGICAL AND OPERATION
AIM: To write an Assembly language program to perform the Logical AND operation.REGISTERS USED: AX,DSFLAGS AFFECTED: PF,SF,ZFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 6493HOPR2 DW 1936HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1AND AX,OPR2MOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 6493H
OPR2 = 1936HOUTPUT: RES = 0012H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 12
LOGICAL OR OPERATION
AIM: To write an Assembly language program to perform the Logical OR operation.REGISTERS USED: AX,DSFLAGS AFFECTED: PF,SF,ZFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 6493HOPR2 DW 1936HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1OR AX,OPR2MOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 6493H
OPR2 = 1936HOUTPUT: RES = 7DB7H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 13
LOGICAL XOR OPERATION
AIM: To write an Assembly language program to perform the Logical XOR operation.REGISTERS USED: AX,DSFLAGS AFFECTED: PF,SF,ZFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 6493HOPR2 DW 1936HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1XOR AX,OPR2MOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 6493H
OPR2 = 1936HOUTPUT: RES = 7DA5H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 14
LOGICAL NOT OPERATION
AIM: To write an Assembly language program to perform the Logical Invert operation.REGISTERS USED: AX,DSFLAGS AFFECTED: No flags are affected.PROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 6493HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1NOT AXMOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 6493H
OUTPUT: RES = 9B6CH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 15
SHIFT ARITHMETIC / LOGICAL LEFT OPERATION
AIM: To write an Assembly language program to perform the Shift arithmetic / Logicaloperation.
REGISTERS USED: AX,DSFLAGS AFFECTED: SF,ZF,PFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 1639HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1SAL AX,01H (or) SHL AX,01HMOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 1639H
OUTPUT: RES = 2C72H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 16
SHIFT LOGICAL RIGHT OPERATION
AIM: To write an Assembly language program to perform the Shift Logical Right operation.
REGISTERS USED: AX,DSFLAGS AFFECTED: SF,ZF,PFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 8639HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1SHR AX,01H MOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 8639H
OUTPUT: RES = 431CH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 17
SHIFT ARITHMETIC RIGHT OPERATION
AIM: To write an Assembly language program to perform the Shift Arithmetic Rightoperation.
REGISTERS USED: AX,DSFLAGS AFFECTED: SF,ZF,PFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 8639HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1SAR AX,01H MOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 8639H
OUTPUT: RES = C31CH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 18
ROTATE RIGHT WITHOUT CARRY
AIM: To write an Assembly language program to perform the Rotate Right without carry operation.
REGISTERS USED: AX,DSFLAGS AFFECTED: CF,OFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 1639HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1ROR AX,01HMOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 1639H
OUTPUT: RES = 8B1CH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 19
ROTATE RIGHT WITH CARRY
AIM: To write an Assembly language program to perform the Rotate Right with carryoperation.
REGISTERS USED: AX,DSFLAGS AFFECTED: CF,OFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 1639HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1RCR AX,01HMOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 1639H
OUTPUT: RES = 0B1CH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 20
ROTATE LEFT WITHOUT CARRY
AIM: To write an Assembly language program to perform the Rotate Left without carry operation.
REGISTERS USED: AX,DSFLAGS AFFECTED: CF,OFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 8097HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1ROL AX,01HMOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 8097H
OUTPUT: RES = 012FH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 21
ROTATE LEFT WITH CARRY
AIM: To write an Assembly language program to perform the Rotate Left with carry operation.
REGISTERS USED: AX,DSFLAGS AFFECTED: CF,OFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTOPR1 DW 8097HRES DW ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,OPR1RCL AX,01HMOV RES,AXMOV AH,4CHINT 21HCODE ENDS END STARTEND
RESULT:INPUT: OPR1 = 8097H
OUTPUT: RES = 012EH
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 22
EXPERIMENT NO.5
ASCENDING ORDER
AIM: To write an assembly language program to arrange the given numbers in ascending order.REGISTERS USED: AX,DS,ES,SI,DIFLAGS AFFECTED: AX,DS,SI,CX,DXPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTLIST DW 05H,04H,01H,03H,02HCOUNT EQU 05HDATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV DX,COUNT-1BACK:MOV CX,DXMOV SI,OFFSET LISTAGAIN:MOV AX,[SI]CMP AX,[SI+2]JC GOXCHG AX,[SI+2]XCHG AX,[SI]GO:INC SIINC SILOOP AGAINDEC DXJNZ BACKMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: LIST (DS: 0000H) = 05H,04H,01H,03H,02H
OUTPUT: LIST (DS: 0000H) = 01H,02H,03H,04H,05H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 23
DESCENDING ORDER
AIM: To write an assembly language program to arrange the given numbers in ascending order.REGISTERS USED: AX,DS,SI,CX,DXFLAGS AFFECTED: CF,AF,PROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTLIST DW 03H,04H,01H,05H,02HCOUNT EQU 05HDATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV DX,COUNT-1BACK:MOV CX,DXMOV SI,OFFSET LISTAGAIN:MOV AX,[SI]CMP AX,[SI+2]JNC GOXCHG AX,[SI+2]XCHG AX,[SI]GO:INC SIINC SILOOP AGAINDEC DXJNZ BACKMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: LIST (DS: 0000H) = 03H,04H,01H,05H,02H
OUTPUT: LIST (DS: 0000H) = 05H,04H,03H,02H,01H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 24
PACKED BCD TO UNPACKED BCD
AIM: To write an assembly language program to perform packed bcd into unpacked bcd conversion.
REGISTERS USED: AX,DS,BL,CLFLAGS AFFECTED: PFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTBCD DB 49HCOUNT DB 04HUBCD1 DB ?UBCD2 DB ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AL,BCDMOV BL,ALAND AL,0FHMOV UBCD1,ALMOV AL,BLAND AL,0F0HMOV CL,COUNTROR AL,CLMOV UBCD2,ALMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: BCD = 49
OUTPUT: UBCD1 = 09
UBCD2 = 04
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 25
BCD TO ASCII CONVERSION
AIM: To write an assembly language program to perform BCD to ASCII conversion.REGISTERS USED: AX,DS,BL,CLFLAGS AFFECTED: PFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTBCD DB 49HCOUNT DB 04HASCII1 DB ?ASCII2 DB ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AL,BCDMOV BL,ALAND AL,0FHOR AL,30HMOV ASCII1,ALMOV AL,BLAND AL,0F0HMOV CL,COUNTROR AL,CLOR AL,30HMOV ASCII2,ALMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: BCD = 49
OUTPUT: UBCD1 = 39
UBCD2 = 34
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 26
EXPERIMENT NO.3
MOVE BLOCK
AIM: To write an assembly language program to move the block of data from a source location to the specified destination location.
REGISTERS USED: AX,DS,ES,SI,DIFLAGS AFFECTED: No flags are affectedPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTSTR DB 04H,0F9H,0BCH,98H,40HCOUNT EQU 05HDATA ENDSEXTRA SEGMENTORG 0010HSTR1 DB 5 DUP(?)EXTRA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AX,DATAMOV ES,AXMOV SI,OFFSET STRMOV DI,OFFSET STR1MOV CL,COUNTCLDREP MOVSBMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: STR (DS:0000H) = 04H,F9H,BCH,98H,40H
OUTPUT: STR1 (DS:0010H) = 04H,F9H,BCH,98H,40H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 27
REVERSE STRING
AIM: To write an assembly language program to reverse the given string.REGISTERS USED: AX,DS,SI,DI,CLFLAGS AFFECTED: ZF,PFPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTSTR DB 01H,02H,03H,04HCOUNT EQU 02HDATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV CL,COUNTMOV SI,OFFSET STRMOV DI,0003HBACK:MOV AL,[SI]XCHG [DI],ALMOV [SI],ALINC SIDEC DIDEC CLJNZ BACKMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: STR (DS:0000H) = 01H,02H,03H,04H
OUTPUT: STR (DS:0000H) = 04H,03H,02H,01H
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 28
LENGTH OF THE STRING
AIM: To write an assembly language program to find the length of the given string.REGISTERS USED: AX,DS,SI,CLFLAGS AFFECTED: ZF,PF,SF,AF,CFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTSTR DB 01H,03H,08H,09H,05H,07H,02HLENGTH DB ?DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AL,00HMOV CL,00HMOV SI,OFFSET STRBACK:CMP AL,[SI]JNC GOINC CLINC SIJNZ BACKGO:MOV LENGTH,CLMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: STR (DS:0000H) = 01H, 03H,08H,09H,05H,07H,02H
OUTPUT: LENGTH = 07H (CL)
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 29
STRING COMPARISION
AIM: To write an assembly language program to compare the given strings.REGISTERS USED: AX,DS,SI,DI,CLFLAGS AFFECTED: ZF,CFPROGRAM:ASSUME CS:CODE,DS:DATADATA SEGMENTSTR DB 04H,05H,07H,08HCOUNT EQU 04HORG 0010HSTR1 DB 04H,06H,07H,09HDATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET STRMOV DI,OFFSET STR1MOV CL,COUNTCLDREP CMPSBMOV AH,4CHINT 21HCODE ENDSEND STARTEND
RESULT:INPUT: STR (DS:0000H) = 04H,05H,07H,08H
STR1 (DS:0010H) = 04H,06H,07H,09H
OUTPUT: I ): IF STR = STR1 THEN ZF = 1 & II ): IF STR ≠ STR1 THEN ZF = 0
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 30
DOS / BIOS PROGRAMMING
●DISPLAY THE STRING●
AIM: To write an assembly language program to display the given string.REGISTERS USED: AX,DS,DXFLAGS AFFECTED: No flags are affectedPROGRAM: ASSUME CS:CODE,DS:DATADATA SEGMENTMSG DB 0DH,0AH,"WELCOME TO MICROPROCESSORS LAB",0DH,0AH,"$" DATA ENDSCODE SEGMENTSTART:MOV AX,DATAMOV DS,AXMOV AH,09HMOV DX,OFFSET MSGINT 21HMOV AH,4CHINT 21HCODE ENDSEND START END
RESULT:
WELCOME TO MICROPROCESSORS LAB
________________________________________________________________________Dept.of E.C.E, S.K.D Engg College,Gooty