1 / 22

Riyadh Philanthropic Society For Science Prince Sultan College For Woman

Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization & Assembly Language Lecture 13 Program Structure. Outline. Translation of HHL to assembly language Program Structure

manon
Télécharger la présentation

Riyadh Philanthropic Society For Science Prince Sultan College For Woman

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization & Assembly Language Lecture 13 Program Structure

  2. Outline • Translation of HHL to assembly language • Program Structure • Memory model • Data Segment • Stack Segment • Code Segment • Input and Output Instructions • INT instruction Program Structure

  3. Translation of HHL to Assembly Program Structure • Statement: B = A • Translation: MOV AX, A ; move A into AX MOV B, AX ; and then into B

  4. Program Structure Program Structure • Assembly language programs consists of the following program segments: • Code. • Data. • Stack. • Each program segment is translated into a memory segment by the assembler.

  5. Program Structure – Memory Model Model Description SMALL code in 1 segment data in 1 segment MEDIUM code > 1 segment data in 1 segment COMPACT code in 1 segment data > 1 segment LARGE code > 1 segment data > 1 segment no array larger than 64k bytes HUGE code > 1 segment data > 1 segment arrays may be larger than 64k bytes Program Structure • The size of code and data a program can have is determined by specifying a memory model using the .MODEL directive. • Syntax: .MODEL memory_model

  6. Memory Model (Cont.) Program Structure • The appropriate model is small unless there is a lot of code or data • .Model Directive should come before the segment definitions

  7. Program Structure – Stack Segment Program Structure • The purpose of the stack segment declaration is to set aside a block of memory (the stack area) to store the stack. • The stack area should be big enough to contain the stack at its maximum size. • Syntax: .STACK size ; where size is an optional number that specifies ; the stack area size in bytes. • Example: .STACK 100H ; sets aside 100H bytes for the stack area. ; (reasonable size for most applications). • If size is omitted, 1KB is set aside for the stack area.

  8. Data Segment Program Structure • A program’s data segment contains all the variable definitions. • Constant definitions are often made here as well. (they may be placed elsewhere in the program since no memory allocation is involved). • To declare a data segment, we use the directive .DATA, followed by variable and constant declarations. • Example: .DATA WORD1 DW 2 MSG DB ‘this is a message’ MASK EQU 10010010B

  9. Code Segment Program Structure • The code segment contains a program’s instructions. • Syntax: .CODE name ; where name is an optional name of segment. • There is no need for a name in a SMALL program, However, the assembler will generate an error. • Inside a code segment, instructions are organized as procedures.

  10. Code Segment (Cont.) Program Structure • The simplest procedure definition is: name PROC ; name: is the name of the procedure. ; body of the procedure ; PROC & ENDP: are pseudo-ops that name ENDP ; delineate the procedure • Example of a code segment definition: .CODE MAIN PROC ; main procedure instructions MAIN ENDP ; other procedures go here

  11. Program Structure – General model Program Structure .MODEL SMALL .STACK 100H .DATA ; data definitions go here .CODE MAIN PROC ; instructions go here MAIN ENDP ; other procedures go here END MAIN

  12. Input and Output Instructions Program Structure • There are two categories of I/O service routines • The Basic Input/output System (BIOS) routine • The DOS routines

  13. INT Instruction Program Structure • To invoke the DOS or BIOS routine, the INT (interrupt) instruction is used • Format INT interrupt_number • The interrupt_number is a number that specifies a routine

  14. INT 21h Function number Routine 1single-key input 2 single-character output 9 character string output Program Structure • INT 21h may be used to invoke a large number of DOS functions • A particular function could be requested by placing a function number in AH & invoking INT 21h • Some of the functions are • INT 21h functions expect input values to be in certain registers and return output values in other registers

  15. INT 21h – Function 1 Function 1: Single-Key Input Input: AH = 1 Output: AL = ASCII code if character key is pressed = 0 if non-character key is pressed Program Structure • To invoke the routine, the following instructions should be executed MOV AH, 1 ; input key function INT 21h ; ASCII code in AL

  16. INT 21h – Function 2 Function 2: Display a character or execute a control function Input: AH = 2 DL = ASCII code of the display character Output: AL = ASCII code of the display character Program Structure • To invoke the routine, the following instructions should be executed MOV AH, 2 ; display character function MOV DL, ‘?’ ; character is ‘?’ INT 21h ; display character

  17. INT 21h – Function 2 (Cont.) ASCII code (Hex) Symbol Function 07H BEL beep (sounds a tone) 08H BS backspace 09H HT tab 0AH LF line feed (new line) 0DH CR carriage return (start of current line) Program Structure • Function 2 may be used to perform control functions. • If DL contains the ASCII code of a control character, INT 21h causes the control function to be performed. • The principal control characters are :

  18. LEA Instruction Program Structure • LEA (Load Effective Address) puts a copy of the source offset address into the destination. • Syntax: LEA destination, source Where destination is a general register and source is a memory location • Example: MSG DB 41H, 42H, 43H LEA DX, MSG puts the offset address of the variable MSG into DX

  19. INT 21h – Function 9 Function 9: Display a string Input: AH = 9 DX = offset address of the string The string must end with a ‘$’ character A program containing a data segment should begins with these two instructions (initialize DS) Program Structure • To invoke the routine, the following instructions should be executed MOV AX, @Data MOV DS, AX MOV AH,9 ; display string function LEA DX, MSG ; get message (already defined string) INT 21h ; display string

  20. INT 21h – DOS Function 4CH: Return the Control to DOS Input: AH = 4CH Program Structure • To invoke the routine, the following instructions should be executed MOV AH, 4CH ; DOS exit function INT 21h ; exit to DOS

  21. ECHO Program Program Structure TITLE P1: ECHO PROGRAM .MODEL SMALL .STACK 100H .CODE MAIN PROC ; display prompt MOV AH,2 ; display character function MOV DL,'?' ; character is '?' INT 21H ; display it ; input a character MOV AH,1 ; read character function INT 21H ; character in AL MOV BL,AL ; save it in BL ; go to new line MOV AH,2 ; display character function MOV DL, 0DH ; carriage return INT 21H ; execute carriage return MOV DL, 0AH ; line feed INT 21H ; execute line feed ; display character MOV DL, BL ; retrieve character INT 21H ; and display it ; return to DOS MOV AH, 4CH ; DOS exit function INT 21H ; exit to DOS MAIN ENDP END MAIN

  22. Print String Program TITLE P2: PRINT STRING PROGRAM .MODEL SMALL .STACK 100H .DATA MSG DB 'HELLO!$' .CODE MAIN PROC ; initialize DS MOV AX,@DATA ; get data segment MOV DS,AX ; initialize DS ; display message LEA DX,MSG ; get message MOV AH,9 ; display string function INT 21H ; display message ; return to DOS MOV AH, 4CH ; DOS exit function INT 21H ; exit to DOS MAIN ENDP END MAIN Program Structure

More Related