In Hoa
In Hoa
2 .ORIG X3050
3 AND R1, R1, #0 ; xoa thanh ghi R1
4 LEA R0, MESG ; dua chuoi "MESG" vao thanh ghi R0
5 PUTS ; xuat chuoi
6 LEA R1, MEM ; dua dia chi (o dia chi dau tien) cua "MEM" vao R1
7
8 LOOP GETC ; lenh lay ky tu -> R0 -> ky tu duoc go vao khong co hien
9 len Console
10 PUTC ; xuat lai len Console de thay ky tu duoc go
11
12 LD R3, ENTER ; dua "ENTER" vao R3
13 ADD R3, R3, R0 ; tong voi R3 de kiem tra ky tu go vao co phai Enter -
14 "xuong dong " khong
15 BRZ KETTHUC ; neu la enter thi di den label "KET THUC"
16
17 LD R2, KT ; dua "KT" vao R2
18 ADD R2, R0, R2 ; cong ky tu voi R2
19 BRZP CAP ; neu ky tu la chu thuong -> den label "CAP"
20
21 NEXT STR R0, R1, #0 ; luu gia tri trong R0 vao o dia chi luu trong R1
22 ADD R1, R1, #1 ; tang o dia chi them mot
23 BR LOOP ; quay lai vong lap "LOOP"
24
25 CAP LD R2, IN_HOA ; dua "IN_HOA" vao R2
26 ADD R0, R0, R2 ; cong R2 voi R0 de duoc ma Ascii cua ky tu in hoa
27 BR NEXT ; re nhanh vo dieu kien den label "NEXT"
28
29 KETTHUC
30 LEA R0, MESG2 ;
31 PUTS ; xuat chuoi "MESG2"
32 LEA R0, MEM ; dua "MEM" vao R0
33 PUTS ; xuat
34
35 HALT ; lenh ket thuc chuong trinh
36
37 MEM .BLKW 100 ; danh ra mot khoang memory cho chuoi duoc nhap
38 MESG .STRINGZ "Nhap chuoi: " ; chuoi "MESG"
39 MESG2 .STRINGZ "Ket qua: " ; chuoi "MESG2"
40 ENTER .FILL XFFF6 ; gia tri am cua phim "ENTER" dung de kiem tra
41 IN_HOA .FILL #-32 ; hang so dua chu thuong thanh chu in hoa
42 KT .FILL #-97 ; hang so kiem tra vi tri chu in thuong trong
43 bang ma Ascii
44
45 .END ; khong con lenh nao sau lenh nay
46