More about procedures and Video Processing
description
Transcript of More about procedures and Video Processing
![Page 1: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/1.jpg)
More about proceduresand Video Processing
![Page 2: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/2.jpg)
Lesson plan
• Review existing concepts
• More about procedures and boolean expression
• Video processing
![Page 3: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/3.jpg)
Review
• Procedure:
name PROC; the code of the procedure ...
RETname ENDP
• Calling a procedure:CALL <name of the procedure>
Address of the next instruction will be pushed onto STACK
![Page 4: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/4.jpg)
More about procedures
• Passing parameters:– Are very similar to the concept of passing
parameters in C/C++ and Java– A program may pass parameters by:
• Value• Reference
![Page 5: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/5.jpg)
Passing parameters by value:
– Parameters are the actual data item.Passing value in register:- Store values being passed in registers- Call the procedure
Example:MOV AX, operand1MOV BX, operand2
CALL MULTIPROC…MULTIPROC PROC
MUL BXRET
MULTIPROC ENDP
MULTIPROC(operand1,operand2
![Page 6: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/6.jpg)
Passing parameters by value:
Passing value in STACK- Push values being passed in STACK- Call the procedure- Pop values from STACK
Example:PUSH operand1PUSH operand2
CALL MULTIPROC…MULTIPROC PROC
PUSH BPMOV BP, SPMOV AX, [BP+8]MUL WORD PTR [BP+4]POP BPRET
MULTIPROC ENDP
MULTIPROC(operand1,operand)
![Page 7: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/7.jpg)
Passing parameters by value:
Passing value in STACK:
Address the limitations in terms of number of registers
More complicated because we need indirect addressing to access the stack (use of BP)
![Page 8: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/8.jpg)
Passing parameters by value:
Operand1 DW 10 ; (0AH)
Operand2 DW 2 ; (02H)
PUSH BP ;to save its content
![Page 9: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/9.jpg)
Passing parameters by Reference
• Instead of passing values, we pass the address using register or stack
LEA SI, operand1LEA DI, operand2CALL MULTIPROC
MULTIPROC PROC MOV AX, [SI]MUL [DI]RET
MULTIPROC ENDP
MULTIPROC(&operand1, &operand2)
![Page 10: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/10.jpg)
Passing parameters by Reference
• Instead of passing values, we pass the address using register or stack
PUSH OFFSET operand1
PUSH OFFSET operand2 CALL MULTIPROC
……MULTIPROC PROC
PUSH BPMOV BP, SPMOV BX,
[BP+6]MOV DI,
[BP+4]MOV AX,
[BX]
MUL WORD PTR [DI]
POP BPRET 4
MULTIPROC ENDP
MULTIPROC(&operand1, &operand2)
![Page 11: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/11.jpg)
Video processing
• Use INT instruction to handle inputs and outputs
• INT 10H: screen handling
• INT 21H: for displaying screen output
• Main idea:– Insert a value in AH register which is used to
identify the type of service the interrupt needs to perform
![Page 12: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/12.jpg)
Screen features
• 25 rows (0-24) and 80 columns (0-79)(0,79)(0,0)
(24,0) (24,79)
![Page 13: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/13.jpg)
Screen features
• Cursor location:
Upper left corner: Row: 0, Column 0
Upper right corner: Row: 0, Column 79
Lower left corner: Row: 24, Column 0
Lower right corner: Row: 24, Column 79
Center: Row 12, Column 39
![Page 14: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/14.jpg)
Screen features
Video Display Area:
Text mode: 4KB in BIOS (2K for characters and 2K for attributes)
Pages: 0 to 7
INT 10H: Set cursor (AH= 02H)
INT 10H: Clear & Scroll screen (AH = 06H)
![Page 15: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/15.jpg)
Screen features
Setting cursor:INT 10H function 02H tells BIOS to set the cursor
• Step 1: Determine the row and column that we want to set our cursor at. E.g row = 12, column = 40)
• Step 2: Load 02H to AH. Load page# to BH, Row# to DH, and Column# to DL
• Step 3: Call INT 10H function
![Page 16: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/16.jpg)
Screen features
Example: Set cursor at (12,40)
MOV AH, 02H
MOV BH, 0 ; page# to BH
MOV DH, 12 ; row# to DH
MOV DL, 40 ; column# to DL
INT 10H
![Page 17: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/17.jpg)
Screen features
• Clear & Scrolling screen
INT 10H function 06H tells BIOS to clear or scroll screen– Step 1: Load 06H to AH– Step 2:Determine number of lines to scroll– Step 3:Determine the attributes of the screen (background
and foreground colors). Load them into BH– Step 4: Load the starting row:column to CX– Step 5: Load the ending row:column to DX– Step 6: Call INT 10H
![Page 18: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/18.jpg)
Screen features
• Example: MOV AH,06H ;clear and scroll
MOV AL,00H MOV BH,0F1H ;white background, blue foreground
MOV CX,0000H ;starting row:column
MOV DX,184FH ;ending row:column
INT 10H
![Page 19: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/19.jpg)
Screen features
– Attribute byte in text mode determines the characteristics of each displayed character
71=0111 0001 (White background and Blue foreground)
![Page 20: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/20.jpg)
Screen features
• INT 21H:Display ASCII characters (02H)
Display string (09H or 40H)
Get input from keyboard (0AH or 3FH)
![Page 21: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/21.jpg)
Screen features
• Display a character– Step 1: Set AH =02H– Step 2: Load the character to DL– Step 3: Call INT 21H to display the character
![Page 22: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/22.jpg)
Screen features
Example:MOV AH, 02H
MOV DL, ‘C’
INT 21H
![Page 23: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/23.jpg)
Practice/Lab 1
1. Open your browser and open this page:
C:\emu8086\documentation\8086_instruction_set.html
And
C:\emu8086\documentation\8086_and_dos_interrupts.html
2. Open your emu8086 software
3. Cut and paste (or type) the following code (as shown in the next page) and save as output.asm
![Page 24: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/24.jpg)
Practice/Lab 1page 60,132TITLE VideoPractice ClearScreen and Output; ---------------------------------------------STACK SEGMENT PARA STACK 'Stack'
DW 32 DUP(0)STACK ENDS; ----------------------------------------------DATASEG SEGMENT PARA 'Data'; Please insert your data declaration here DATASEG ENDS
CODESEG SEGMENT PARA 'Code'
MAIN PROC FAR MOV AX, dataseg MOV DS, AX ; Please enter your code here MOV AX,4C00H ;exit procedure
INT 21HMAIN ENDP
CODESEG ENDSEND MAIN ;End of program
![Page 25: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/25.jpg)
Practice/Lab 1
4. Modify your code so that it performs the following tasks:
Clear screen
Set cursor to the middle of screen
Display the characters (5) in:
CHAR_TBL DB ‘A’ ,’B’, ’C’, ’D’, ’E’
on the middle of the screen
5. Compile and run your code
![Page 26: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/26.jpg)
Answer to Fibonaci practice
FIBONACI PROC NEAR MOV AX,00
MOV BX,01MOV CX,7 ;7 repetitionsMOV DX,00
L10:ADD AX,BX ;Number is in AXMOV BX,DXMOV DX,AXLOOP L10
RETFIBONACI ENDP
![Page 27: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/27.jpg)
INT 21H displaying screen
• INT 21H, function 09H: display a string which is followed by the dollar($) sign– Step 1: Declare a string, which is followed by
dollar sign– Step 2: Set DS to the beginning address of
data segment. And set AH =09H– Step 3: Load offset of the string to DX– Step 4: Call INT 21H
![Page 28: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/28.jpg)
INT 21H displaying screen
• Example:
message db "Hello everybody! I am learning assembly language!","$“
mov ah,09 ; move 9 to AH
lea dx,message
int 21h
![Page 29: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/29.jpg)
INT 21H displaying screen
• INT 21H, function 40H– Use file handles to process display
operations– Procedure:
• Step 1: Set AH=40H• Step 2: Set BX= file handle (of screen)• Step 3: Set CX = number of characters to display• Step 4: Set DX = Offset Address of display area • Step 5: Call INT 21H
![Page 30: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/30.jpg)
INT 21H displaying screen
– File handle: is a number used to refer to a specific device
Handle Device
00 Input (keyboard)
01 Output (screen)
04 Printer
![Page 31: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/31.jpg)
INT 21H displaying screen
– Example:
message db ‘Hello’, 0DH, 0AH
MOV AH,40H ; move 40H to AH
MOV BX, 01
MOV CX, 7
lea dx,message
int 21h
![Page 32: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/32.jpg)
INT 21H for keyboards
• INT 21H function:– 0AH: input from keyboard– 3FH: input from keyboard
![Page 33: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/33.jpg)
INT 21H for keyboards
• INT 21H function 0AH
– Step 1:Set AH = 0AH– Step 2: Load offset address of the parameter
list into DX– Step 3: Call INT 21H
![Page 34: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/34.jpg)
INT 21H for keyboards
• Parameter list is a structure which consists of:
<Name of parameter list> LABEL BYTE
<Variable represents maximum number of input characters> DB <value>
<Variable represents actual number of input characters> DB <value>
<Variable to contain typed characters>
![Page 35: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/35.jpg)
INT 21H for keyboards
• Example:Para_list label byte
max_len DB 100act_len DB ?input DB 100 DUP(‘ ‘)
MOV AH, 0AHLEA DX, Para_listINT 21H
![Page 36: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/36.jpg)
INT 21H for keyboards
• Example:
• Assume the input string is ‘CS271’
act_len = 5
input: CS271$ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘
MOV BH, 00
MOV BL, ACT_LEN
MOV INPUT[BX],’$’
CS271$
![Page 37: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/37.jpg)
• This uses file handles to request keyboard input– Step 1: Set AH = 3FH– Step 2: Set BX=00H (file handle 00
represents keyboard)– Step 3: Set CX = maximum number of
character to accept– Step 4: Load offset address of area for
entering characters to DX
INT 21H function 3F
![Page 38: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/38.jpg)
• Example:input DB 100 DUP(‘ ‘)
MOV AH, 3FH
MOV BX, 00H
MOV CX, 100
LEA DX, input
INT 21H
INT 21H function 3F
![Page 39: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/39.jpg)
• Example: (not available in EMU8086)input DB 100 DUP(‘ ‘)
MOV AH, 3FH
MOV BX, 00H
MOV CX, 100
LEA DX, input
INT 21H
INT 21H function 3F
![Page 40: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/40.jpg)
Practice/Lab 2
1. Open your browser and open this page:
C:\emu8086\documentation\8086_instruction_set.html
And
C:\emu8086\documentation\8086_and_dos_interrupts.html
2. Open your emu8086 software
3. Cut and paste (or type) the following code (as shown in the next page) and save as input.asm
![Page 41: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/41.jpg)
Practice/Labpage 60,132TITLE InputPRactice Input; ---------------------------------------------STACK SEGMENT PARA STACK 'Stack'
DW 32 DUP(0)STACK ENDS; ----------------------------------------------DATASEG SEGMENT PARA 'Data'; Please insert your data declaration here DATASEG ENDS
CODESEG SEGMENT PARA 'Code'
MAIN PROC FAR MOV AX, dataseg MOV DS, AX ; Please enter your code here MOV AX,4C00H ;exit procedure
INT 21HMAIN ENDP
CODESEG ENDSEND MAIN ;End of program
![Page 42: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/42.jpg)
Practice/Lab
4. Modify your code so that it performs the following tasks:- Read a string (length <= 50) from keyboard. You need to insert the following into your data declarationPara_list label byte
max_len DB <put the maxlen for this exercise>act_len DB ?input DB <replace with the maxlen for this exercise> DUP(‘ ‘)
- Display the string on the screen at (12,40)5. Compile and run your code
![Page 43: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/43.jpg)
Project 2
![Page 44: More about procedures and Video Processing](https://reader035.fdocuments.us/reader035/viewer/2022062807/568151e0550346895dc01a3a/html5/thumbnails/44.jpg)
Adavanced Screen Processing
• Explore INT 10H to:– Set video mode– Display attribute or character at cursor
position