1 / 47

CS2422 Assembly Language & System Programming

CS2422 Assembly Language & System Programming. November 21, 2006. Today’s Topics (1/2). Assignment 3 Windows (graphics mode) programming. Linking to an assembly procedure. Setting up Visual C++ 2005 Express. References. Setting up Platform SDK: see the course webpage.

dacey
Download Presentation

CS2422 Assembly Language & System Programming

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. CS2422 Assembly Language & System Programming November 21, 2006

  2. Today’s 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 • theForger’s 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[] isconceptually 2D, but stored as if it is a 1D array. • A pixel at location (x, y) is stored at img[x + 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 program’s icon and mouse cursor • Register the program’s 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, hWnd:DWORD, ; handle to the window localMsg:DWORD, ; message ID wParam:DWORD, ; parameter 1 (varies) lParam:DWORD ; 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. Today’s Topic (2/2) • Chapter 1 of Beck’s “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 • 2’s 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-word constant CHARZ BYTE C’Z’ 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 GAMMA 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 INCR 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 C’TEST 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 variables—100 words each BETA RESW 100 GAMMA RESW 100 ZERO WORD 0 one-word constants THREE WORD 3 K300 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 test output device JEQ OUTLP loop until device is ready LDCH DATA WD OUTDEV write one byte to output device . . INDEV BYTE X’F1’ input device number OUTDEV BYTE X’05’ 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 F*2(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 (n=1, i=1, b=1, p=0) • Program-counter relative (n=1, i=1, b=0, p=1) • Direct (n=1, i=1, b=0, p=0) • Immediate (n=0, i=1, x=0) • Indirect (n=1, i=0, x=0) • Indexing (both n & i = 0 or 1, x=1) • Extended (e=1)

  35. SIC/XE Machine Architecture (6/13) • Base Relative Addressing Mode n=1, i=1, b=1, p=0, TA=(B)+disp (0disp 4095) • Program-Counter Relative Addressing Mode n=1, i=1, b=0, p=1, TA=(PC)+disp (-2048disp 2047)

  36. SIC/XE Machine Architecture (7/13) • Direct Addressing Mode n=1, i=1, b=0, p=0, TA=disp (0disp 4095) n=1, i=1, b=0, p=0, TA=(X)+disp (with index addressing mode)

  37. SIC/XE Machine Architecture (8/13) • Immediate Addressing Mode n=0, i=1, x=0, operand=disp • Indirect Addressing Mode n=1, i=0, x=0, TA=(disp)

  38. SIC/XE Machine Architecture (9/13) • Simple Addressing Mode i=0, n=0, TA=bpe+disp (SIC standard) i=1, n=1, TA=disp (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 FIVE STA ALPHA LDCH CHARZ STCH C1 . . . ALPHA RESW 1 FIVE WORD 5 CHARZ BYTE C’Z’ C1 RESB 1 LDA #5 STA ALPHA LDCH #90 STCH C1 . . . ALPHA RESW 1 C1 RESB 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 C’TEST 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 variables—100 words each BETA RESW 100 GAMMA RESW 100

  47. SIC/XE Programming Example(Fig 1.7b)

More Related