├── LAB 1 └── expt1.pdf ├── LAB 2 ├── Lab2Task_1.asm ├── Lab2Task_2.asm ├── Lab2Task_3.asm ├── Lab2Task_4.asm ├── Lab2Task_5.asm ├── README.md └── lab2.pdf ├── LAB 3 ├── BUBBLE_SORT.asm ├── Lab3Task_1.asm ├── Lab3Task_2.asm ├── README.md └── lab3.pdf ├── LAB 4 ├── Lab4Delete.asm ├── Lab4Rename.asm ├── Lab4Task1.asm ├── Lab4Task2.asm ├── Lab4Task3.asm ├── Lab4Task4.asm ├── Lab4Task5.asm ├── README.md └── lab4.pdf ├── LAB 5 ├── ABC.asm ├── ABC_ORG.asm ├── DEF.asm ├── Lab5Task1.asm ├── Lab5Task2.asm ├── Lab5Task3.asm ├── README.md └── lab5.pdf └── README.md /LAB 1/expt1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Shivankit-Gaind/Microprocessor-Assembly-Language-Programs/23558534e6def527a3a87310f9446c9ef35fc242/LAB 1/expt1.pdf -------------------------------------------------------------------------------- /LAB 2/Lab2Task_1.asm: -------------------------------------------------------------------------------- 1 | .model tiny 2 | .486 3 | .data 4 | dat1 dd 45678902h,78076788h,9008123ah,345678abh,12345678h 5 | max1 dd ? 6 | .code 7 | .startup 8 | lea si,dat1 9 | mov cx,5 10 | lodsd 11 | x1: cmp eax,[si] 12 | jae x2 13 | mov eax,[si] 14 | x2: add si,4 15 | loop x1 16 | mov max1,eax 17 | .exit 18 | end -------------------------------------------------------------------------------- /LAB 2/Lab2Task_2.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | ARRAY1 DB 78H, 32H, 0AH, 2BH, 0A0H, 5FH, 67H, 0AH, 54H, 49H 4 | 5 | .CODE 6 | .STARTUP 7 | LEA SI, ARRAY1 ;POINTER/ ITERATOR TO ARRAY1 8 | MOV BL, 'E' ;E IN ASCII 9 | MOV CX, 0AH ;COUNTER 10 | MOV AL, 0AH ;FOR COMPARING WITH 0AH IN ARRAY1 11 | X1: CMP [SI], AL 12 | JNE X2 13 | MOV [SI], BL 14 | X2: INC SI 15 | LOOP X1 16 | .EXIT 17 | END -------------------------------------------------------------------------------- /LAB 2/Lab2Task_3.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | ORG 100H 4 | ARRAY1 DB 78H, 32H, 0AH, 2BH, 0A0H, 5FH, 67H, 0AH, 54H, 49H 5 | .CODE 6 | .STARTUP 7 | LEA SI, ARRAY1 8 | MOV BL, 'E' 9 | MOV CX, 0AH 10 | MOV AL, 0AH 11 | X1: CMP [SI], AL 12 | JNE X2 13 | MOV [SI], BL 14 | X2: INC SI 15 | LOOP X1 16 | 17 | LEA SI, ARRAY1 18 | MOV CX, 0AH 19 | X3: MOV DL,[SI] 20 | INC SI 21 | LOOP X3 22 | .EXIT 23 | END -------------------------------------------------------------------------------- /LAB 2/Lab2Task_4.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .486 3 | .DATA 4 | ORG 100H 5 | ARRAY1 DW 7888H, 980AH, 0FFFFH, 0203H 6 | COUNT DW 04H 7 | NEG1 DB ? 8 | .CODE 9 | .STARTUP 10 | LEA SI, ARRAY1 11 | MOV CX, COUNT 12 | X1: MOV AX, [SI] 13 | BT AX, 0FH 14 | JNC X2 15 | INC NEG1 16 | X2: INC SI 17 | INC SI 18 | LOOP X1 19 | MOV DL, NEG1 ;DISPLAYING CONTENTS OF NEG1 IN DX 20 | .EXIT 21 | END -------------------------------------------------------------------------------- /LAB 2/Lab2Task_5.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .486 3 | .DATA 4 | ORG 100H 5 | ARRAY1 DD 12345678H, 9ABCDEF0H, 12345678H, 9ABCDEF0H, 12345678H, 9ABCDEF0H, 12345678H, 9ABCDEF0H 6 | ORG 114H 7 | ARRAY2 DD 10 DUP(?) 8 | .CODE 9 | .STARTUP 10 | LEA SI, ARRAY1 11 | LEA DI, ARRAY2 12 | MOV CX, 0AH 13 | X1: MOV EAX, [SI] 14 | MOV [DI], EAX 15 | ADD SI, 04H 16 | ADD DI, 04H 17 | LOOP X1 18 | 19 | LEA SI, ARRAY2 20 | MOV CX, 0AH 21 | X2: MOV EAX, [SI] 22 | ADD SI, 04H 23 | LOOP X2 24 | .EXIT 25 | END -------------------------------------------------------------------------------- /LAB 2/README.md: -------------------------------------------------------------------------------- 1 | # Problems 2 | 3 | 1. Write an ALP that finds the maximum number from a set of 32-bit numbers 4 | 5 | 2. Write an ALP to add 2 16-byte nos. using them 6 | 1. as 16-bit data 7 | 2. as 32-bit data 8 | 9 | 3. Write an ALP that will examine the contents of set of 10 bytes starting from location ‘ARRAY1’ for the presence of data ‘0AH’ and replace it with the ASCII character ‘E’. 10 | 11 | 4. Write an ALP that will count the number of negative numbers in an array of 16-bit signed data stored from location ‘ARRAY1’. The number of elements in the array is present in location ‘COUNT’. The count of negative numbers must be stored in location ‘NEG1’ 12 | 13 | 5. Write an ALP that will transfer data from ‘ARRAY1’ to ‘ARRAY2’. The number of elements in the array is 10. The array is a double word array. The starting address of ARRAY2 = starting address of ARRAY1 + 20d . 14 | -------------------------------------------------------------------------------- /LAB 2/lab2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Shivankit-Gaind/Microprocessor-Assembly-Language-Programs/23558534e6def527a3a87310f9446c9ef35fc242/LAB 2/lab2.pdf -------------------------------------------------------------------------------- /LAB 3/BUBBLE_SORT.asm: -------------------------------------------------------------------------------- 1 | .model tiny 2 | .386 3 | .stack 4 | .data 5 | 6 | numbers DW 1,4,5,2,3 7 | count DW 5 8 | 9 | 10 | 11 | .code 12 | .startup 13 | 14 | LEA SI, numbers 15 | MOV CX, count 16 | 17 | X1: MOV DI, SI 18 | MOV AX, CX 19 | 20 | X2: MOV DX, [DI] 21 | INC DI 22 | INC DI 23 | CMP DX, [DI] 24 | JLE P 25 | 26 | MOV BX, [DI] 27 | MOV [DI-2],BX 28 | MOV [DI],DX 29 | 30 | P: DEC AX 31 | JNZ X2 32 | 33 | INC SI 34 | INC SI 35 | DEC CX 36 | JNZ X1 37 | 38 | .exit 39 | END 40 | -------------------------------------------------------------------------------- /LAB 3/Lab3Task_1.asm: -------------------------------------------------------------------------------- 1 | .model tiny 2 | .data 3 | dat1 db 21 4 | dat2 db ? 5 | dat3 db 22 dup('$') 6 | dat4 db 0ah, 0dh, '$' 7 | .code 8 | .startup 9 | lea dx,dat1 10 | mov ah,0ah 11 | int 21h 12 | lea dx,dat4 13 | mov ah,09h 14 | int 21h 15 | lea dx,dat3 16 | mov ah,09h 17 | int 21h 18 | .exit 19 | end 20 | 21 | -------------------------------------------------------------------------------- /LAB 3/Lab3Task_2.asm: -------------------------------------------------------------------------------- 1 | .model tiny 2 | .486 3 | .data 4 | msg1 db "Enter User Name", 0ah, 0dh, '$' 5 | max1 db 15 6 | count1 db ? 7 | username_input db 16 dup('$') 8 | msg2 db "Enter Password", 0ah, 0dh, '$' 9 | max2 db 15 10 | count2 db ? 11 | password_input db 16 dup('$') 12 | msg3 db "Hello $" 13 | nextline db 0ah, 0dh, '$' 14 | username db "jbnerd" 15 | password db "admin123" 16 | .code 17 | .startup 18 | lea dx,msg1 19 | mov ah,09h 20 | int 21h 21 | lea dx,max1 22 | mov ah,0ah 23 | int 21h 24 | lea si,username 25 | lea di,username_input 26 | mov bx, 00h 27 | mov cx,06h 28 | cmploop:mov bl, byte ptr[si] 29 | cmp byte ptr[di],bl 30 | jne last 31 | inc si 32 | inc di 33 | loop cmploop 34 | lea dx,msg2 35 | mov ah,09h 36 | int 21h 37 | lea dx,max2 38 | mov ah,0ah 39 | int 21h 40 | lea si,password 41 | lea di,password_input 42 | mov bx,00h 43 | mov cx,08h 44 | cpmloop:mov bl, byte ptr[si] 45 | cmp byte ptr[di],bl 46 | jne last 47 | inc si 48 | inc di 49 | loop cpmloop 50 | lea dx,msg3 51 | mov ah,09h 52 | int 21h 53 | lea dx,username_input 54 | mov ah,09h 55 | int 21h 56 | last: 57 | .exit 58 | end -------------------------------------------------------------------------------- /LAB 3/README.md: -------------------------------------------------------------------------------- 1 | # Problems 2 | - Write an ALP that will take in a string of maximum 20 characters from user and display it on the next line on the screen (ASCII equivalent for newline is 0Dh (enter) followed by 0Ah (next line)). 3 | - Write an ALP that does the following 4 | 1. Display the string “Enter User Name” and goes to the next line 5 | 2. Takes in the user entered string compares with user name value already stored in memory 6 | 3. If there is no match it should exit. 7 | 4. If there is a match it should display the string “Enter Password” and goes to next line 8 | 5. Takes in password entered by the user and compares with password already stored in memory 9 | 6. If there is no match it should exit’ 10 | 7. If there is a match it should display “Hello Username” 11 | - Bubble Sort 12 | -------------------------------------------------------------------------------- /LAB 3/lab3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Shivankit-Gaind/Microprocessor-Assembly-Language-Programs/23558534e6def527a3a87310f9446c9ef35fc242/LAB 3/lab3.pdf -------------------------------------------------------------------------------- /LAB 4/Lab4Delete.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD3.txt',0 5 | .CODE 6 | .Startup 7 | MOV AH, 41H 8 | LEA DX, FILE 9 | INT 21H 10 | .EXIT 11 | END 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /LAB 4/Lab4Rename.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD2.txt',0 5 | FILE2 DB 'ABCD3.txt',0 6 | .CODE 7 | .Startup 8 | MOV AH, 56H 9 | LEA DX, FILE 10 | LEA DI, FILE2 11 | INT 21H 12 | .EXIT 13 | END 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /LAB 4/Lab4Task1.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD.txt',0 5 | MYNAME DB 'Shivankit' 6 | NEWLINE DB 0DH, 0AH 7 | IDNO DB '2015A7PS076P' 8 | NEWLINE2 DB 0DH, 0AH 9 | 10 | .CODE 11 | .Startup 12 | 13 | ;CREATING THE FILE 14 | MOV AH, 3CH 15 | LEA DX, FILE 16 | MOV CL, 2; 17 | INT 21H 18 | 19 | ;OPENING THE FILE 20 | LEA DX, FILE 21 | MOV AH, 3DH 22 | MOV AL, 02H 23 | INT 21H 24 | 25 | ;WRITING DATA INTO THE FILE 26 | MOV BX,AX ;TRANSFERRING THE FILE HANDLE 27 | MOV AH, 40H 28 | MOV CX, 25 29 | LEA DX, MYNAME 30 | INT 21H 31 | 32 | ;CLOSING THE FILE 33 | MOV AH, 3EH 34 | INT 21H 35 | 36 | .EXIT 37 | END 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /LAB 4/Lab4Task2.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD.txt',0 5 | HOSTEL DB 'BUDH' 6 | NEWLINE DB 0DH, 0AH 7 | ROOM DB '2146' 8 | NEWLINE2 DB 0DH, 0AH 9 | 10 | .CODE 11 | .Startup 12 | 13 | ;OPENING THE FILE 14 | LEA DX, FILE 15 | MOV AH, 3DH 16 | MOV AL, 02H ;WRITE/READ 17 | INT 21H 18 | 19 | ;MOVING THE POINTER TO THE END OF THE FILE 20 | MOV BX,AX ;TRANSFERRING THE FILE HANDLE 21 | MOV AH, 42H 22 | MOV DX, 25 23 | MOV CX, 00H ; DISPLACEMENT STORED IN COMBINATION OF CX:DX 24 | MOV AL, 00H 25 | INT 21H 26 | 27 | ;WRITING DATA INTO THE FILE 28 | MOV AH, 40H 29 | MOV CX, 12 30 | LEA DX, HOSTEL 31 | INT 21H 32 | 33 | ;CLOSING THE FILE 34 | MOV AH, 3EH 35 | INT 21H 36 | 37 | .EXIT 38 | END -------------------------------------------------------------------------------- /LAB 4/Lab4Task3.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD.txt',0 5 | STORE DB 100 DUP('0') 6 | 7 | .CODE 8 | .Startup 9 | 10 | ;OPENING THE FILE 11 | LEA DX, FILE 12 | MOV AH, 3DH 13 | MOV AL, 00H ;READING 14 | INT 21H 15 | 16 | ;READING DATA FROM THE FILE 17 | MOV BX, AX 18 | MOV AH, 3FH 19 | MOV CX, 37 20 | LEA DX, STORE 21 | INT 21H 22 | 23 | MOV DI, DX 24 | MOV AH, '$' 25 | MOV [DI+37],AH 26 | 27 | ;DISPLAY THE DATA 28 | MOV AH, 09H 29 | LEA DX, STORE 30 | INT 21H 31 | 32 | ;CLOSING THE FILE 33 | MOV AH, 3EH 34 | INT 21H 35 | 36 | .EXIT 37 | END -------------------------------------------------------------------------------- /LAB 4/Lab4Task4.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD.txt',0 5 | STORE DB 100 DUP('0') 6 | 7 | .CODE 8 | .Startup 9 | 10 | ;OPENING THE FILE 11 | LEA DX, FILE 12 | MOV AH, 3DH 13 | MOV AL, 00H ;READING 14 | INT 21H 15 | 16 | ;READING DATA FROM THE FILE BYTE BY BYTE 17 | MOV BX, AX 18 | LEA DX, STORE 19 | 20 | X1: MOV CX, 01 21 | MOV AH, 3FH 22 | INT 21H 23 | INC DX 24 | CMP AX,00H 25 | JNZ X1 26 | 27 | MOV DI, DX 28 | MOV AH, '$' 29 | MOV [DI-1],AH 30 | 31 | ;DISPLAY THE DATA 32 | MOV AH, 09H 33 | LEA DX, STORE 34 | INT 21H 35 | 36 | ;CLOSING THE FILE 37 | MOV AH, 3EH 38 | INT 21H 39 | 40 | .EXIT 41 | END -------------------------------------------------------------------------------- /LAB 4/Lab4Task5.asm: -------------------------------------------------------------------------------- 1 | .Model Tiny 2 | .386 3 | .DATA 4 | FILE DB 'ABCD2.txt',0 5 | READMAX DB 40 6 | READACTUAL DB ? 7 | STORE DB 40 DUP('0') 8 | 9 | NEWLINE DB 0DH, 0AH 10 | 11 | READMAX2 DB 40 12 | READACTUAL2 DB ? 13 | STORE2 DB 40 DUP('0') 14 | 15 | .CODE 16 | .Startup 17 | 18 | ;CREATING THE FILE 19 | MOV AH, 3CH 20 | LEA DX, FILE 21 | MOV CL, 2; 22 | INT 21H 23 | 24 | ;TAKING INPUT FROM THE KEYBOARD FOR NAME 25 | MOV AH, 0AH 26 | LEA DX, READMAX 27 | INT 21H 28 | 29 | ;TAKING INPUT FROM THE KEYBOARD FOR ID 30 | MOV AH, 0AH 31 | LEA DX, READMAX2 32 | INT 21H 33 | 34 | ;OPENING THE FILE 35 | LEA DX, FILE 36 | MOV AH, 3DH 37 | MOV AL, 02H 38 | INT 21H 39 | 40 | ;WRITING DATA INTO THE FILE -- NAME 41 | MOV BX,AX ;TRANSFERRING THE FILE HANDLE 42 | MOV AH, 40H 43 | MOV CL, READACTUAL 44 | MOV CH, 00H 45 | LEA DX, STORE 46 | INT 21H 47 | 48 | ;MOVING THE POINTER TO THE END OF THE FILE 49 | MOV AH, 42H 50 | MOV DL, READACTUAL 51 | MOV DH, 00H 52 | MOV CX, 00H ; DISPLACEMENT STORED IN COMBINATION OF CX:DX 53 | MOV AL, 00H 54 | INT 21H 55 | 56 | ;WRITING DATA INTO THE FILE -- NEWLINE 57 | MOV AH, 40H 58 | MOV CL, READACTUAL 59 | MOV CH, 00H 60 | LEA DX, NEWLINE 61 | INT 21H 62 | 63 | ;MOVING THE POINTER TO THE END OF THE FILE 64 | MOV AH, 42H 65 | MOV DL, READACTUAL 66 | MOV DH, 00H 67 | ADD DX, 2 ;FOR NEWLINE CHARACTERS 68 | MOV CX, 00H ; DISPLACEMENT STORED IN COMBINATION OF CX:DX 69 | MOV AL, 00H 70 | INT 21H 71 | 72 | ;WRITING DATA INTO THE FILE --- ID 73 | MOV AH, 40H 74 | MOV CL, READACTUAL2 75 | MOV CH, 00H 76 | LEA DX, STORE2 77 | INT 21H 78 | 79 | 80 | ;CLOSING THE FILE 81 | MOV AH, 3EH 82 | INT 21H 83 | 84 | .EXIT 85 | END 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /LAB 4/README.md: -------------------------------------------------------------------------------- 1 | # Problems 2 | 3 | 1. Create a new file of any name and in that file write your name and ID. No. twice on two different lines. Hint: make use of carriage return and line feed ASCII codes. Be sure to close the file. 4 | 2. To the file resulting from Task1, append your hostel name and room number. Close the file in the end. 5 | 3. Open the file you created in Task 2 and read its contents. You can count the number of bytes to be read beforehand. After reading the file, display the data using dos function call 09h. Close the file in the end. 6 | 4. Open the file you created in Task 2. Read the entire file one byte at a time and stop after you reach the end of file. After reading the file, display the data using dos function call 09h. Close the file in the end. 7 | 5. Create a new file and write your name and ID. No. in it. Use keyboard to input the data. Hint: Use dos function 0Ah for input from keyboard. Also try renaming the file and deleting it, changing its attributes date of creation & time. 8 | -------------------------------------------------------------------------------- /LAB 4/lab4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Shivankit-Gaind/Microprocessor-Assembly-Language-Programs/23558534e6def527a3a87310f9446c9ef35fc242/LAB 4/lab4.pdf -------------------------------------------------------------------------------- /LAB 5/ABC.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | ATTRIBUTE DB 04H 4 | BEGINROW DW 80 5 | BEGINCOL DW 70 6 | ENDROW DW 180 7 | ENDCOL DW 150 8 | ORIGINAL DB ? 9 | COLGAP DW 10 10 | ROWGAP DW 10 11 | RECTC DB 2 ;NUMBER OF RECTANGLES 12 | 13 | 14 | .CODE 15 | .STARTUP 16 | MOV AH,0FH ;GETTING THE DISPLAY MODE 17 | INT 10H 18 | 19 | 20 | MOV ORIGINAL,AL ;PRESERVING THE ORIGINAL VALUE OF AL 21 | MOV AL,12H ;SETTING THE DISPLAY MODE TO GRAPHICAL MODE 22 | MOV AH,00 23 | INT 10H 24 | 25 | 26 | X4: MOV DX,BEGINROW 27 | 28 | X2: MOV CX,BEGINCOL 29 | 30 | X1: MOV AL,ATTRIBUTE ;PIXEL COLOR 31 | MOV AH,0CH ;FILLING A PIXEL 32 | INT 10H 33 | 34 | INC CX 35 | CMP CX,ENDCOL 36 | JNZ X1 37 | 38 | INC DX 39 | CMP DX,ENDROW 40 | JNZ X2 41 | 42 | DEC RECTC 43 | JZ X3 44 | 45 | ;MODIFICATION FOR THE NEXT RECTANGLE 46 | 47 | MOV AX, ROWGAP ;REDUCING THE RECTANGLE SIZE 48 | ADD BEGINROW,AX 49 | SUB ENDROW,AX 50 | 51 | MOV AX, COLGAP ;REDUCING THE RECTANGLE SIZE 52 | ADD BEGINCOL,AX 53 | SUB ENDCOL,AX 54 | 55 | CMP ATTRIBUTE, 04H 56 | JZ CHANGEATTR 57 | JMP CHANGEATTR2 58 | 59 | CHANGEATTR: MOV ATTRIBUTE, 00H 60 | JMP FINAL 61 | CHANGEATTR2: MOV ATTRIBUTE, 04H 62 | 63 | FINAL: JMP X4 64 | 65 | 66 | 67 | X3: MOV AH,07H ;TERMINATING THE PROGRAM 68 | INT 21H 69 | CMP AL,'E' 70 | JNZ X3 71 | 72 | 73 | MOV AL,ORIGINAL ;RESTORING THE ORIGINAL DISPALY MODE 74 | MOV AH,0 75 | INT 10H 76 | 77 | .EXIT 78 | END 79 | -------------------------------------------------------------------------------- /LAB 5/ABC_ORG.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | ATTRIBUTE DB 04H ;PIXEL COLOR 4 | BEGINROW DW 80 5 | BEGINCOL DW 70 6 | ENDROW DW 180 7 | ENDCOL DW 150 8 | ORIGINAL DB ? 9 | 10 | .CODE 11 | .STARTUP 12 | 13 | MOV AH, 0FH ;GETTING THE DISPLAY MODE 14 | INT 10H 15 | 16 | MOV ORIGINAL,AL ;PRESERVING THE ORIGINAL VALUE OF AL 17 | MOV AL, 12H ;SETTING THE DISPLAY MODE TO GRAPHICAL MODE 18 | MOV AH, 0 19 | INT 10H 20 | 21 | MOV DX, BEGINROW ;INITIALISING THE BEGINNING 22 | 23 | X1: MOV CX, BEGINCOL ;INITIALISING THE COLUMN POSITION 24 | 25 | X2: MOV AL, ATTRIBUTE ;PIXEL COLOR 26 | MOV AH, 0CH ;FILLING A PIXEL 27 | INT 10H 28 | 29 | INC CX 30 | CMP CX, ENDCOL 31 | JNZ X2 ; IF THE COLUMN IS NOT COMPLETED 32 | 33 | INC DX ;JUMP TO THE NEXT ROW 34 | CMP DX, ENDROW 35 | JNZ X1 ;START FROM THE NEXT ROW 36 | 37 | X3: MOV AH, 07H 38 | INT 21H 39 | CMP AL,'E' ;PRESS 'E' FOR EXIT 40 | JZ X3 41 | 42 | MOV AL, ORIGINAL ;RESTORING BACK THE ORGINAL DISPLAY MODE 43 | MOV AH, 0 44 | INT 10H 45 | 46 | .EXIT 47 | END -------------------------------------------------------------------------------- /LAB 5/DEF.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | ATTRIBUTE DB 04H 4 | BEGINROW DW 00 5 | BEGINCOL DW 00 6 | ENDROW DW 150 7 | ENDCOL DW 250 8 | ORIGINAL DB ? 9 | COLGAP DW 20 10 | ROWGAP DW 10 11 | RECTC DB 6 ;NUMBER OF RECTANGLES 12 | 13 | 14 | .CODE 15 | .STARTUP 16 | MOV AH,0FH ;GETTING THE DISPLAY MODE 17 | INT 10H 18 | 19 | 20 | MOV ORIGINAL,AL ;PRESERVING THE ORIGINAL VALUE OF AL 21 | MOV AL,12H ;SETTING THE DISPLAY MODE TO GRAPHICAL MODE 22 | MOV AH,00 23 | INT 10H 24 | 25 | 26 | X4: MOV DX,BEGINROW 27 | 28 | X2: MOV CX,BEGINCOL 29 | 30 | X1: MOV AL,ATTRIBUTE ;PIXEL COLOR 31 | MOV AH,0CH ;FILLING A PIXEL 32 | INT 10H 33 | 34 | INC CX 35 | CMP CX,ENDCOL 36 | JNZ X1 37 | 38 | INC DX 39 | CMP DX,ENDROW 40 | JNZ X2 41 | 42 | DEC RECTC 43 | JZ X3 44 | 45 | ;MODIFICATION FOR THE NEXT RECTANGLE 46 | 47 | MOV AX, ROWGAP ;REDUCING THE RECTANGLE SIZE 48 | ADD BEGINROW,AX 49 | SUB ENDROW,AX 50 | 51 | MOV AX, COLGAP ;REDUCING THE RECTANGLE SIZE 52 | ADD BEGINCOL,AX 53 | SUB ENDCOL,AX 54 | 55 | CMP ATTRIBUTE, 04H 56 | JZ CHANGEATTR 57 | JMP CHANGEATTR2 58 | 59 | CHANGEATTR: MOV ATTRIBUTE, 02H 60 | JMP FINAL 61 | CHANGEATTR2: MOV ATTRIBUTE, 04H 62 | 63 | FINAL: JMP X4 64 | 65 | 66 | 67 | X3: MOV AH,07H ;TERMINATING THE PROGRAM 68 | INT 21H 69 | CMP AL,'E' 70 | JNZ X3 71 | 72 | 73 | MOV AL,ORIGINAL ;RESTORING THE ORIGINAL DISPALY MODE 74 | MOV AH,0 75 | INT 10H 76 | 77 | .EXIT 78 | END 79 | -------------------------------------------------------------------------------- /LAB 5/Lab5Task1.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | STRING DB "DOLL" 4 | COUNT DB 04H 5 | 6 | .CODE 7 | .STARTUP 8 | 9 | ;SETTING THE DISPLAY MODE 10 | MOV AL, 3 11 | MOV AH, 0 12 | INT 10H 13 | 14 | LEA SI, STRING 15 | MOV DL, 40 ; INITIAL SETTING OF THE COLUMN 16 | 17 | X1: MOV AH, 2 ;SETTING THE CURSOR POSITION 18 | MOV BH, 0 19 | MOV DH, 12 ;SETTING THE ROW 20 | INT 10H 21 | 22 | MOV AL, [SI] ;THE CHARACTER TO BE DISPLAYED 23 | MOV AH, 09H 24 | MOV BH,0 25 | MOV CX,1 ;CHARACTER TO BE WRITTEN ON THE DISPLAY ONLY ONCE 26 | MOV BL, 8FH ;BLACK BACKGROUND, WHITE FOREGROUND, INTENSITY HIGH, BLINKING SET 27 | INT 10H 28 | 29 | INC DL ; INCREMENTING THE COLUMN OF CURSOR 30 | INC SI 31 | DEC BYTE PTR COUNT 32 | JNZ X1 33 | 34 | ;BLOCKING TECHNIQUE 35 | MOV AH, 7 36 | X2: INT 21H 37 | CMP AL, '%' 38 | JNZ X2 39 | 40 | .EXIT 41 | END -------------------------------------------------------------------------------- /LAB 5/Lab5Task2.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | DAT1 DB 20H 4 | PREV DB 00H 5 | 6 | .CODE 7 | .STARTUP 8 | 9 | ;SETTING THE DISPLAY MODE 10 | MOV AL, 3 11 | MOV AH, 0 12 | INT 10H 13 | 14 | 15 | MOV AH, 2 ;SETTING THE CURSOR POSITION 16 | MOV BH, 0 17 | MOV DX, 0 ;SETTING THE ROW AND COLUMN TO ZERO 18 | INT 10H 19 | 20 | MOV AL, DAT1 21 | MOV AH, 09H 22 | MOV BH,0 23 | MOV CX,13*80 24 | MOV BL, 1EH 25 | INT 10H 26 | 27 | MOV AH, 02H 28 | MOV BH,0 29 | MOV DL,0 30 | MOV DH,13; SKIPPING FEW ROWS - SETTING CURSOR AGAIN 31 | INT 10H 32 | 33 | MOV AH,09H 34 | MOV AL,DAT1 35 | MOV BH,0 36 | MOV CX,13*80 37 | MOV BL,7AH 38 | INT 10H 39 | 40 | MOV AH,02H 41 | MOV DX,0 42 | MOV BH,0 43 | INT 10H 44 | 45 | X1: MOV AH,07H 46 | INT 21H 47 | 48 | CMP AL, '#' 49 | JNZ X2 50 | CMP PREV, '$' 51 | JZ X4 52 | 53 | X2: MOV PREV, AL 54 | MOV BL,1EH 55 | MOV BH,0 56 | MOV CX,1 57 | MOV AH,09H 58 | INT 10H 59 | 60 | MOV AH,02H 61 | ADD DH,13 62 | INT 10H 63 | 64 | MOV AH,09H 65 | MOV BL, 7AH 66 | MOV CX,1 67 | INT 10H 68 | 69 | SUB DH,13 70 | INC DL 71 | CMP DL,80 72 | JNZ X3 73 | MOV DL, 0 74 | INC DH 75 | CMP DH,12 76 | JNZ X3 77 | MOV DH,0 78 | 79 | X3: MOV AH,02H 80 | INT 10H 81 | JMP X1 82 | 83 | X4: MOV AH,00 84 | MOV AL,03 85 | INT 10H 86 | 87 | 88 | .EXIT 89 | END -------------------------------------------------------------------------------- /LAB 5/Lab5Task3.asm: -------------------------------------------------------------------------------- 1 | .MODEL TINY 2 | .DATA 3 | ATTRIBUTE DB 04H ;PIXEL COLOR 4 | BEGINROW DW 80 5 | BEGINCOL DW 70 6 | ENDROW DW 180 7 | ENDCOL DW 150 8 | ORIGINAL DB ? 9 | 10 | .CODE 11 | .STARTUP 12 | 13 | MOV AH, 0FH ;GETTING THE DISPLAY MODE 14 | INT 10H 15 | 16 | MOV ORIGINAL,AL ;PRESERVING THE ORIGINAL VALUE OF AL 17 | MOV AL, 12H ;SETTING THE DISPLAY MODE TO GRAPHICAL MODE 18 | MOV AH, 0 19 | INT 10H 20 | 21 | MOV DX, BEGINROW ;INITIALISING THE BEGINNING 22 | 23 | X1: MOV CX, BEGINCOL ;INITIALISING THE COLUMN POSITION 24 | 25 | X2: MOV AL, ATTRIBUTE ;PIXEL COLOR 26 | MOV AH, 0CH ;FILLING A PIXEL 27 | INT 10H 28 | 29 | INC CX 30 | CMP CX, ENDCOL 31 | JNZ X2 ; IF THE COLUMN IS NOT COMPLETED 32 | 33 | INC DX ;JUMP TO THE NEXT ROW 34 | JNZ X1 ;START FROM THE NEXT ROW 35 | 36 | X3: MOV AH, 07H 37 | INT 21H 38 | CMP AL,'E' ;PRESS 'E' FOR EXIT 39 | JZ X3 40 | 41 | MOV AL, ORIGINAL ;RESTORING BACK THE ORGINAL DISPLAY MODE 42 | MOV AH, 0 43 | INT 10H 44 | 45 | .EXIT 46 | END -------------------------------------------------------------------------------- /LAB 5/README.md: -------------------------------------------------------------------------------- 1 | # Problems 2 | 3 | 1. Display ‘DOLL’ blinking in the center of the screen with White letters on Black background with screen resolution at 720X400 pixels in text VGA mode (80colsX25rows) with 16 colours.(cursor needs to be advanced with each character. Use video mode 3 4 | 2. Implement a ‘dual-window ‘editor. The screen should be divided into two equal divisions. You may choose to split the screen horizontally or vertically. The first half must have a background colour of blue and foreground of yellow. The second half must have a background of white and a foreground of bright green. Use video mode 3. As the user types in characters on the keyboard, they must be simultaneously displayed on both the halves. If the user types ‘$#’, then the program must terminate and it must return to the previous video mode. 5 | 3. Draw a rectangle (lines red in colour) of area 100x80 pixels with top left corner of the rectangle at pixel position (80, 70). Use video mode 12h 6 | 4. Display the following pattern on the top left of the screen. The area of the outermost rectangle is 150 x 250 7 | -------------------------------------------------------------------------------- /LAB 5/lab5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Shivankit-Gaind/Microprocessor-Assembly-Language-Programs/23558534e6def527a3a87310f9446c9ef35fc242/LAB 5/lab5.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Microprocessor-Assembly-Language-Programs 2 | This repository contains the Assembly Language Programs submitted during the lab sessions of the course Microprocessor Programming and Interfacing, BITS Pilani. 3 | --------------------------------------------------------------------------------