You are on page 1of 9

PROJECT 1

PROGRAMMING USING
ASSEMBLY LANGUAGE
(MCT 3235 - MICROPROCESSOR BASED SYSTEM)

NAME : ASMA’ ZUBIR


MATRIC NO. : 0724136
SECTION :1
LECTURER : DR. SHAHRUL NA’IM SIDEK
DATE : 11TH OCTOBER 2010
CODING
*-----------------------------------------------------------
* Program : MCT 3235 MICROP BASED SYSTEM PROJECT 1
* Written by : ASMA' BINTI ZUBIR
* Date : 11TH OCTOBER 2010
* Description: QUES1ION 1 - REVERSE A TEXT STRING
*-----------------------------------------------------------
ORG $1000
START: ; first instruction of program
MOVE.L #$00F0A105,D1
MOVE.B #21,D0
TRAP #15

LEA WELC,A1
MOVE.B #14,D0
TRAP #15

DOPT MOVE.L #$00F00080,D1 ;set color for option prompt


MOVE.B #21,D0
TRAP #15

LEA OPT,A1 ;display options


MOVE.B #14,D0
TRAP #15

CLR.L D1
JSR LINEE

BEGINN CLR.L D1
CLR.L D0
LEA USER,A1 ;display option prompt
MOVE.B #18,D0
TRAP #15

CMP.B #1,D1 ;go to question 1 if user choose 1


BEQ QUES1

CMP.B #2,D1 ;go to question 2 if user choose 2


BEQ QUES2
BRA BEGINN ;else start again

*-----------------------------------------------------------------------------
----------------------------------------*
*START QUESTION1

QUES1 MOVE.L #$0005C107,D1 ;Set the color to blue


CLR.L D2
MOVE.B #21,D0
TRAP #15

JSR LINEE ;insert the line


CLR.L D2
LEA PROMPT1,A1 ;prompt user to insert the string
MOVE.B #14,D0
TRAP #15

MOVEA.L #$F00000,A3 ;set the limit of the string to maximum of


$F00000
JSR SORT ;jump to SORT

*start sorting the characters to reverse


SORT MOVE.B #5,D0
TRAP #15
ADD #1,D4
MOVE.B D1,(A3)+
CMP.B #$0D,D1 ;null terminated
BEQ SOLVE
BRA SORT

*solve the reversing step


SOLVE SUB.B #1,D4
CMP.B #0,D4
BEQ EXIT ;branch to EXIT when reached the end of the
string
CLR.L D1

MOVE.B -(A3),D1 ;display the char of the string one by one


MOVE.B #6,D0
TRAP #15
BRA SOLVE

EXIT MOVE.B -(A3),D1 ;display the last char of the string


MOVE.B #6,D0
TRAP #15
JSR EXT
**************************************************
*subroutine for question 1*

LINEE LEA LINES,A1


MOVE.B #13,D0
TRAP #15
RTS
**************************************************

*END QUESTION 1

*-----------------------------------------------------------------------------
----------------------------------------*
*START QUESTION 2

QUES2 MOVE.L #$23FF11,D1 ;set color for question 2 part


MOVE.B #21,D0
TRAP #15

LEA INFO,A1 ;tell user about the program


MOVE.B #14,D0
TRAP #15
CLR.L D1
CLR.L D0
LEA INT1,A1 ;ask user input for i begin
MOVE.B #18,D0
TRAP #15
MOVE.L D1,D4

CLR.L D1
CLR.L D0
LEA INT2,A1 ;ask user input for i end
MOVE.B #18,D0
TRAP #15
ADDI.L #1,D1
MOVE.L D1,D6

CLR.L D1
MOVE.L #$FFFF33,D1 ;set color for the table
MOVE.B #21,D0
TRAP #15

*construct table*
JSR LINE
JSR TABLE2
JSR LINE

*perform the square*


LOOP CMP.L D6,D4 ;looping
BEQ DONE ;close the table if reach i end
MOVE.L D4,D3
MULU D4,D3 ;multiply by itself (squared)

MOVE.L D4,D1
MOVE.L #10,D2
MOVE.L #15,D0
TRAP #15

CMP.L #100,D3
BGE SPACE3 ;if D3 greater or equal to 100, the display
will not have spacing after tab
BRA SPACE ;else the display will have spacing after tab

*display the number in the table*


NEXT MOVE.L D3,D1
MOVE.L #10,D2
MOVE.L #15,D0
TRAP #15
JSR SPACE2

ADDI.L #1,D4
BRA LOOP

DONE JSR LINE ;end line of the table


MOVE.L #$00A8D1F1,D1
CLR.L D2
MOVE.B #21,D0
TRAP #15
JSR EXT
**************************************************
*subroutine for question 2*

LINE LEA LINES1,A1


MOVE.B #13,D0
TRAP #15
RTS

SPACE LEA DISPLAY,A1


MOVE.B #14,D0
TRAP #15
BRA NEXT

SPACE2 LEA DISPLAY2,A1


MOVE.B #13,D0
TRAP #15
RTS

SPACE3 LEA DISPLAY3,A1


MOVE.B #14,D0
TRAP #15
BRA NEXT

TABLE2 LEA TABLE,A1


MOVE.B #14,D0
TRAP #15
RTS
**************************************************

*END QUESTION 2
*-----------------------------------------------------------------------------
-----------------------------------------*

**************************************************
*subroutines for main*

EXT LEA PRESS,A1


MOVE.B #14,D0
TRAP #15

MOVE.B #4,D0 ;prompt user to continue or not


TRAP #15
CMP.B #1,D1 ;go to main if user choose 1
BEQ DOPT
CMP.B #0,D1 ;end if user choose 0
BEQ THEEND
BRA EXT ;else prompt again

THEEND MOVE.L #$00A8D1F1,D1


CLR.L D2
MOVE.B #21,D0
TRAP #15
LEA TAMAT,A1
MOVE.B #14,D0
TRAP #15
MOVE.B #9,D0
TRAP #15 ;halt simulator
**************************************************

*-----------------------------------------------------------------------------
-----------------------------------------*
* Variables and Strings
LINES DC.B
CR,LF,'================================================',0,CR,LF
WELC DC.B 'WELCOME TO MY PROGRAM!',0
OPT DC.B CR,LF,CR,LF,'PLEASE CHOOSE ONE OPTION:'
DC.B CR,LF,'PRESS 1 : TO REVERSE THE STRING '
DC.B CR,LF,'PRESS 2 : TO SHOW THE SQUARE TABLE ',CR,LF,0
INFO DC.B CR,LF,'THIS PROGRAM WILL CREATE A SQUARE TABLE FROM i=i0 TO
i=i1',CR,LF,0
USER DC.B CR,LF,CR,LF,'YOUR OPTION: ',0
PRESS DC.B CR,LF,CR,LF,'PRESS 1 TO CONTINUE 0R 0 TO EXIT: ',0,CR,LF
PROMPT1 DC.B CR,LF,'ENTER WORDS TO BE REVERSED : ',CR,LF,0
TAMAT DC.B CR,LF,'THANK YOU FOR USING THE PROGRAM',CR,LF
DC.B 'PLEASE COME AGAIN (^_^)',0
INT1 DC.B CR,LF,'ENTER THE INTEGER TO START (i0): ',0
INT2 DC.B 'ENTER THE INTEGER TO END (i1): ',0
LINES1 DC.B CR,LF,'___________________',0
TABLE DC.B CR,LF,'i',HT,HT,' i*i',0
DISPLAY DC.B HT,HT,' ',0
DISPLAY2 DC.B '',0
DISPLAY3 DC.B HT,HT,0

CR EQU $0D
LF EQU $0A
HT EQU $09

END START ; last line of source


SCREENSHOTS

.
. (very long)
.
Here is one of the output display screen.

You might also like