1 / 8

Writing an Assembly-language program

Writing an Assembly-language program. MIPS assembly language using MARS: MIPS A ssembler and R untime S imulator. The MARS Assembler. …is a modern, “single pass” Assembler Converts mnemonics to machine instructions ( opcodes + operands)

mick
Download Presentation

Writing an Assembly-language program

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. Writing an Assembly-language program MIPS assembly language using MARS: MIPS Assembler and Runtime Simulator CS-2710 Dr. Mark L. Hornick

  2. The MARS Assembler …is a modern, “single pass” Assembler • Converts mnemonics to machine instructions (opcodes + operands) • Ex: add $t0, $s1, $s2 is assembled to 0x02324020 • Case on instructions is irrelevant; alternately: ADD $t0, $s1, $s2 • Case on registers matters: $T0 is not permitted • Reports syntactical errors • Ex: add $t0, $s1 (e.g. too few operands) • Can generate files containing machine code in a format that can be downloaded to real hardware CS-2710 Dr. Mark L. Hornick

  3. MARS also implements a Debugger/Simulator • Simulates execution of the compiled program • Start, stop, single-step • Backwards step • Breakpoints • Can view contents of memory, registers • Tracks cycles required to execute • And lots more – see the help documentation CS-2710 Dr. Mark L. Hornick

  4. Number representation in MIPS assembly language • All values are decimal unless notated otherwise • addi $t0, $s1, 100# decimal 100 (default) • addi $t0, $s1, 0144# octal 100 (note leading 0) • addi $t0, $s1, 0x64# hex 100 (note leading 0x) • Radix prefixes • 0 – octal • 0x, 0X – hexadecimal • 0x002a is equivalent to 0x2A CS-2710 Dr. Mark L. Hornick

  5. Labels can be used in place of actual addresses • Every input line can be preceded by a label • an alphanumeric string terminated by a colon (:) • Labels are used as targets for jump and branch instructions • The assembler automatically figures out what address to assign to a label CS-2710 Dr. Mark L. Hornick

  6. Every input line can be preceded by a label Example: Start:addi $t0, $s1, 100 # t0 = s1 + 100 Here: j Here# repeat forever • Labels are alphanumeric strings terminated by a colon(:) • Labels are given the value of the location in memory where the following instruction will be placed • Labels can be used as jump and branch targets in program instructions • The label Start:is assigned the value of the location of the addi instruction (0x00400000); Here: is assigned 0x0040001c, the location of the j instruction • The assembler automatically figures out what address to assign to a label CS-2710 Dr. Mark L. Hornick

  7. Directives are used within an assembly language program to control certain aspects of the operation of the Assembler Directives begin with a period (.) • Directive often take operands, but not always • Ex: .text • Ex: .byte 1,2,3,4 • Case does not matter • .TEXT is equivalent Directives are not instructions – they are not translated to machine instructions • They only “direct” the Assembler how to interpret subsequent assembly language instructions • All directives are documented in the online help of MARS Directives may appear anywhere in an assembly program CS-2710 Dr. Mark L. Hornick

  8. Some assembler directives are used to define where to place things in memory: .text [loc] • Alerts the Assembler that subsequent assembly statements are intended to generate instructions for the Text Segment of main memory • ie, where executable machine code is placed • Location set by MARS memory configuration settings • If absent, a default value will be used by the Assembler .data [loc] • Directs the Assembler where to begin placing subsequent data in memory • Example:.data.byte 1,2,3,4 directs the subsequent data bytes 1,2,3,4,5 to be placed in the data segment of main memory CS-2710 Dr. Mark L. Hornick

More Related