Assembly Language: 1. Write An Assembly Language Program To Print A Sting. Ans
Assembly Language: 1. Write An Assembly Language Program To Print A Sting. Ans
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
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
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
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
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
Output:
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
Output:
THE ARRAY ELEMENTS ARE: 55, 68, 34, 78, 56
Output:
THE ARRAY ELEMENT OFTER INCREMENT BY TWO ARE: 57, 70, 36, 80, 58
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
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
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