Top Banner
More about procedures and Video Processing
44

More about procedures and Video Processing

Jan 23, 2016

Download

Documents

KHALIL KHALIL

More about procedures and Video Processing. Lesson plan. Review existing concepts More about procedures and boolean expression Video processing. Review. Procedure: name PROC ; the code of the procedure ... RET name ENDP Calling a procedure: CALL - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: More about procedures and Video Processing

More about proceduresand Video Processing

Page 2: More about procedures and Video Processing

Lesson plan

• Review existing concepts

• More about procedures and boolean expression

• Video processing

Page 3: More about procedures and Video Processing

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Screen features

Example:MOV AH, 02H

MOV DL, ‘C’

INT 21H

Page 23: More about procedures and Video Processing

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

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

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

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

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

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

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

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

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

INT 21H for keyboards

• INT 21H function:– 0AH: input from keyboard– 3FH: input from keyboard

Page 33: More about procedures and Video Processing

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

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

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

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

• 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

• 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

• 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

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

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

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

Project 2

Page 44: More about procedures and Video Processing

Adavanced Screen Processing

• Explore INT 10H to:– Set video mode– Display attribute or character at cursor

position