teaching machines

CS 330 Lecture 15 – Assembly Cont’d

February 27, 2015 by . Filed under cs330, lectures, spring 2015.

Agenda

TODO

Line at a Time

  1: .section .data
  2: out_message:
  3:   .asciz "What's the difference between %d and %d? %d.\n"
  4: prompt_message:
  5:   .asciz "Enter two numbers: "
  6: in_format:
  7:   .asciz "%d %d"
  8: a:
  9:   .long 20
 10: b:
 11:   .long 4
 12: 
 13: .section .text
 14: .globl main
 15: 
 16: main:
 17:   pushl $prompt_message
 18:   call printf
 19:   addl $4, %esp
 20: 
 21:   pushl $b
 22:   pushl $a
 23:   pushl $in_format
 24:   call scanf
 25:   addl $12, %esp
 26: 
 27:   movl a, %eax
 28:   subl b, %eax
 29: 
 30:   pushl %eax
 31:   pushl b
 32:   pushl a
 33:   pushl $out_message
 34:   call printf
 35:   addl $16, %esp
 36: 
 37:   pushl $0
 38:   call exit
  1: .section .data
  2: message:
  3:   .ascii "One past %d is %d.\0"
  4: 
  5: .section .bss
  6:   .lcomm a, 4
  7:   .lcomm b, 4
  8: 
  9: .section .text
 10: .globl main
 11: 
 12: main:
 13:   movl $12, %eax
 14:   movl %eax, a
 15:   movl %eax, b
 16:   incl b
 17: 
 18:   pushl b
 19:   pushl a
 20:   pushl $message
 21:   call printf
 22:   addl $12, %esp
 23: 
 24:   pushl $0
 25:   call exit

Code

Haiku

on the origin of magic
Inside magic things
You’ll find ordinary parts
Working together