rendered paste body .TITLE "Asign1"
.PSIZE 1000,1000
.NOLIST
.INCLUDE "..\\include\\ascii.i"
.LIST
/*************CONSTANT DATA************/
.TEXT 1
MsgProgramID:
.ASCIZ "WELCOME!"
.BYTE CR,LF,0
MsgKeyPress:
.ASCIZ "Please Enter A String"
.BYTE CR,LF,0
MsgExit:
.ASCIZ "Thank You Come Again!"
.BYTE CR,LF,0
MsgStrFull:
.ASCIZ "Sorry your memory is full!"
.BYTE CR,LF,0
/*******************VARIABLE******************/
.DATA
string: .SPACE 1024,0
.EQU CLF,0x0D
.EQU EOF,0x04
.EQU PER,0x2E
.EQU EXP,0x21
.EQU QUE,0x3F
.EQU CAP,0X20
CapFlag: .WORD 1
GrammerCount: .WORD 1
/*****************PROCESS****************/
.TEXT 0
.GLOBAL Asign1
Asign1:
movea.l #CapFlag,A4
Addq.l #1,(A4)
|movea.l (A3),#CapFlaag
move.b #32,D2
movea.l #MsgProgramID,a0
jsr PrintMsg
jsr NewLine
movea.l #MsgKeyPress,a0
jsr PrintMsg
jsr NewLine
Get_Cha:
jsr ConsoleIn |D0
CMP.L #CLF,D0
BEQ.W New_Line
CMP.L #EOF,D0
BEQ.W End_Of_Reading
move.b D0,(A1)
ADDQ.l #1,A1
ADDQ.l #1,D1
jsr ConsoleOut
CMP.L #0,D2
Sub.b #1,D2
BEQ.W FULL
move.b D0,D3
JMP Get_Cha
New_Line:
jsr NewLine
move.b #0x00,D0
move.b D0,(A1)
movea.l A1,A3
Suba.l D1,A3 |point to start of string
move.b #0x00,D1
jsr Grammer_Loop
Suba.l #GrammerCount,A3
|Suba.l D1,A3
movea.l A3,A0
jsr PrintMsg
jsr NewLine
jmp Get_Cha
Upper_Case:
sub.b #32,(A3)
Grammer_Loop:
cmp.b #0x00,(A3)
beq.w Exit
cmp.b #0x61,(A3)
bge.w Upper_Case
|cmp.l #1,CapFlag
|beq.w
|jsr Upper_Case
movea.l #GrammerCount,A4
addq.l #1,(A4)
addq.l #1,A3
jmp Grammer_Loop
Exit:
rts
End_Of_Reading:
jsr ConsoleIn
movea.l #MsgExit,a0
jsr PrintMsg
jsr NewLine
RTS
FULL:
movea.l #MsgStrFull,A0
jsr PrintMsg
JMP End_Of_Reading
RTS | exit program
/************end of program************/