Difference between revisions of "CSC231 Mini Lab 1 Solution and Discussion"

From dftwiki3
Jump to: navigation, search
(Solution 2)
Line 6: Line 6:
 
<source lang="asm">
 
<source lang="asm">
  
;;; minilab1.asm
+
;;; minilab1_v1.asm
 
;;; D. Thiebaut
 
;;; D. Thiebaut
 
;;; prints this string on the screen:
 
;;; prints this string on the screen:
Line 45: Line 45:
 
<source lang="asm">
 
<source lang="asm">
  
;;; minilab1_v1.asm
+
;;; minilab1_v2.asm
 
;;; D. Thiebaut
 
;;; D. Thiebaut
 
;;; prints this string on the screen:
 
;;; prints this string on the screen:
Line 93: Line 93:
 
* Generate the listing of the assembly:
 
* Generate the listing of the assembly:
  
       nasm -f elf -F stabs minilab1_v1
+
       nasm -f elf -F stabs '''-l minilab1_v1.lst'''  minilab1_v1.asm            ''(that's a minus ell option in the command)''
 +
   
 +
      ls -l minilab1_v1.*
 +
 +
* Look at the list
 +
 
 +
      -rwx------. 1 231a 231a 1079 Sep 12 09:18 minilab1_v1*
 +
      -rw-------. 1 231a 231a  606 Sep 12 09:18 minilab1_v1.asm
 +
      -rw-------. 1 231a 231a 2398 Sep 12 09:47 '''minilab1_v1.lst'''
 +
      -rw-------. 1 231a 231a 1168 Sep 12 09:47 minilab1_v1.o
 +
 
 +
* Look at the listing generated
 +
<br />
 +
 
 +
<source lang="asm">
 +
    1                                  ;;; minilab1.asm
 +
    2                                  ;;; D. Thiebaut
 +
    3                                  ;;; prints this string on the screen:
 +
    4                                  ;;;
 +
    5                                  ;;; *********************************
 +
    6                                  ;;;    * Welcome to CSC231            *
 +
    7                                  ;;;    * Home of the Assembly Language *
 +
    8                                  ;;;    *********************************
 +
    9                                 
 +
    10                                 
 +
    11                                  section .data
 +
    12                                 
 +
    13 00000000 2A2A2A2A2A2A2A2A2A-    msg db "*********************************", 10
 +
    14 00000009 2A2A2A2A2A2A2A2A2A-
 +
    15 00000012 2A2A2A2A2A2A2A2A2A-
 +
    16 0000001B 2A2A2A2A2A2A0A   
 +
    17 00000022 2A2057656C636F6D65-    db "* Welcome to CSC231            *", 10
 +
    18 0000002B 20746F204353433233-
 +
    19 00000034 312020202020202020-
 +
    20 0000003D 20202020202A0A   
 +
    21 00000044 2A20486F6D65206F66-    db "* Home of the Assembly Language *", 10
 +
    22 0000004D 207468652041737365-
 +
    23 00000056 6D626C79204C616E67-
 +
    24 0000005F 75616765202A0A   
 +
    25 00000066 2A2A2A2A2A2A2A2A2A-    db "*********************************", 10, 10
 +
    26 0000006F 2A2A2A2A2A2A2A2A2A-
 +
    27 00000078 2A2A2A2A2A2A2A2A2A-
 +
    28 00000081 2A2A2A2A2A2A0A0A 
 +
    29                                 
 +
    30                                  msgLen equ $-msg
 +
    31                                 
 +
    32                                  section .text
 +
    33                                  global _start
 +
    34                                  _start:
 +
    35 00000000 B804000000              mov eax,4
 +
    36 00000005 BB01000000              mov ebx,1
 +
    37 0000000A B9[00000000]            mov ecx,msg
 +
    38 0000000F BA89000000              mov edx,msgLen
 +
    39 00000014 CD80                    int 0x80
 +
    40                                 
 +
    41                                  ;;; exit
 +
    42 00000016 B801000000              mov eax,1
 +
    43 0000001B BB00000000              mov ebx,0
 +
    44 00000020 CD80                    int 0x80
 +
    45                                 
 +
    46                                 
 +
 
 +
 
 +
</source>
 
<br />
 
<br />
  

Revision as of 08:47, 12 September 2012

--D. Thiebaut 09:38, 12 September 2012 (EDT)


Solution 1


;;; minilab1_v1.asm
;;; D. Thiebaut
;;; prints this string on the screen:
;;;
;;; 	*********************************
;;;     * Welcome to CSC231             *
;;;     * Home of the Assembly Language *
;;;     *********************************


	section	.data

msg	db	"*********************************", 10
	db	"* Welcome to CSC231             *", 10
	db	"* Home of the Assembly Language *", 10	
	db	"*********************************", 10, 10
	
msgLen	equ	$-msg

	section	.text
	global	_start
_start:
	mov	eax,4
	mov	ebx,1
	mov	ecx,msg
	mov	edx,msgLen
	int	0x80

;;; exit
	mov	eax,1
	mov	ebx,0
	int	0x80


Solution 2


;;; minilab1_v2.asm
;;; D. Thiebaut
;;; prints this string on the screen:
;;;
;;; 	*********************************
;;;     * Welcome to CSC231             *
;;;     * Home of the Assembly Language *
;;;     *********************************


	section	.data

msg	db	"*********************************", 10
msgLen1	equ	$-msg	
	db	"* Welcome to CSC231             *", 10
	db	"* Home of the Assembly Language *", 10	
msgLen2	equ	$-msg
	
	section	.text
	global	_start
_start:
	
;;; print first 3 lines
	mov	eax,4
	mov	ebx,1
	mov	ecx,msg
	mov	edx,msgLen2
	int	0x80

;;; print first line back, to close box
	mov	eax,4
	mov	ebx,1
	mov	ecx,msg
	mov	edx,msgLen1
	int	0x80

;;; exit
	mov	eax,1
	mov	ebx,0
	int	0x80



What is the trade-off?

  • Generate the listing of the assembly:
      nasm -f elf -F stabs -l minilab1_v1.lst  minilab1_v1.asm            (that's a minus ell option in the command)
    
      ls -l minilab1_v1.*

  • Look at the list
      -rwx------. 1 231a 231a 1079 Sep 12 09:18 minilab1_v1*
      -rw-------. 1 231a 231a  606 Sep 12 09:18 minilab1_v1.asm
      -rw-------. 1 231a 231a 2398 Sep 12 09:47 minilab1_v1.lst
      -rw-------. 1 231a 231a 1168 Sep 12 09:47 minilab1_v1.o 
  • Look at the listing generated


     1                                  ;;; minilab1.asm
     2                                  ;;; D. Thiebaut
     3                                  ;;; prints this string on the screen:
     4                                  ;;;
     5                                  ;;; 	*********************************
     6                                  ;;;     * Welcome to CSC231             *
     7                                  ;;;     * Home of the Assembly Language *
     8                                  ;;;     *********************************
     9                                  
    10                                  
    11                                  	section	.data
    12                                  
    13 00000000 2A2A2A2A2A2A2A2A2A-     msg	db	"*********************************", 10
    14 00000009 2A2A2A2A2A2A2A2A2A-
    15 00000012 2A2A2A2A2A2A2A2A2A-
    16 0000001B 2A2A2A2A2A2A0A     
    17 00000022 2A2057656C636F6D65-     	db	"* Welcome to CSC231             *", 10
    18 0000002B 20746F204353433233-
    19 00000034 312020202020202020-
    20 0000003D 20202020202A0A     
    21 00000044 2A20486F6D65206F66-     	db	"* Home of the Assembly Language *", 10	
    22 0000004D 207468652041737365-
    23 00000056 6D626C79204C616E67-
    24 0000005F 75616765202A0A     
    25 00000066 2A2A2A2A2A2A2A2A2A-     	db	"*********************************", 10, 10
    26 0000006F 2A2A2A2A2A2A2A2A2A-
    27 00000078 2A2A2A2A2A2A2A2A2A-
    28 00000081 2A2A2A2A2A2A0A0A   
    29                                  	
    30                                  msgLen	equ	$-msg
    31                                  
    32                                  	section	.text
    33                                  	global	_start
    34                                  _start:
    35 00000000 B804000000              	mov	eax,4
    36 00000005 BB01000000              	mov	ebx,1
    37 0000000A B9[00000000]            	mov	ecx,msg
    38 0000000F BA89000000              	mov	edx,msgLen
    39 00000014 CD80                    	int	0x80
    40                                  
    41                                  ;;; exit
    42 00000016 B801000000              	mov	eax,1
    43 0000001B BB00000000              	mov	ebx,0
    44 00000020 CD80                    	int	0x80
    45                                  
    46