Difference between revisions of "CSC231 Lab 1 Solutions 2017"

From dftwiki3
Jump to: navigation, search
(Program 4)
(Program 3)
 
Line 94: Line 94:
 
<br />
 
<br />
 
<source lang="asm">
 
<source lang="asm">
;;; helloWorld.asm  
+
;;; lab1_3.asm  
 
;;; D. Thiebaut   
 
;;; D. Thiebaut   
 
;;;           
 
;;;           
Line 100: Line 100:
 
;;;     
 
;;;     
 
;;; To assemble, link, and run:   
 
;;; To assemble, link, and run:   
;;;    nasm -f elf  helloWorld.asm   
+
;;;    nasm -f elf  lab1_3.asm   
;;;    ld -melf_i386 -o helloWorld helloWorld.o  
+
;;;    ld -melf_i386 -o lab1_3 lab1_3.o  
;;;    ./helloWorld        
+
;;;    ./lab1_3        
 
;;;       
 
;;;       
  
Line 132: Line 132:
 
</source>
 
</source>
 
<br />
 
<br />
 +
 
=Program 4=
 
=Program 4=
 
<br />
 
<br />

Latest revision as of 20:19, 1 February 2017

--D. Thiebaut (talk) 20:18, 1 February 2017 (EST)


Program 1


;;; lab1 problem 1
;;; D. Thiebaut  
;;;
;;; Prints boxed string
;;;                
;;; To assemble, link, and run:  
;;;     nasm -f elf  helloWorld.asm  
;;;     ld -melf_i386 -o helloWorld helloWorld.o 
;;;     ./helloWorld        
;;;      

                section .data
msg	        db      "*********************************", 10
		db	"* Welcome to CSC231             *", 10
		db	"* Home of the Assembly Language *", 10
		db	"*********************************", 10
msgLen          equ     $-msg
	
                section .text
                global  _start
_start:

;;; print message                                                                                                                           
                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, msg        ; address of message to print    
                mov     edx, msgLen     ; # of chars to print  
                int     0x80

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


Program 2


;;; lab1 problem 2
;;; D. Thiebaut  
;;;
;;; Prints boxed string, but declares only 1 line of stars
;;;                
;;; To assemble, link, and run:  
;;;     nasm -f elf  lab1_2.asm  
;;;     ld -melf_i386 -o lab1_2 lab1_2.o 
;;;     ./lab1_2        
;;;      

                section .data
msg	        db      "*********************************", 10
msgLen1		equ	$-msg
		db	"* Welcome to CSC231             *", 10
		db	"* Home of the Assembly Language *", 10
msgLen          equ     $-msg
	
                section .text
                global  _start
_start:

;;; print first 3 lines of message
	
                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, msg        ; address of message to print    
                mov     edx, msgLen     ; # of chars to print  
                int     0x80

;;; print first line one more time, to close the box

		mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, msg        ; address of first line
                mov     edx, msgLen1    ; # of chars in first line
                int     0x80
	
;;; exit                                                                                                                                    
                mov     ebx, 0
                mov     eax, 1
                int     0x80


Program 3


;;; lab1_3.asm 
;;; D. Thiebaut  
;;;           
;;; Prints a triangle of stars
;;;     
;;; To assemble, link, and run:  
;;;     nasm -f elf  lab1_3.asm  
;;;     ld -melf_i386 -o lab1_3 lab1_3.o 
;;;     ./lab1_3        
;;;      

                section .data
Mesg            db      "*", 10
		db	"**", 10
		db	"***", 10
		db	"****", 10
		db	"*****", 10
MesgLen         equ     $-Mesg
	
                section .text
                global  _start
_start:

;;; print message                                                                                                                           
                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, Mesg       ; address of message to print    
                mov     edx, MesgLen    ; # of chars to print  
                int     0x80

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


Program 4


;;; lab1_4.asm 
;;; D. Thiebaut  
;;;                
;;; Prints a triangle of stars on 5 lines
;;;
;;; To assemble, link, and run:  
;;;     nasm -f elf  lab1_4.asm  
;;;     ld -melf_i386 -o lab1_4 lab1_4.o 
;;;     ./lab1_4        
;;;      

                section .data
Mesg            db      "*****", 10
MesgLen         equ     $-Mesg
	
                section .text
                global  _start
_start:

;;; print message                                                                                                                           
                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, Mesg+4     ; address of message to print    
                mov     edx, 2          ; 1 * and 1 line-feed
                int     0x80

                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, Mesg+3     ; address of message to print    
                mov     edx, 3    	; 2 * and 1 line-feed
                int     0x80

                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, Mesg+2     ; address of message to print    
                mov     edx, 4    	; 3 * and 1 line-feed
                int     0x80

                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, Mesg+1     ; address of message to print    
                mov     edx, 5    	; 4 * and 1 line-feed
                int     0x80

                mov     eax, 4          ; write    
                mov     ebx, 1          ; stdout  
                mov     ecx, Mesg       ; address of message to print    
                mov     edx, 6          ; 5 * and 1 line-feed
                int     0x80
	
;;; exit                                                                                                                                    
                mov     ebx, 0
                mov     eax, 1
                int     0x80