CS2422 Assembly Language - PowerPoint PPT Presentation

About This Presentation
Title:

CS2422 Assembly Language

Description:

Setting up Visual C 6.0 to compile and link assembly code with C or ... x, y, blockX, blockY) Example Code. Mosaic_C_version() in main.c shows the algorithm. ... – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 48
Provided by: csNth
Category:

less

Transcript and Presenter's Notes

Title: CS2422 Assembly Language


1
CS2422 Assembly Language System Programming
  • November 21, 2006

2
Todays Topics (1/2)
  • Assignment 3
  • Windows (graphics mode) programming.
  • Linking to an assembly procedure.
  • Setting up Visual C 2005 Express.

3
References
  • Setting up Platform SDK see the course webpage.
  • Setting up Visual C 6.0 to compile and link
    assembly code with C or C code included in the
    download file
  • theForgers Win32 API Tutorial http//winprog.org/
    tutorial. (Read at least the first two articles.)

4
Demo
  • The program creates a mosaic effect on your
    windows desktop.
  • You need to set your display to use 24-bit or
    32-bit colors.
  • Using ML.exe /Zi option to enable debugging
    directly within your assembly code at Visual C.
    (Already done for you if you use VC 2005
    Express.)

5
Assembly Code to Be Written
  • Mosaic(img, resX, resY,
  • x, y, blockX, blockY)

6
Example Code
  • Mosaic_C_version() in main.c shows the algorithm.
  • To run the assembly code, remember to comment
    out
  • define MOSAIC_C_VERSION
  • The Mosaic procedure in mosaic.asm gives an
    example of accessing parameters and local
    variables.

7
Img a 2D Array
  • The img is conceptually 2D, but stored as if it
    is a 1D array.
  • A pixel at location (x, y) is stored at
  • imgx y xRes
  • Each pixel stores the Red, Green, Blue components
    of a color in 4 bytes
  • struct
  • BYTE rgbBlue
  • BYTE rgbGreen
  • BYTE rgbRed
  • BYTE rgbReserved
  • RGBQUAD

8
Basic Structure of a Windows Program
  • WinMain procedure.
  • WinProc procedure.
  • Section 11.2 explains the above in assembly. The
    C version in main.c might be easier to read.
  • An excellent introductory material can be found
    at http//winprog.org/tutorial. (Read at least
    the first two articles.)

9
WinMain Procedure
  • Every Windows application needs a startup
    procedure, usually named WinMain, which is
    responsible for the following tasks
  • Get a handle to the current program
  • Load the programs icon and mouse cursor
  • Register the programs main window class and
    identify the procedure that will process event
    messages for the window
  • Create the main window
  • Show and update the main window
  • Begin a loop that receives and dispatches messages

10
WinProc Procedure
  • WinProc receives and processes all event messages
    relating to a window
  • Some events are initiated by clicking and
    dragging the mouse, pressing keyboard keys, and
    so on
  • WinProc decodes each message, carries out
    application-oriented tasks related to the message

WinProc PROC, hWndDWORD, handle to the
window localMsgDWORD, message
ID wParamDWORD, parameter 1
(varies) lParamDWORD parameter 2 (varies)
(Contents of wParam and lParam vary, depending on
the message.)
11
What Will You Learn from This Assignment?
  • Linking C and Assembly.
  • The first step in Windows programming.
  • Array processing.
  • Implementation of nontrivial loops.

12
Todays Topic (2/2)
  • Chapter 1 of Becks System Software book.

13
Study Guide
  • 1.1 Introduction
  • 1.2 System Software and Machine Architecture
  • 1.3 The Simplified Instructional Computer (SIC)
  • SIC Machine Architecture
  • SIC/XE Machine Architecture
  • SIC Programming Examples

14
Introduction
  • Definition of System software
  • System software consists of a variety of programs
    that support the operation of a computer
  • E.g. of system software
  • Text editor, compiler, loader or linker,
    debugger, macro processors, operating system,
    database management systems, software engineering
    tools, .

15
System Software and Machine Architecture (1/2)
  • One characteristic in which most system software
    differs from application software is machine
    dependency
  • System programs are intended to support the
    operation and use of the computer itself, rather
    than any particular application.

16
System Software and Machine Architecture (2/2)
  • Because most system software is
    machine-dependent, we must include real machines
    and real pieces of software in our study.
  • Simplified Instructional Computer (SIC)
  • SIC is a hypothetical computer that has been
    carefully designed to include the hardware
    features most often found on real machines, while
    avoiding unusual or irrelevant complexities

17
The Simplified Instructional Computer (SIC)
  • Like many other products, SIC comes in two
    versions
  • The standard model
  • An XE version
  • extra equipments, extra expensive
  • The two versions has been designed to be upward
    compatible

18
SIC Machine Architecture (1/7)
  • Memory
  • Memory consists of 8-bit bytes
  • Any 3 consecutive bytes form a word (24 bits)
  • Total of 32768 (215) bytes in the computer memory

19
SIC Machine Architecture (2/7)
  • Registers
  • Five registers
  • Each register is 24 bits in length

20
SIC Machine Architecture (3/7)
  • Data Formats
  • Integers are stored as 24-bit binary number
  • 2s complement representation for negative values
  • Characters are stored using 8-bit ASCII codes
  • No floating-point hardware on the standard
    version of SIC

21
SIC Machine Architecture (4/7)
  • Instruction Formats
  • Standard version of SIC

The flag bit x is used to indicate
indexed-addressing mode
22
SIC Machine Architecture (5/7)
  • Addressing Modes
  • There are two addressing modes available
  • Indicated by x bit in the instruction

(X) the contents of register X
23
SIC Machine Architecture (6/7)
  • Instruction Set
  • Load and store registers
  • LDA, LDX, STA, STX, etc.
  • Integer arithmetic operations
  • ADD, SUB, MUL, DIV
  • All arithmetic operations involve register A and
    a word in memory, with the result being left in A
  • COMP
  • Conditional jump instructions
  • JLT, JEQ, JGT
  • Subroutine linkage
  • JSUB, RSUB
  • See appendix A, Page 495

24
SIC Machine Architecture (7/7)
  • Input and Output
  • Input and output are performed by transferring 1
    byte at a time to or from the rightmost 8 bits of
    register A
  • Test Device TD instruction
  • Read Data (RD)
  • Write Data (WD)

25
SIC Programming Examples (Fig 1.2a)
LDA FIVE STA ALPHA LDCH CHARZ STCH C1 . . .
ALPHA RESW 1 one-word variable FIVE WORD 5 one-wo
rd constant CHARZ BYTE CZ one-byte
constant C1 RESB 1 one-byte variable
26
SIC Programming Example (Fig 1.3a)
LDA ALPHA ADD INCR SUB ONE STA BETA LDA GAMM
A ADD INCR SUB ONE STA DELTA ... ... ONE WORD
1 one-word constant ALPHA RESW 1 one-word
variables BETA RESW 1 GAMMA RESW 1 DELTA RESW 1 IN
CR RESW 1
27
SIC Programming Example (Fig 1.4a)
LDX ZERO initialize index register to
0 MOVECH LDCH STR1,X load char from STR1 to reg
A STCH STR2,X TIX ELEVEN add 1 to index,
compare to 11 JLT MOVECH loop if less
than . . . STR1 BYTE CTEST
STRING STR2 RESB 11 ZERO WORD 0 ELEVEN WORD 11
28
SIC Programming Example (Fig 1.5a)
LDA ZERO initialize index value to
0 STA INDEX ADDLP LDX INDEX load index value to
reg X LDA ALPHA,X load word from ALPHA into reg
A ADD BETA,X STA GAMMA,X store the result in a
word in GAMMA LDA INDEX ADD THREE add 3 to
index value STA INDEX COMP K300 compare new
index value to 300 JLT ADDLP loop if less than
300 ... ... INDEX RESW 1 ALPHA RESW 100 array
variables100 words each BETA RESW 100 GAMMA RESW
100 ZERO WORD 0 one-word constants THREE WORD 3 K3
00 WORD 300
29
SIC Programming Example (Fig 1.6)
INLOOP TD INDEV test input device JEQ INLOOP loop
until device is ready RD INDEV read one byte
into register A STCH DATA . . OUTLP TD OUTDEV t
est output device JEQ OUTLP loop until device is
ready LDCH DATA WD OUTDEV write one byte to
output device . . INDEV BYTE XF1 input device
number OUTDEV BYTE X05 output device
number DATA RESB 1
30
SIC/XE Machine Architecture (1/13)
  • Memory
  • Maximum memory available on a SIC/XE system is 1
    megabyte (220 bytes)

31
SIC/XE Machine Architecture (2/13)
  • Registers
  • Additional registers are provided by SIC/XE

32
SIC/XE Machine Architecture (3/13)
  • There is a 48-bit floating-point data type

F2(e-1024)
33
SIC/XE Machine Architecture (4/13)
  • Instruction Formats

Format 1 (1 byte)
Format 2 (2 bytes)
Format 3 (3 bytes)
Format 4 (4 bytes)
Formats 1 and 2 are instructions that do not
reference memory at all
34
SIC/XE Machine Architecture (5/13)
  • Addressing modes
  • Base relative (n1, i1, b1, p0)
  • Program-counter relative (n1, i1, b0, p1)
  • Direct (n1, i1, b0, p0)
  • Immediate (n0, i1, x0)
  • Indirect (n1, i0, x0)
  • Indexing (both n i 0 or 1, x1)
  • Extended (e1)

35
SIC/XE Machine Architecture (6/13)
  • Base Relative Addressing Mode

n1, i1, b1, p0, TA(B)disp (0?disp
?4095)
  • Program-Counter Relative Addressing Mode

n1, i1, b0, p1, TA(PC)disp (-2048?disp
?2047)
36
SIC/XE Machine Architecture (7/13)
  • Direct Addressing Mode

n1, i1, b0, p0, TAdisp (0?disp ?4095)
n1, i1, b0, p0, TA(X)disp (with index
addressing mode)
37
SIC/XE Machine Architecture (8/13)
  • Immediate Addressing Mode

n0, i1, x0, operanddisp
  • Indirect Addressing Mode

n1, i0, x0, TA(disp)
38
SIC/XE Machine Architecture (9/13)
  • Simple Addressing Mode

i0, n0, TAbpedisp (SIC standard)
i1, n1, TAdisp (SIC/XE standard)
39
SIC/XE Machine Architecture (10/13)
  • Addressing Modes Summary (p.499)

40
SIC/XE Machine Architecture (11/13)
  • Instruction Format

41
SIC/XE Machine Architecture (12/13)
  • Instruction Set
  • Instructions to load and store the new registers
  • LDB, STB, etc.
  • Floating-point arithmetic operations
  • ADDF, SUBF, MULF, DIVF
  • Register move instruction
  • RMO
  • Register-to-register arithmetic operations
  • ADDR, SUBR, MULR, DIVR
  • Supervisor call instruction
  • SVC

42
SIC/XE Machine Architecture (13/13)
  • Input and Output
  • There are I/O channels that can be used to
    perform input and output while the CPU is
    executing other instructions

43
SIC/XE Programming Examples (Fig 1.2b)
SIC version
SIC/XE version
LDA 5 STA ALPHA LDCH 90 STCH C1 . . . ALP
HA RESW 1 C1 RESB 1
LDA FIVE STA ALPHA LDCH CHARZ STCH C1 . . .
ALPHA RESW 1 FIVE WORD 5 CHARZ BYTE CZ C1 RE
SB 1
44
SIC/XE Programming Example (Fig 1.3b)
LDS INCR LDA ALPHA ADDR S,A SUB 1 STA BETA
LDA GAMMA ADDR S,A SUB 1 STA DELTA ... ...
ALPHA RESW 1 one-word variables BETA RESW 1 GAMMA
RESW 1 DELTA RESW 1 INCR RESW 1
45
SIC/XE Programming Example (Fig 1.4b)
LDT 11 initialize register T to
11 LDX 0 initialize index register to
0 MOVECH LDCH STR1,X load char from STR1 to reg
A STCH STR2,X store char into STR2 TIXR T add 1
to index, compare to 11 JLT MOVECH loop if less
than 11 . . . STR1 BYTE CTEST
STRING STR2 RESB 11
46
SIC/XE Programming Example (Fig 1.5b)
LDS 3 LDT 300 LDX 0 ADDLP LDA ALPHA,X
load from ALPHA to reg A ADD BETA,X STA GAMMA,X
store in a word in GAMMA ADDR S,X add 3 to
index value COMPR X,T compare to
300 JLT ADDLP loop if less than
300 ... ... ALPHA RESW 100 array variables100
words each BETA RESW 100 GAMMA RESW 100
47
SIC/XE Programming Example (Fig 1.7b)
Write a Comment
User Comments (0)
About PowerShow.com