+ All Categories
Home > Documents > Assembly Language

Assembly Language

Date post: 28-Nov-2014
Category:
Upload: ravindra-reddy
View: 110 times
Download: 0 times
Share this document with a friend
17

Click here to load reader

Transcript
Page 1: Assembly Language

ASSEMBLY LANGUAGE

1. Write an assembly language program to print a sting.ANS:

;LABEL MNEMONIC OPERNAD COMMENTCR EQU 0DGLF EQU 0AH_DATA SEGMENT_STR DB “I LOVE ASSEMBLY LANGUAGE PROGRAMMING”, CR, LF, ‘$’_DATA ENDS _CODE SEGMENTASSUME CS: _CODE, DS: _DATASTART: MOV AH, 09H ; string writing functionMOV DX, _DATA ; to initialize data segmentMOV DS, DXMOV DX, OFFSET _STR ;point to DXINT 21HMOV AH, 4CH ;to transfer to ms-dosMOV AL, 00HINT 21H_CODE ENDSEND START

Output:I LOVE ASSEMBLY LANGUAGE PROGRAMMING

2. Write an assembly language program to print a sting 10 times

ANS:

;LABEL MNE MONIC OPERAND COMMENTCR EQU 0DH ; D= 13 is the ASCII code for carriage returnLF EQU 0AH ; 10 is the ASCII code for line feed_DATA SEGMENT _STR DB “I LOVE INDIA”, CR, LF, ‘$’_DATA ENDS_CODE SEGMENT ASSUME CS : _CODE , DS: _DATASTART: XOR BX, BX MOV BX,0AHMOV DX, _DATAMOV DS, DX LABEL1:MOV AH,09HMOV DX, OFFSET _STRINT 21HDEC BXJNE LABEL1 ; if BX go to label MOV AH, 4CH ; to transfer to ms dosMOV AL, 00HINT 21H_CODE ENDSEND START

Page 2: Assembly Language

Output:I LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIAI LOVE INDIA

3. Write an assembly language program to print a sting 10 times using loop instructions.ANS:

; LABEL NME MONIC OPERAND COMMENTCR EQU “LONG LIVE HOMAN SPIRIT’,CR, LF, ‘$’_DATA ENDS _CODE SEGMENT ASSUME CS:_CODE, DS:_DATAPRO_START: XOR CX, CXMOV CX, 0AHMOV DX, _DATAMOV DS, DXMOV AH, 09HMOV DX, OFFSET –STRINT 21HLOOP LABEL1MOV AH,4CHMOV AL, 00HINT 21H _CODE ENDSEND PRO_START

Output:LONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRITLONG LIVE HUMAN SPIRIT

4. Write an assembly language program to read character from console and echo it.ANS:

;LABEL NME MONIC OPERAND COMMENTCR EQU 0DHLF EQU 0AH_CODE SEGMENT ASSUME CS: _CODE START:MOV AH, 01H ;dos function, request for input]INT 21HMOV AH, 02H ;display character an the screen.MOV DL, ALINT 21HMOV AH, 4CH

Page 3: Assembly Language

MOV AL, 00HINT 21H_CODE ENDSEND START

Input:Hello IGNOU

Output:Hello INGOU

5. Write an assembly language program to display alphabets from a to z on the screen.

ANS: ;LABEL MNE MONIC OPERAND COMMENTCR EQU 0DHLF EQU 0AH_CODE SEGMENT ASSUME CS:_CODEMAINP:MOV CX1, 1AH ;26 is stored in CX registerMOV DL, 41HNEXT:MOV AH, 02HINC 21HINC DLLOOP NEXTCMOV AH, 4CHMOV AL,00HINT 21HEND NEXTCEND MAINP_CODE ENDS

Output:abcdefghijklmnopqrstuvwxyz

6 Write an assembly language program to print add numbers between 1 and 9.

ANS:

;model small;stack;code

PRINT_ODD PROCSTART:MOV CL,31H ; Moves zero to register DLMOV CX, 05H ; Moves the decimal value to register CX.PRINT_LOOP:CALL WRITE_NUM ; Prints numberINC DL ; Increases the value of register DLINC DL LOOP PRINT_LOOP ;Loop to print out ten numbersMOV AH, 4CH ; 4CH function of the 21h interruptionINT 21H ; 21H interruption PRINT_ODD ENDP ; Finishes the procedure

Page 4: Assembly Language

WRITE_NUM PROCMOV AH,2H ; 2H Function of the 21 interruptionINT 21H ; Prints number out from the register DLRET ; register the control to procedure calledWRITE_NUM ENDP ; Finishes the procedureEND PRINT_ODD ; Finishes the program codeEND START

Output:123456789

7. Write an assembly language program to print * on the screen.

ANS:

;example;to print * on the screen ;model small;stack;code

START: MOV AH, 2H ; Moves the value 2h to register ahMOV DL, 2AH ; Moves the value 2ah to register DL ; (It’s the asterisk value in ASCII format)INT 21H ; 21H InterruptionMOV AH, 4CH ; 4CH function goes to operating systemINT 21H ; interruptionEND START ; Finishes the program code

Output:*

8. GREETING PROGRAM: ;model small

;stack 100h;datatime prompt DB “is it after 12 noon (y/n). ‘$’ good morning message DB 13,10, ‘good morning, welcome to the ignou study center’ DB ‘KBN college vjy ‘, 13, 10, ‘$’,good after noon message DB 13, 10, ‘good afternoon, welcome to the IGNOU study center. DB ‘KBN COLEGE VJY’, 13, 10, ‘$’.Default message DB, 13, 10, ‘greetings welcome to IGNOU study center’ DB ‘KBN COLLEGE VJY’, 13, 10, ‘$’.CODE:START:MOV AX,@ DATAMOV DS, AX ; set DS to print the data segmentMOV DS, OFFSET TIME PROMPT ; point to the time promptMOV AH, A ; Dos print string routine INT 21H ; Display the time prompt MOV AH, 1 ; Dos get character registerINT 21H ; Get a single character responseOR A1,20H ; Force character to lower caseEMP A1, ‘Y’ ; Check input character JE ISAFTERNOONCMP A1, ‘N’JE ISMORNINGMOV DX, OFFSET DEFAULT MESSAGE ; JE DEFAULT GREETINGJMP DISPLAY GREETINGIS AFTERNOON:MOV DX, OFFSET GOOD AFTERNOON MESSAGE.

Page 5: Assembly Language

JMP DISPLAY GREETINGIS MORNING:MOV DX, OFFSET GOOD MORNING MESSAGE.DISPLAY GREETING:MOV AH, AINT 21HMOV AH, 4CH ;Dos terminate program routine MOV A1, 0INT 21HEND START

Output:welcome to the IGNOU study center KBN COLEGE VJY

9. Write a program to compare two given characters.

Data segment Xx db?Yy db?Data segmentASSUME CS: CODE, DS:DATAMAIN P:MOV AX, DATAMOV DS, AXMOV CX, 03HNEXT P:MOV AB, 01HINT 21HMOV XX, A2MOV AB, 01HINT 21HMOV AH, 01HINT 21HMOV YY,A1MOV BH, XXMOV B1,YYCOM BH, BLJNE NOT_EQUALEQUAL:MOV AH, 02HMOV DL, ‘Y’INT 21HJMP CONTINUENOT EQUAL:MOV AH, 02HMOV DL, ‘N’INT 21HCONTINUE:LOOP NEXT PMOV AH, 4CHINT 21HCODE ENDSEND MAIN P

10. Write a program to print numbers from 0 to 9 numbers.

;model small;stack;code PRINT_0_9_PROC

Page 6: Assembly Language

START: ; moves zero to register DLMOV CX, 0AH ; Moves decimal value 10 register to CXPRINT_LOOP:CALL WRITE_NUM ; prints number INT DL ; Increases the value of register DLLOOPPRINT_LOOP ; Loop to print out 10 numbersMOV AH, 4CH ; 4CH function of the 21H interruptionINT 21H ; 21H interruptionPRINT_0_9_END P ; Finishes the procedureWRITE_NUM PROCMOV AH, 2H ; 2H fun of the 21interruptionINT 21H ; prints number out from the register DLRET ; Returns the control to procedure calledWRITE_NUM END P ; Finishes the procedureENDPRINT_0_9 ; Finishes the program codeEND START

Output:0123456789

11. Write a program to print two words together 10 times

CR EQU 0DHLF EQU 0AH_DATA SEGMENT_STR1 DB “APPLE”, CR, LF, ‘$’_STR2 DB “ORANGE”, CR, LF, ‘$’_DATA ENDS_CODE SEGMENT_ASSUME CS:_CODE, DS:_DATAPRO_START:XOR CX, CXMOV CX, 0AHMOV AH, 09HMOV DX, _DATAMOV DS, DXSTART:MOV DX, OFFSET _STR1INT 21HMOV DX, OFFSET _STR2INT 21HLOOP STARTMOV AH, 4CH ; transfer to ms_dosMOV A1,00HINT 21H_CODE ENDSEND PRO_START

Output:APPLE ORANGEAPPLE ORANGEAPPLE ORANGEAPPLE ORANGEAPPLE ORANGEAPPLE ORANGEAPPLE ORANGEAPPLE ORANGE

Page 7: Assembly Language

APPLE ORANGEAPPLE ORANGE

12. Write an ALP to accept characters from keyboard until return key is entered and also echo the last character entered.

;model smallCR EQU 0DHLF EQU 0AHSTACKDATA_STR DB CR, LF, ‘$’;CODESTART:XOR AX, AXEEL:MOV BL, ALMOV AH, 01HINT 21HCMP AL, 0DHJNZ EELMOV AH, 09HMOV DX, @DATA MOV DS, DXMOV DX, OFFSET _STRINT 21HMOV DL, BLMOV AH, 02HINT 21HMOV AH, 4CHINT 21HEND START

Input:Hello $Output:o

13.Write a program to print the smallest elements in the given array

CR EQU 0DHLF EQU 0AHDATA SEGMENTARRAY DB 55, 60, 72, 46, 25MSG DB CR, LF, ‘THE SMALLEST NUMBER IS:’, ‘$’DATA ENDSCODE SEGMENTASUMME CS:CODE, DS: DATASTART: MOV DX, DATAMOV DS, DX MOV AH, 09HMOV DX, OFFSET MSGINT 21HMOV BX, OFFSET ARRAYMOV DI, 04HXOR AX, AXL1: MOV CL, [BX+DI]CMP CL, ALJLE L2DEC DI

Page 8: Assembly Language

JLE L1L2: MOV AL, CLAAMADD AX, 3030HMOV DL, AHPUSH AXMOV AH, 02HINT 21HPOP AXMOV DL, AL MOV AH, 02HINT 21HCODE ENDS MOV AX, 4COOHEND START INT 21H

Output:THE SMALLEST NUMBER IS :25

14. Write an ALP to print the elements of an array.CR EQU 0DHLF EQU 0AHDATA SEGMENTARRAY DB 55, 68, 34, 78, 56MSG DB, CR, LF, ‘THE ARRAY ELEMENTS ARE:’, ‘$’DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: XOR CX, CXMOV CX, 05HMOV DX, DATAMOV DS, DXMOV AH, 09HMOV DX, OFFSET MSGINT 21HMOV BX, OFFSET ARRAYMOV DI, 00HXOR AX, AXLABEL1: MOV AL, [BX+DI]AAMADD AX, 3030HMOV DL, AHPUSH AXMOV AH, 02HINT 21HPOP AXMOV DL,ALMOV AH, 02HINT 21HINT LABEL1MOV AH, 4CHMOV AL, 00HINT 21HCODE ENDSEND START

Output:THE ARRAY ELEMENTS ARE: 55, 68, 34, 78, 56

Page 9: Assembly Language

15.Write an ALP to increment the array elements each by two

CR EQU 0DHLF EQU 0AHDATA SEGMENTARRAY DB 55, 68, 34, 78, 56MSG DB, CR, LF, ‘THE ARRAY ELEMENT OFTER INCREMENT BY TWO ARE:’, ‘$’DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:XOR CX, CXMOV CX, 05HMOV DX, DATAMOV DS, DXMOV AH, 09HMOV DX, OFFSET MSGINT 21HMOV BX, OFFSET ARRAYMOV DI, 00HXOR AX, AXL1:MOV AL, [BX+DI]ADD AL,2AAMADD AX, 3030HMOV DL, AHPUSH AXMOV AH, 02HINT 21HPOP AXMOV DL, ALMOV AH, 02HINT 21HMOV DL, ‘’INT 21HINC DILOOP L1MOV AH, 4CHMOV AL, 00HINT 21HCODE ENDSEND START

Output:THE ARRAY ELEMENT OFTER INCREMENT BY TWO ARE:57, 70, 36, 80, 58

16. Write an ALP to decrement the array element each by two

CR EQU 0DHLF EQU 0AHDATA SEGMENTARRAY DB 55, 68, 34, 78, 56MSG DB CR, LF, ‘THE ARRAY ELEMENTS AFTER DECREMENT BY TWO ARE:’, ‘$’DATA ENDSCODE SEGMENTASSUME CS: CODE, DS:DATASTART: XOR CX, CX

Page 10: Assembly Language

MOV CX, 05HMOV DX, DATAMOV DS, DXMOV AH, 09HMOV DX, OFFSET MSGINT 21HMOV BX, OFFSET ARRAYMOV SI, 00H ; SI, DI both can use as indexXOR AX, AXL: MOV AL, [BX+SI]SUB AL, 2INC SIAAMADD AX, 3030HMOV DL, AHPUSH AXMOV AH, 02HINT 21HPOP AXMOV DL, ALMOV AH, 02HINT 21HMOV DL, ‘’INT 21HLOOP L1MOV AX, 4COOHINT 21HCODE ENDSEND START

Output:THE ARRAY ELEMENTS AFTER DECREMENT BY TWO ARE:53, 66, 32, 76, 54

17. Write an ALP to print the array elements in reverse order.

CR EQU 0DHLF EQU 0AHDATA SEGMENTARRAY DB 55, 64, 72, 51, 60MSG DB CR, LF, ‘THE REVERSED ORDERED ELEMENTS ARE:’. ‘$’DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: XOR CX, CXMOV CX,05HMOV DX, DATAMOV DS, DXMOV AH, 09HMOV DX, OFFSET MSGINT 21HMOV BX, OFFSET ARRAYMOV DI, 04HXOR AX, AXLABEL1: MOV AL, [BX_DI]AAMADD AX, 3030HMOV DL, AHPUSH AX

Page 11: Assembly Language

MOV AH, 02HINT 21HPOP AXMOV DL,ALMOV AH, 02HINT 21HMOV DL, ‘’INT 21HDEC DI LOOP LABEL1MOV AH, 4CHMOV AX, 4C00HINT 21HDEC DILOOP LABELMOV AH, 4CHMOV AX, 4C00HINT 21HCODE ENDSEND START

Output:THE REVERSED ORDERED ELEMENTS ARE:60, 55, 64, 72, 51

18. Write an ALP to multiply each array element by 2.

CR EQU 0DHLF EQU 0AHDATA SEGMENTARRAY DB 1,2,3,4,5,6MSG DB CR, LF, ‘THE ELEMENTS AFTER MULTIPLYING WITH 2 ARE:’, ‘$’DATA ENDSCODE SEGMENTASSUME CS: CODE, DS; DATASTART:XOR CX, CXMOV CX, 06HMOV DX, DATAMOV AH, 09HMOV AH, 09HMOV DX, OFFSET MSGINT 21HMOV BX, OFFSET ARRAYMOV DI, 00H XOR AX, AXLABEL1:MOV AL, [BX+DI]MOV DL, AL MOV AL, DLAAMADD AX, 3030HMOV DL,AHPUSH AXMOV AH, 02HINT 21HPOP AXMOV DL, ALMOV AH, 02H

Page 12: Assembly Language

INT 21HMOV DL, ‘’INT 21HINC DILOOP LABEL1MOV AH, 4CHMOV AL, 00HINT 21HCODE ENDSEND START

Output:THE ELEMENTS AFTER MULTIPLYING WITH 2 ARE:2, 4, 6, 8, 10, 12

19. Write a program to find the sum of the given set of array elements

CR EQU 0DHLF EQU 0AH_DATA SEGMENTARRAY1 DB 5,15,13,12,20_MSG DB CR,LF, ‘THE SUM IS:’, ‘$’_DATA ENDSCODE SEGMENTASSUME CS:_CODE, DS:_DATAPRO_START:MOV DX, _DATAMOV DS, DXMOV AH, 09HMOV DX, OFFSET –MSGINT 21HMOV BX,OFFSET ARRAY1MOV DI,04HXOR AX,AXLABEL1: ADD AL, [BX+DI]DEC DIJGE LABEL1AAM ; Convert to BCD.ADD AX, 3030H ;convert to ASCIIMOV DL, AH ; display the most significant digitPUSH AX ; Save theLSDMOV AH, 02HINT 21HMOV AH, 4CHMOV AL, 00HINT 21H_CODE ENDSEND PRO_START

Output:THE SUM IS:55

20. Write a program to find the biggest of the given set of array elements.

CR EQU 0DHLF EQU 0AH_DATA SEGMENTARRAY1 DB 55, 18, 20, 62, 13

Page 13: Assembly Language

_MSG DB CR, LF, ‘THE BIGGEST ELEMENT IS:’, ‘$’_DATA ENDS_CODE SEGMENTASSUME CS: _CODE, DS: _DATAPRO_START: MOV DS, DXMOV AH, 09HMOV DX, OFFSET _MSGINT 21HMOV BX, OFFSET ARRAY1MOV DI, 04HXOR AX, AXLABLE1: MOV CL, [BX, DI]CMP AL, CLJGE LABEL2MOV AL,CLLABEL2: DEC DIJGE LABEL1AAMADD AX, 3030HMOV DL, AH PUSH AXMOV AH, 02HINT 21HPOP AXMOV DL, ALMOV AH, 02HINT 21HMOV AH, 4CHMOV AL, 00HINT 21H_CODE ENDSEND PRO_START

Output:THE BIGGEST ELEMENT IS: 62

21. Write a program to start the given set of elements array elements using bubble sort

CR EQU 00HLF EQU 0AH_DATA SEGMENTARRAY1 DB 55, 18,90, 62, 13_MSG DB, CR, LF, ‘THE SORTED ARRAY IS:’, ‘$’_DATA SEGMENTASSUME CS:_CODE, DS: _DATAPRO_START: MOV DI, DXMOV DS, DXMOV AH, 09HMOV DX, OFFSET –MSGINT 21HMOV BX, OFFSET ARRAY1XOR DX, DXMOV DL, 04HLABEL3:MOV DI, DXXOR AX, AXLABEL1:MOV CL, [BX+DI]MOV AL, [BX+DI_1]CMP AL, CL

Page 14: Assembly Language

JG LABEL2MOV [BX+DI], ALMOV [BX+DI_1],CLLABEL2:DEC DIJG LABEL1DEC DLJG LABEL3MOV DI, 04LABEL4:MOV AX, [BX+DI]AAM ; Converts to BCDADD AX, 3030H ; Convert to ASCIIMOV DL, AH ; Display the most significant digitPUSH AX ;Save the LSDMOV AH, 02HINT 21HPOP AX ; Restore ALMOV DL,AL ; Display the least significant digitMOV AH, 02HINT 21HMOV DL, ‘’INT 21HDEC DIJGE LABEL4MOV AH, 4CHMOV AL, 00HINT 21H_CODE ENDSEND PRO_START

Output:THE SORTED ARRAY IS: 13, 18, 55, 62, 90

[email protected]@gmail.com


Recommended