more about procedures and video processing

44
More about procedures and Video Processing

Upload: khalil

Post on 23-Jan-2016

36 views

Category:

Documents


0 download

DESCRIPTION

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

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