Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Memory Address • • • • • • • • • Segment-offset address Base location (segment) + logical location (offset) Example: For 32-bits segment-offset address, 08F1:0100 represents a 20-bits absolute address 09010 0 8 F 1 (0) 0000 1000 1111 0001 0000 + 0 1 0 0 0 9 0 1 0 Floating-Point Unit • 80-bit Registers 48-bit Pointer Register ST(0) FPU Instruction Pointer ST(1) FPU Data Pointer Tag Register Control Register Status Register 16-bit Control Register ST(7) Opcode Register DUP Operator • db 20 dup(0) ; 20 bytes, all equal to zero • db 20 dup (?) ; 20 un-initialized bytes • db 4 dup(“ABC”) ; 12 bytes: “ABCABCABCABC” • db 4096 dup(0); Assembly Language • Basic elements • 1. Constant and expression • 3 • 3.5 • - 3.5 • 26. E+07 Integer Constants • • • • • • • • 26 1Ah 1101b 36q 2BH 43Q 36D 48d decimal hexadecimal binary octal hexadecimal octal decimal decimal Constant Expression, Symbolic constants and Character or String Constants • • • • • • • Constant expression 5 26.5 4*20 -3*4/6 -2.301E+04 A symbolic constant rows = 5 columns = 10 Number = rows * columns Character or string constant ‘ABC’ ‘X’ “ This is a test” “The dog is black” Assembly Language Statement • Consists of : • 1. A name, an instruction mnemonic, operands, and a comment. It has the following form: • [name] [mnemonic] [operands] [;comment] • Example: • call sub1 ; transfer of control Names • A name identifies a label, variable, symbolic, or a keyword. • What can be used as a name: • 1. A… Z a… z • 2. 0-9 • 3. ? • 4. _ Underscore • 5. @ • 6. $ • Length limit----maximum of 247 characters (in MASM) Variables and Labels • 1. A variable is a location in a program’s data area that has been assigned a name. • Such as: count1 db 50 ; • message db “ Hello world!”, odh, 0ah • 2. Label. If a name appears in the code area of a program, it is called a label. • Example: • LabelA: mov ax, 0 • mov bx, ffh • Hello World Program • • • • • • • • • • • • • • • • • title Hello World Program (hello.asm) ; This program displays "Hello, world!" .model small .stack 100h .data message db "Hello, world!",0dh,0ah,'$' .code main proc mov ax,@data mov ds,ax mov ah,9 mov dx,offset message int 21h mov ax,4C00h int 21h main endp end main Analyze the Program • • • • • • • • • • .model small ----specify the program’s memory model For that model we can have: Tiny--- code + data less than 64k Samll--- code <=64k, data ,<=64k One code segment and one data segment Medium---Data <=64k, code any size. Multiple code segment, one data segment Compact---Code <= 64k, data any size. Multiple data segment, one code segment Large---Code >64k, data >64k both multiple segment Huge---Same as the large model, except that individual variables such as arrays may be large than 64k Flat--- No segments. 32-bits addresses are used for both code and data. ***Protected mode only Standard Assembler Directives • • • • • • end---end of program assembly endp--- end of procedure page---Set a page format for the listing file proc---Begin procedure title---Title of the listing file .code--- Mark the beginning of the code segment • .data--• .model--• .stack---Set the size of the stack segment Data Allocation Directives • • • • • • DB--------------------1 byte DW-------------------2 DD--------------------4 DF, DP---------------6---define far pointer DQ--------------------8 define Quadword DT--------------------10 define 10 bytes Examples • • • • Char1 db ‘A’ Char2 db “A’ –10 Smallest db –128 Max_unsign db 255 ; ASCII char. ; expression • Myval db ? Only reserve memory, no initializeers • List db 10,20,30,40,50 Characters and Integers are one and the same • • • • • Char db ‘A’ Hex db 41h Dec db 65 Bin db 01000001 Oct db 101q Type mix is allowed • List db 10, 20, 41h, 10011000b • List2 db 0ah, 29h, ‘a’, 22 Strings • Cstring db “Good morning”,0 • Pstring db 12, “Good morning” • Longstring db “This is a long string, that” • db “ clearly is going to take” • db “ several lines to store”,0 Symbolic Constants • Equate directives • They allow constants and literals to be given symbolic names. • 1. Equal-Sign Directive (redefinable) • The syntax is: name = expression • Examples: string = ‘XY’ • count = 500 • minInt = 8000h • To assign a 32 bits integer---.386 is required • .386 • maxLong = 7FFFFFFFh ; maximum 32-bit signed value • minLong = 80000000h ; Minimum 32-bit signed value • “=“ defined symbols can be redefined any number of times. Example of Using Directives • • • • • • • count =5 mov al , count mov dl , al count =10 mov cx , count count = 2000 mov ax, count EQU and TEXTEQU directives • • • • • • • EQU is not redefinable TEXTEQU is redefinable Examples: maxint equ 32767; Numeric float1 equ <3.1416> ; String TEXTEQU syntax: name TEXREQU <text> name TEXTEQU textmacro Intel chip Instructions • 1. MOV---Data transfer instruction • Instruction format: • MOV reg, reg • MOV mem, reg • MOV reg, mem • • • • MOV reg, immed MOV mem, immed MOV mem16, segreg MOV reg16, segreg MOV segreg, immed16 MOV segreg, reg16 Flag bits are not affected by MOV instruction *** Examples • • • • • • • • • .data count db 10 total dw 4126h bigVal dd 12345678h .code mov al, bl mov bl, count mov count, 26 mov bl, 1 Examples—cont… • • • • • • mov dx, cx mov bx, 8FE2h mov total, 1000h mov eax, ebx mov edx, bigVal ; 32-bit memory to reg ***Pay attention the the fact that operands size must match. Otherwise, the assembler will return an error for any size mismatch. Example • .data • count dw 20h ; 20h---here really mean 0020h • .code • mov al, count; error: XCHG Instruction • • • • • XCHG reg, reg xchg ax, bx xchg eax, ebx XCHG reg, mem xchg ax, value1 • XCHG mem, reg • xchg value2, cx Program example • • • • • • • • • • • • • • • • • Title Exchange Two Variables (Exchange.asm) .model small .stack 100h .data Value1 db 0ah Value2 db 14h .code Main proc Mov ax, @data ; initialize DS register Mov ds, ax Mov al, value1 Xchg value2, al Mov value1, al Mov ax, 4c00h Int 21h Main endp End main; Question: Why don’t we use xchg value1, value2? Arithmetic Instructions • • • • • • • • ADD and SUB instructions ADD reg, reg ADD mem, reg ADD reg, mem ADD reg, immed ADD mem, immed ADD accum, immed Flag O D I S Z A P C * * * * * * • SUB has the similar instruction format Examples • Mov ax, 10 • Sub ax, 10 ; AX=0, ZF =1 • Mov bx, 1 • Sub bx, 2 ; BC = FFFF, SF = 1 • Mov ax, 0FFh • Add al, 1 ; AL = 00 , CF = 1 Basic Operand Types • • • • • There are three basic types of operands: 1. Immediate----a constant 2. Register-------one of the CPU’s register 3. Memory---a reference to a mem.Location There are six different types of memory operands: • Direct, direct-offset, register-indirect • Indexed, base-indexed, and base-indexed with displacement Example • mov ax, [si] --- this is called register-indirect • Here si register hold the beginning address for a list of numbers. • The first number in the address will be moved to al and the second number will be moved into ah. Immediate operands, Direct Operands, and Direct-Offset operands • • • • • 1. Immediate operands: Mov al, 10 ; ----a number Mov eax, 12345678h ; ---a 4-byte number Mov dl, ‘X’ ; --- a character Mov ax, (40 *50) ; arithmetic expression Direct Operands • • • • • • • • .data Count db 20 Wordlist dw 1000h, 2000h LongVal dd 11223344h .code Mov al, Count Mov bx, Wordlist +2 Mov edx, LongVal Direct Offset Operands • • • • • • • .data Array db 0ah, 0bh, 0ch, 0dh .code Mov al, array ; 0ah-al Mov bl, array +1 ; 0bh bl Mov cl, array + 2 ; 0ch cl Mov dl, array +3 ; 0dh dl Another Example IA – 32 Processor Architecture • IA – 32 processor have three basic mode of operations: • 1. Protected Mode • 2. Real-address Mode • 3. System Management Mode Protected Mode • IA-32 processors have three basic modes of operation: Protected mode, Real-address mode and System Management mode. In addition, the Virtual-8086 mode is a special case of Protected mode. 1. Protected Mode • Protected mode is the native state of the processor, in which all instructions and features are available. • Programs are given separate memory areas (called segment), and the processor detects any attempt by a program to reference memory outside its assigned segment. • Each program can address up to 4GB memory. Virtual – 8086 Mode • While in Protected mode, the processor can directly execute Real-address mode software such as MS-DOS programs in a safe multitasking environment. • In other word, even if an MS-DOS program crashes, it will not affect other program running at the same time. Real-address mode • It offers us a few more features, such as the ability to switch into other two modes. • Only 1 MB of memory can be addressed: • 00000h-FFFFFh • The processor can only run one program a time. System Management Mode • SSM-mode • It provides an operating system with a mechanism for implementing such functions as power management and system security. • These functions are usually implemented by computer manufacturers who want to customize the processor for a particular system setup. Homework6 • • • • • • Write and run an assembly program under debug that will: 1) Add numbers from 1 to 1000. Note: you would need these following instructions: A) jz – jump if zero B) mov cx, number of times (1000 in Hex.) C) create the labels that tells program where to go when certain conditions are met. • Due: 11/07 Turn in: Your code and the running result. Note to the debug usage • You can assemble your assembly language program with other software and load the code into the memory by using the debug as follows: • Under debug: (Click start, click Run, type cmd and type enter) • N a:hello.exe • L • This will load your code from a: to the memory address beginning at CS:0100.