You are on page 1of 6

Nguyễn Phước Lộc MSSV: 40901457

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.

loc.plsoft@gmail.com 1
Nguyễn Phước Lộc MSSV: 40901457

Bài 1:

Load data
R1= mem[3008] Yes
R0=0? Load data
R0 = mem[3009]

Input char
from keybd Print ‘Y’
(TRAP x23) No (TRAP x21)

R0 = R0 + R1

HALT
(Trap x25)

Chương trình viết bằng hợp ngữ:

; 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

Chương trình viết bằng ngôn ngữ máy:

loc.plsoft@gmail.com 2
Nguyễn Phước Lộc MSSV: 40901457

Bài 2:
Load data Yes
R1= mem[3008]
R0=0? Change ‘A’ to ‘a’
R0 = mem[3009]

Input char
from keybd Print ‘a’
(TRAP x23) No (TRAP x21)

R0 = R0 + R1

HALT
(Trap x25)

Chương trình viết bằng hợp ngữ:

; 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

Chương trình viết bằng ngôn ngữ máy:

loc.plsoft@gmail.com 3
Nguyễn Phước Lộc MSSV: 40901457

Bài 3

Input char
from keybd
(TRAP x23)

Load data
R1= mem[3005]

change it to the capital


R0 = R0 + R1

Print R0
(TRAP x21)

HALT
(Trap x25)

Chương trình viết bằng hợp ngữ:

; 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

Chương trình viết bằng ngôn ngữ máy:

loc.plsoft@gmail.com 4
Nguyễn Phước Lộc MSSV: 40901457

Bài 4:

R2= mem[300F] No
R0>=0? R1 = R0 + #5

Input char
from keybd Yes Input char
(TRAP x23) from keybd
(TRAP x23)

R0 = R0 + R2

HALT Yes R0 >=0?


(Trap x25)

No

R0 = R0 + R2

R0 = R0 + #5

Giải thích thuật toán:


Để chuyển đổi các kí tự ‘0’ – ‘9’ thành R0 = R0 + R1
số 0 – 9 chỉ cần thực hiện phép trừ đi Print R0
30h (mã của ‘0’), nhưng do điều kiện (TRAP x21)
số nhập vào từ 1 – 4 nên ta thực hiện R3 = mem[3010]
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 R0 = R0 + R3
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ả.

loc.plsoft@gmail.com 5
Nguyễn Phước Lộc MSSV: 40901457

Chương trình viết bằng hợp ngữ

; CHƯƠNG TRÌNH 4

.ORIG x3000
LD R2, GIAM
GETC
ADD R0,R0,R2
BRzp THOAT
ADD R1,R0, X5
GETC
ADD R0, R0, R2
BRzp THOAT
ADD R0,R0,X5
ADD R0,R1,R0
LD R3, TANG
ADD R0, R0, R3
OUT
HALT
THOAT HALT
GIAM .FILL x-35
TANG .FILL x30
.END

Chương trình viết bằng ngôn ngữ máy:

loc.plsoft@gmail.com 6

You might also like