Nguyễn Phước Lộc MSSV: 40901457
loc.plsoft@gmail.com
1
EXERCISES
1. Write an LC-3 Assembly language to input a character. Check if this character is ‘A’, display the
letter ‘Y’ on screen.
2. Write an LC-3 Assembly language to input a character. Check if this character is ‘A’, change it to
‘a’, then display this letter on screen.
3. Write an LC-3 Assembly language to input a character. Check if this character is a small letter (‘a’
to ‘z’ with the ASCII codes x61 to x7A), change it to the capital, then display this letter on screen.
4. Write an LC-3 Assembly language to input two values from 1 to 4. Compute the summation of
these two values and display the result on screen.
Nguyễn Phước Lộc MSSV: 40901457
loc.plsoft@gmail.com
2
Bài 1:
Yes
No
Chương trình viết bằng hợp ngữ:
Chương trình viết bằng ngôn ngữ máy:
; CHƯƠNG TRÌNH 1
; Lấy giá trị đảo của ’A(-mã ASCII của A) cộng với giá
; trị nhập vào, nếu = 0 thì in ra ‘Y’
.ORIG x3000
LD R1, NOT_A
GETC
ADD R0, R0, R1
BRZ KETQUA
HALT
KETQUA:
LD R0, Y
OUT
HALT
NOT_A .FILL x-41
Y .FILL x59
.END
Load data
R1= mem[3008]
Input char
from keybd
(TRAP x23)
R0 = R0 + R1
R0=0?
Print ‘Y’
(TRAP x21)
HALT
(Trap x25)
Load data
R0 = mem[3009]
Nguyễn Phước Lộc MSSV: 40901457
loc.plsoft@gmail.com
3
Bài 2:
Yes
No
Chương trình viết bằng hợp ngữ:
Chương trình viết bằng ngôn ngữ máy:
; CHƯƠNG TRÌNH 2
.ORIG x3000
LD R1, NOT_A
GETC
ADD R0, R0, R1
BRZ KETQUA
HALT
KETQUA:
LD R0, TH
OUT
HALT
NOT_A .FILL x-41
TH .FILL x61
.END
Load data
R1= mem[3008]
Input char
from keybd
(TRAP x23)
R0 = R0 + R1
R0=0?
Print ‘a’
(TRAP x21)
HALT
(Trap x25)
Change ‘A’ to ‘a’
R0 = mem[3009]
Nguyễn Phước Lộc MSSV: 40901457
loc.plsoft@gmail.com
4
Bài 3
Chương trình viết bằng hợp ngữ:
Chương trình viết bằng ngôn ngữ máy:
; CHƯƠNG TRÌNH 3
; Theo bảng mã ASCII ta biết chữ hoa
;và chữ thường cách nhau 20h
; Code chương trình viết bằng ASM
.ORIG x3000
GETC
LD R1, GIAM
ADD R0, R0, R1
OUT
HALT
GIAM .FILL x-20
.END
Load data
R1= mem[3005]
Input char
from keybd
(TRAP x23)
change it to the capital
R0 = R0 + R1
Print R0
(TRAP x21)
HALT
(Trap x25)
Nguyễn Phước Lộc MSSV: 40901457
loc.plsoft@gmail.com
5
Bài 4:
No
Yes
Yes
No
R2= mem[300F]
Input char
from keybd
(TRAP x23)
R0 = R0 + R2
R0>=0?
Print R0
(TRAP x21)
HALT
(Trap x25)
R1 = R0 + #5
Input char
from keybd
(TRAP x23)
R0 = R0 + R2
R0 >=0?
R0 = R0 + #5
R0 = R0 + R1
R3 = mem[3010]
R0 = R0 + R3
Giải thích thuật toán:
Để chuyển đổi các kí tự ‘0’ – ‘9’ thành
số 0 – 9 chỉ cần thực hiện phép trừ đi
30h (mã của ‘0’), nhưng do điều kiện
số nhập vào từ 1 – 4 nên ta thực hiện
phép trừ đi 35h. Nếu kết quả của
phép trừ >=0 có nghĩa là số nhập vào
>4 ta thoát chương trình, ngược lại ta
cộng thêm 5h cho số vừa trừ để trả
về đúng số vừa nhập. Thực hiện 2 lần
công việc trên và cộng lại 2 số đó ta
được kết quả.