1 #Program Description:
2 #Author:Jeremy
3 #Creation Date:2012/9/25 10:21
4 #Revisions:
5 #Date: #Modified by:
6
7 #寫一個組合語言程式,輸一整數 n, 印出 其絕對值。
8 .section .data
9 msg: .asciz "請輸入一整數:"
10 n: .int 0
11 ifmt:.asciz "%d"
12 ofmt:.asciz "the abs value is %d"
13 .section .text
14 .globl _main
15 _main:
16 pushl $msg
17 call _printf
18 addl $4, %esp
19
20 pushl $n
21 pushl $ifmt
22 call _scanf # scanf("%d",&n)
23 addl $8, %esp
24
25 cmp $0, n # 數值一定要在前面
26 jge postive # n >= 0 ?
27 movl $0, %eax
28 subl n, %eax # subl 目標欄位必為register
29 pushl %eax
30 pushl $ofmt
31 call _printf
32 addl $4, %esp
33 jmp quit
34 postive:
35 pushl n #printf("%d",n)
36 pushl $ofmt
37 call _printf
38 addl $4, %esp
39 quit:
40 pushl $0
41 call _exit
42