You are on page 1of 8

.

ORIG X3000

LD R3,ASCIISANGSO

LEA R6,INKETQUA

LEA R0,MOINHAP1 ;NHAP GIA TRI1

PUTS

GETC

OUT

STR R0,R6,#0

ADD R1,R0,R3

LD R0,XUONGDONG

OUT

LEA R0,MOINHAP2 ;NHAP GIA TRI2

PUTS

GETC

OUT

STR R0,R6,#2

ADD R2,R0,R3

ADD R4,R1,R2 ;CONG 2 SO

STI R4,KETQUA

ADD R5,R4,#-10 ;SOSANH

BRzp KETQUALONHON10

LD R0,SOSANGASCII ;INKETQUA<10
ADD R4,R4,R0

STR R4,R6,#5

BRnzp NHAY

KETQUALONHON10 LD R0,SOSANGASCII

ADD R5,R5,R0

STR R5,R6,#6

LD R0,SOSANGASCII

AND R5,R5,#0

ADD R5,R5,#1

ADD R5,R5,R0

STR R5,R6,#5

NHAY LD R0,XUONGDONG

OUT

LEA R0,INKETQUA ; IN KET QUA

PUTS

OUT

HALT

MOINHAP1 .STRINGZ "MOI NHAP SO THU NHAT: "

MOINHAP2 .STRINGZ "MOI NHAP SO THU HAI: "

INKETQUA .STRINGZ "X+Y= Z "

KETQUA .FILL X5000

XUONGDONG .FILL X0A

ASCIISANGSO .FILL X-30


SOSANGASCII .FILL X30

.END

.ORIG X3000

LD R5,ASCIISANGSO

LEA R0,MOINHAP1 ;NHAP1 LUU R1

PUTS

GETC

OUT

ADD R1,R0,R5

STI R1,X

LD R0,XUONGDONG

OUT

LEA R0,MOINHAP2 ;NHAP2 LUU R2

PUTS

GETC

OUT

ADD R2,R0,R5

STI R2,Y

LD R0,XUONGDONG

OUT

LEA R0,MOINHAP3 ;NHAP3 LUU R3

PUTS

GETC

OUT
ADD R3,R0,R5

STI R3,Z

NOT R2, R2 ; SOSANH

ADD R2,R2,#1

ADD R4,R1,R2

BRzp SOSANH1

LDI R2,Y

STI R2,MAX

STI R1,MIN

BRnzp NHAY1

SOSANH1 STI R1,MAX ;X>=Y

LDI R2,Y

STI R2,MIN

NHAY1

LDI R0,MIN

NOT R0,R0

ADD R0,R0,#1

ADD R4,R3,R0

BRzp SOSANH2 ;z ss min

STI R3,MIN

BRnzp NHAY2

SOSANH2 LDI R0,MAX

NOT R0,R0

ADD R0,R0,#1

ADD R5,R3,R0
BRzp SOSANH3

BRnzp NHAY2

SOSANH3 STI R3,MAX

NHAY2 LEA R6,KETQUA

LDI R4,MIN

LD R0,ASCII

ADD R4,R4,R0

STR R4,R6,#5

LDI R5,MAX

LD R0,ASCII

ADD R5,R5,R0

STR R5,R6,#12

LD R0,XUONGDONG

OUT

LEA R0,KETQUA

PUTS

OUT

HALT

MOINHAP1 .STRINGZ "MOI NHAP SO THU 1: "

MOINHAP2 .STRINGZ "MOI NHAP SO THU 2: "

MOINHAP3 .STRINGZ "MOI NHAP SO THU 3: "

KETQUA .STRINGZ "MIN: MAX:


"
ASCIISANGSO .FILL X-30

ASCII .FILL X30

XUONGDONG .FILL X0A

MAX .FILL X5000

MIN .FILL X4FFF

X .FILL X5001

Y .FILL X5002

Z .FILL X5003

.END

.ORIG x3000

LEA R0, HUONGDAN ; In hướng dẫn cho người dùng

OUT

GETC ; Nhập giá trị n từ người dùng

OUT

STI R0, SO_N, #0 ; Lưu giá trị n vào SO_N

AND R1, R1, #0 ; Khởi tạo R1 = 0 (biến SO_NGUYENTO_LON_NHAT)

AND R2, R2, #0 ; Khởi tạo R2 = 0 (biến CHIA_HET)

KIEM_TRA_SO_NGUYENTO

ADD R2, R2, #1 ; Tăng giá trị của CHIA_HET lên 1

LDI R0, SO_N ; Tải giá trị hiện tại của n vào R0

ADD R3, R0, R2 ; R3 = n - CHIA_HET

BRz KET_THUC ; Nếu n - CHIA_HET = 0, thoát khỏi vòng lặp

LDI R4, SO_N ; Tải giá trị hiện tại của n vào R4

NOT R4, R4 ; R4 = NOT n


ADD R4, R4, #1 ; R4 = -n

ADD R4, R4, R2 ; R4 = -n + CHIA_HET

BRn KIEM_TRA_SO_NGUYENTO ; Nếu R4 < 0, quay lại kiểm tra số nguyên tố

ADD R5, R0, #0 ; R5 = n

ADD R5, R5, R2 ; R5 = n + CHIA_HET

BRnzp KIEM_TRA_SO_NGUYENTO; Quay lại kiểm tra số nguyên tố

LDI R1, SO_N ; Lưu giá trị hiện tại của CHIA_HET vào SO_NGUYENTO_LON_NHAT

BR KIEM_TRA_SO_NGUYENTO ; Tiếp tục kiểm tra số nguyên tố

KET_THUC

LDI R1, SO_N ; Lấy giá trị n ban đầu từ SO_N

LEA R0, KET_QUA ; In kết quả

OUT

HALT

HUONGDAN .STRINGZ "Nhập n (0 < n < 10): "

SO_N .FILL x0

HIENTAI .FILL x0

KET_QUA .STRINGZ "Số nguyên tố lớn nhất là: "

You might also like