You are on page 1of 14

ASSEMBLY LANGUAGE

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


;LABEL MNEMONIC OPERNAD COMMENT

CR EQU 0DG
LF EQU 0AH _DATA SEGMENT _STR DB I LOVE ASSEMBLY LANGUAGE PROGRAMMING, CR, LF, $ _DATA ENDS _CODE SEGMENT ASSUME CS: _CODE, DS: _DATA START: MOV AH, 09H ; string writing function MOV DX, _DATA ; to initialize data segment MOV DS, DX MOV DX, OFFSET _STR ;point to DX INT 21H MOV AH, 4CH ;to transfer to ms-dos MOV AL, 00H INT 21H _CODE ENDS END START

Output:
I LOVE ASSEMBLY LANGUAGE PROGRAMMING

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


;LABEL MNE MONIC OPERAND COMMENT CR EQU 0DH ; D= 13 is the ASCII code for carriage return LF 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: _DATA START: XOR BX, BX MOV BX,0AH MOV DX, _DATA MOV DS, DX LABEL1: MOV AH,09H MOV DX, OFFSET _STR INT 21H DEC BX JNE LABEL1 ; if BX go to label MOV AH, 4CH ; to transfer to ms dos MOV AL, 00H INT 21H _CODE ENDS END START

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

3. Write an assembly language program to print a sting 10 times using loop instructions. ANS:
; LABEL NME MONIC OPERAND COMMENT CR EQU LONG LIVE HOMAN SPIRIT,CR, LF, $ _DATA ENDS _CODE SEGMENT ASSUME CS:_CODE, DS:_DATA PRO_START: XOR CX, CX MOV CX, 0AH MOV DX, _DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET STR INT 21H LOOP LABEL1 MOV AH,4CH MOV AL, 00H INT 21H _CODE ENDS END PRO_START

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

4. Write an assembly language program to read character from console and echo it. ANS:
;LABEL NME MONIC OPERAND COMMENT CR EQU 0DH LF EQU 0AH _CODE SEGMENT ASSUME CS: _CODE START: MOV AH, 01H ;dos function, request for input] INT 21H MOV AH, 02H ;display character an the screen. MOV DL, AL INT 21H MOV AH, 4CH

MOV AL, 00H INT 21H _CODE ENDS END 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 COMMENT CR EQU 0DH LF EQU 0AH _CODE SEGMENT ASSUME CS:_CODE MAINP: MOV CX1, 1AH ;26 is stored in CX register MOV DL, 41H NEXT: MOV AH, 02H INC 21H INC DL LOOP NEXTC MOV AH, 4CH MOV AL,00H INT 21H END NEXTC END 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 PROC START: MOV CL,31H MOV CX, 05H PRINT_LOOP: CALL WRITE_NUM INC DL INC DL LOOP PRINT_LOOP MOV AH, 4CH INT 21H PRINT_ODD ENDP

; Moves zero to register DL ; Moves the decimal value to register CX. ; Prints number ; Increases the value of register DL ;Loop to print out ten numbers ; 4CH function of the 21h interruption ; 21H interruption ; Finishes the procedure

WRITE_NUM PROC MOV AH,2H INT 21H RET WRITE_NUM ENDP END PRINT_ODD END START

; 2H Function of the 21 interruption ; Prints number out from the register DL ; register the control to procedure called ; Finishes the procedure ; Finishes the program code

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 ah MOV DL, 2AH ; Moves the value 2ah to register DL ; (Its the asterisk value in ASCII format) INT 21H ; 21H Interruption MOV AH, 4CH ; 4CH function goes to operating system INT 21H ; interruption END START ; Finishes the program code

Output:
*

8. GREETING PROGRAM:
;model small ;stack 100h ;data time 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,@ DATA MOV DS, AX ; set DS to print the data segment MOV DS, OFFSET TIME PROMPT ; point to the time prompt MOV AH, A ; Dos print string routine INT 21H ; Display the time prompt MOV AH, 1 ; Dos get character register INT 21H ; Get a single character response OR A1,20H ; Force character to lower case EMP A1, Y ; Check input character JE ISAFTERNOON CMP A1, N JE ISMORNING MOV DX, OFFSET DEFAULT MESSAGE ; JE DEFAULT GREETING JMP DISPLAY GREETING IS AFTERNOON: MOV DX, OFFSET GOOD AFTERNOON MESSAGE.

JMP DISPLAY GREETING IS MORNING: MOV DX, OFFSET GOOD MORNING MESSAGE. DISPLAY GREETING: MOV AH, A INT 21H MOV AH, 4CH ;Dos terminate program routine MOV A1, 0 INT 21H END 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 segment ASSUME CS: CODE, DS:DATA MAIN P: MOV AX, DATA MOV DS, AX MOV CX, 03H NEXT P: MOV AB, 01H INT 21H MOV XX, A2 MOV AB, 01H INT 21H MOV AH, 01H INT 21H MOV YY,A1 MOV BH, XX MOV B1,YY COM BH, BL JNE NOT_EQUAL EQUAL: MOV AH, 02H MOV DL, Y INT 21H JMP CONTINUE NOT EQUAL: MOV AH, 02H MOV DL, N INT 21H CONTINUE: LOOP NEXT P MOV AH, 4CH INT 21H CODE ENDS END MAIN P

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


;model small ;stack ;code PRINT_0_9_PROC

START: MOV CX, 0AH PRINT_LOOP: CALL WRITE_NUM INT DL LOOPPRINT_LOOP MOV AH, 4CH INT 21H PRINT_0_9_END P WRITE_NUM PROC MOV AH, 2H INT 21H RET WRITE_NUM END P ENDPRINT_0_9 END START ; moves zero to register DL ; Moves decimal value 10 register to CX ; prints number ; Increases the value of register DL ; Loop to print out 10 numbers ; 4CH function of the 21H interruption ; 21H interruption ; Finishes the procedure ; 2H fun of the 21interruption ; prints number out from the register DL ; Returns the control to procedure called ; Finishes the procedure ; Finishes the program code

Output:
0123456789

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


CR EQU 0DH LF EQU 0AH _DATA SEGMENT _STR1 DB APPLE, CR, LF, $ _STR2 DB ORANGE, CR, LF, $ _DATA ENDS _CODE SEGMENT _ASSUME CS: _CODE, DS:_DATA PRO_START: XOR CX, CX MOV CX, 0AH MOV AH, 09H MOV DX, _DATA MOV DS, DX START: MOV DX, OFFSET _STR1 INT 21H MOV DX, OFFSET _STR2 INT 21H LOOP START MOV AH, 4CH ; transfer to ms_dos MOV A1,00H INT 21H _CODE ENDS END PRO_START

Output:
APPLE ORANGE APPLE ORANGE APPLE ORANGE APPLE ORANGE APPLE ORANGE APPLE ORANGE APPLE ORANGE APPLE ORANGE

APPLE ORANGE APPLE ORANGE

12. Write an ALP to accept characters from keyboard until return key is entered and also echo the last character entered.
;model small CR EQU 0DH LF EQU 0AH STACK DATA _STR DB CR, LF, $ ;CODE START: XOR AX, AX EEL: MOV BL, AL MOV AH, 01H INT 21H CMP AL, 0DH JNZ EEL MOV AH, 09H MOV DX, @DATA MOV DS, DX MOV DX, OFFSET _STR INT 21H MOV DL, BL MOV AH, 02H INT 21H MOV AH, 4CH INT 21H END START

Input:
Hello $

Output:

o
13.Write a program to print the smallest elements in the given array
CR EQU 0DH LF EQU 0AH DATA SEGMENT ARRAY DB 55, 60, 72, 46, 25 MSG DB CR, LF, THE SMALLEST NUMBER IS:, $ DATA ENDS CODE SEGMENT ASUMME CS:CODE, DS: DATA START: MOV DX, DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY MOV DI, 04H XOR AX, AX L1: MOV CL, [BX+DI] CMP CL, AL JLE L2 DEC DI

JLE L1 L2: MOV AL, CL AAM ADD AX, 3030H MOV DL, AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL, AL MOV AH, 02H INT 21H CODE ENDS MOV AX, 4COOH END START INT 21H

Output:
THE SMALLEST NUMBER IS :25

14. Write an ALP to print the elements of an array.


CR EQU 0DH LF EQU 0AH DATA SEGMENT ARRAY DB 55, 68, 34, 78, 56 MSG DB, CR, LF, THE ARRAY ELEMENTS ARE:, $ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: XOR CX, CX MOV CX, 05H MOV DX, DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY MOV DI, 00H XOR AX, AX LABEL1: MOV AL, [BX+DI] AAM ADD AX, 3030H MOV DL, AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL,AL MOV AH, 02H INT 21H INT LABEL1 MOV AH, 4CH MOV AL, 00H INT 21H CODE ENDS END START

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

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


CR EQU 0DH LF EQU 0AH DATA SEGMENT ARRAY DB 55, 68, 34, 78, 56 MSG DB, CR, LF, THE ARRAY ELEMENT OFTER INCREMENT BY TWO ARE:, $ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: XOR CX, CX MOV CX, 05H MOV DX, DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY MOV DI, 00H XOR AX, AX L1: MOV AL, [BX+DI] ADD AL,2 AAM ADD AX, 3030H MOV DL, AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL, AL MOV AH, 02H INT 21H MOV DL, INT 21H INC DI LOOP L1 MOV AH, 4CH MOV AL, 00H INT 21H CODE ENDS END 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 0DH LF EQU 0AH DATA SEGMENT ARRAY DB 55, 68, 34, 78, 56 MSG DB CR, LF, THE ARRAY ELEMENTS AFTER DECREMENT BY TWO ARE:, $ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: XOR CX, CX

MOV CX, 05H MOV DX, DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY MOV SI, 00H ; SI, DI both can use as index XOR AX, AX L: MOV AL, [BX+SI] SUB AL, 2 INC SI AAM ADD AX, 3030H MOV DL, AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL, AL MOV AH, 02H INT 21H MOV DL, INT 21H LOOP L1 MOV AX, 4COOH INT 21H CODE ENDS END 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 0DH LF EQU 0AH DATA SEGMENT ARRAY DB 55, 64, 72, 51, 60 MSG DB CR, LF, THE REVERSED ORDERED ELEMENTS ARE:. $ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: XOR CX, CX MOV CX,05H MOV DX, DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY MOV DI, 04H XOR AX, AX LABEL1: MOV AL, [BX_DI] AAM ADD AX, 3030H MOV DL, AH PUSH AX

MOV AH, 02H INT 21H POP AX MOV DL,AL MOV AH, 02H INT 21H MOV DL, INT 21H DEC DI LOOP LABEL1 MOV AH, 4CH MOV AX, 4C00H INT 21H DEC DI LOOP LABEL MOV AH, 4CH MOV AX, 4C00H INT 21H CODE ENDS END 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 0DH LF EQU 0AH DATA SEGMENT ARRAY DB 1,2,3,4,5,6 MSG DB CR, LF, THE ELEMENTS AFTER MULTIPLYING WITH 2 ARE:, $ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS; DATA START: XOR CX, CX MOV CX, 06H MOV DX, DATA MOV AH, 09H MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY MOV DI, 00H XOR AX, AX LABEL1: MOV AL, [BX+DI] MOV DL, AL MOV AL, DL AAM ADD AX, 3030H MOV DL,AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL, AL MOV AH, 02H

INT 21H MOV DL, INT 21H INC DI LOOP LABEL1 MOV AH, 4CH MOV AL, 00H INT 21H CODE ENDS END 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 0DH LF EQU 0AH _DATA SEGMENT ARRAY1 DB 5,15,13,12,20 _MSG DB CR,LF, THE SUM IS:, $ _DATA ENDS CODE SEGMENT ASSUME CS:_CODE, DS:_DATA PRO_START: MOV DX, _DATA MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX,OFFSET ARRAY1 MOV DI,04H XOR AX,AX LABEL1: ADD AL, [BX+DI] DEC DI JGE LABEL1 AAM ; Convert to BCD. ADD AX, 3030H ;convert to ASCII MOV DL, AH ; display the most significant digit PUSH AX ; Save theLSD MOV AH, 02H INT 21H MOV AH, 4CH MOV AL, 00H INT 21H _CODE ENDS END PRO_START

Output:
THE SUM IS:55

20. Write a program to find the biggest of the given set of array elements.
CR EQU 0DH LF EQU 0AH _DATA SEGMENT ARRAY1 DB 55, 18, 20, 62, 13

_MSG DB CR, LF, THE BIGGEST ELEMENT IS:, $ _DATA ENDS _CODE SEGMENT ASSUME CS: _CODE, DS: _DATA PRO_START: MOV DS, DX MOV AH, 09H MOV DX, OFFSET _MSG INT 21H MOV BX, OFFSET ARRAY1 MOV DI, 04H XOR AX, AX LABLE1: MOV CL, [BX, DI] CMP AL, CL JGE LABEL2 MOV AL,CL LABEL2: DEC DI JGE LABEL1 AAM ADD AX, 3030H MOV DL, AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL, AL MOV AH, 02H INT 21H MOV AH, 4CH MOV AL, 00H INT 21H _CODE ENDS END 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 00H LF EQU 0AH _DATA SEGMENT ARRAY1 DB 55, 18,90, 62, 13 _MSG DB, CR, LF, THE SORTED ARRAY IS:, $ _DATA SEGMENT ASSUME CS:_CODE, DS: _DATA PRO_START: MOV DI, DX MOV DS, DX MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV BX, OFFSET ARRAY1 XOR DX, DX MOV DL, 04H LABEL3: MOV DI, DX XOR AX, AX LABEL1: MOV CL, [BX+DI] MOV AL, [BX+DI_1] CMP AL, CL

JG LABEL2 MOV [BX+DI], AL MOV [BX+DI_1],CL LABEL2: DEC DI JG LABEL1 DEC DL JG LABEL3 MOV DI, 04 LABEL4: MOV AX, [BX+DI] AAM ADD AX, 3030H MOV DL, AH PUSH AX MOV AH, 02H INT 21H POP AX MOV DL,AL MOV AH, 02H INT 21H MOV DL, INT 21H DEC DI JGE LABEL4 MOV AH, 4CH MOV AL, 00H INT 21H _CODE ENDS END PRO_START

; Converts to BCD ; Convert to ASCII ; Display the most significant digit ;Save the LSD ; Restore AL ; Display the least significant digit

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

pranky_cool2001@yahoo.com fameboy@gmail.com

You might also like