Other Programming Languages
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsProgramming Languages - MoreOther Programming Languages

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old December 7th, 2010, 01:54 PM
goonj goonj is offline
Registered User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Nov 2010
Posts: 3 goonj User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 48 m 13 sec
Reputation Power: 0
Assembly - Assembly language program

Question:
Create two procedures: (1) SetColor receives two BYTE parameters: forecolor and backcolor. It calls the SetTextColor procedure from the Irvine32 library. (2) WriteColorChar receives three byte parameters: char, forecolor, and backcolor. It displays a single character, using the color attributes specified in forecolor and backcolor. It calls the SetColor procedure, and it also calls WriteChar from the Irvine32 library. Both SetColor and WriteColorChar must contain declared parameters. Complete the missing part of the code for the two procedures.
Code:
TITLE SetColor and WriteColorChar

INCLUDE Irvine32.inc

SetColor PROTO forecolor:BYTE, backcolor:BYTE
WriteColorChar PROTO char:BYTE,forecolor:BYTE, backcolor:BYTE

.data
.code
main PROC
INVOKE WriteColorChar, 'A', white, blue INVOKE WriteColorChar, 'B', blue, white INVOKE WriteColorChar, 'C', green, black INVOKE WriteColorChar, 'D', yellow, gray INVOKE SetColor, lightGray, black
call Crlf
exit main ENDP

WriteColorChar PROC ...
...
WriteColorChar ENDP

SetColor PROC ...
...
SetColor ENDP END main
 


Code:

TITLE SetColor and WriteColorChar

INCLUDE Irvine32.inc

SetColor PROTO forecolor:BYTE, backcolor:BYTE
WriteColorChar PROTO char:BYTE,forecolor:BYTE, backcolor:BYTE

.data
.code
main PROC
INVOKE WriteColorChar, 'A', white, blue 
INVOKE WriteColorChar, 'B', blue, white 
INVOKE WriteColorChar, 'C', green, black 
INVOKE WriteColorChar, 'D', yellow, gray 
INVOKE SetColor, lightGray, black

call Crlf
exit 
main ENDP


WriteColorChar PROC

         pop ebp                                                                        ; pop the ebp from the stack
        pop ecx                                                                        ; pop the ecx reg. from the stack
        pop ebx                                                                        ; pop the ebx reg. from the stack
        pop eax                                                                        ; pop the eax reg. from the stack

        push eax                                                                ; push Foreground onto the stack
        push ebx                                                                ; push background onto the stack
        push ecx                                                                ; push wChar onto the stack

        call SetColor                                                        ; call SetColor
        call WriteChar                                                        ; call WriteChar

        ret

WriteColorChar ENDP


SetColor PROC 
        push ebp                                                            ; Save calling procedure base pointer
        mov ebp, esp                                                        ; Set base pointer for this procedure

        mov ecx, [ebp + 16]                                                 ; Retrieve colors
        mov eax, [ebp + 12]                                                 ; from the stack

        mov ebx, 16                                                         ; foreColor + (backColor * 16 )
        mul ebx                                                                        
        add ecx, eax                                                        

        mov eax, ecx                                                        ; move ecx reg. into eax re.
        call SetTextColor                                                   ; call SetTextColor to set the fore and back colors

        mov eax, [ ebp + 8 ]                                                ; retreive the char from the stack
		pop ebp                                                             ; Restore base pointer for calling procedure

        ret

SetColor ENDP 
END main
 


I'm not familiar with INVOKE and PROTO directive, but I tried my best to make this program. I think I have not used the INVOKE function properly.
Error I get is A2111: Conflicting parameter definition

Reply With Quote
  #2  
Old December 7th, 2010, 06:06 PM
OmegaZero OmegaZero is offline
Contributing User
Dev Shed Novice (500 - 999 posts)
 
Join Date: May 2007
Posts: 738 OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level)OmegaZero User rank is General (90000 - 100000 Reputation Level) 
Time spent in forums: 3 Weeks 5 Days 6 h 52 sec
Reputation Power: 928
Corresponding PROTO and PROC directives have to match. Your PROTOs list several arguments but your PROC directives don't. Either remove the arguments in PROTO and handle the arguments manually like you did in SetColor, or define the arguments in PROC matching the PROTO.

Seeing as your teacher left an ellipsis after the "PROC" you're probably supposed to fill them in.
__________________
sub{*{$::{$_}}{CODE}==$_[0]&& print for(%:: )}->(\&Meh);

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming Languages - MoreOther Programming Languages > Assembly - Assembly language program

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap