wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Câu hỏi về lập trình hợp ngữ

Total questions: 128

Worksheet time: 1hrs 4mins

Name
Class
Date
1.

Lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) tăng giá trị của thanh ghi AX lên 5.

a)

ADD AX, 5

b)

INC AX, 5

c)

SUB AX, 5

d)

MOV AX, 5

2.

Cách sử dụng lệnh LOOP nào đúng để lặp lại 10 lần (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng):

a)

MOV 10, CX; LOOP START

b)

MOV CX, 10; LOOP START

c)

MOV [CX], 10; LOOP START

d)

MOV CX = 10; LOOP START

3.

Cách sao chép giá trị từ thanh ghi BX sang thanh ghi CX?

a)

MOV BX, CX

b)

ADD CX, BX

c)

CMP BX, CX

d)

MOV CX, BX

4.

Đoạn lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) dừng chương trình và trả về hệ điều hành.

a)

MOV AX, 4C00H; INT 21H

b)

CALL SBRK

c)

MOV DX, 4C00H; INT 21H

d)

RET

5.

Đoạn lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) dịch phải AX 2 bit:

a)

SHL AX, 2

b)

NEG AX, 2

c)

SHR AX, 2

d)

ADD AX, 2

6.

Đoạn lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) tính tổng hai số trong AX và BX, lưu vào CX.

a)

CALL SUM

b)

MOV CX, AX; ADD CX, BX

c)

SUB AX, BX; MOV CX, AX

d)

MUL AX, BX

7.

Đ6ạn Lệnh nà6 đúng để (giả thiết dấu chấm phẩ. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) gọi dịch vụ in ký tự trên màn hình:

a)

INT 21H, AH=2

b)

MOV AX, 02H; CALL PRINT

c)

MOV AH, 1; INT 21H

d)

MOV AH, 2; INT 21H

8.

Đ6ạn Lệnh nà6 đúng để (giả thiết dấu chấm phẩ. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) kiểm tra cờ ZF trước khi nhả:

a)

JZ LABEL

b)

JMP LABEL

c)

CMP AX, 0; JMP

d)

CALL ZF

9.

Đoạn Lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) lưu giá trị hiện tại của BX vào ngăn xếp:

a)

POP BX

b)

CALL BX

c)

PUSH BX

d)

INT 20H

10.

Đ6ạn lệnh nà6 đúng để (giả thiết dấu chấm phẩ. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) di chuyển địa chỉ đoạn dữ liệu và thành ghi DS:

a)

MOV DS, AX

b)

MOV AX, DATA; MOV DS, AX

c)

MOV CX, DATA

d)

CALL DS_INIT

11.

Đoạn lệnh sau có lỗi gì?

MOV DS,1000H

MOV AX,

a)

DS không thể chứa hằng số

b)

AX không được khởi tạo

c)

Không có lỗi

d)

DS phải được khởi tạo thông qua AX

12.

Đoạn lệnh sau có vấn đề gì khi sử dụng ngăn xếp?

PUSH BX

POP AX

a)

BX bị ghi đè

b)

Giá trị AX = AX + BX

c)

Giá trị BX không phù hợp với AX

d)

Không có vấn đề

13.

Tại sao đoạn lệnh sau không thực hiện được đúng cách?

ADD AX,BH

MOV CX,

a)

Lệnh ADD không tương thích

b)

Giá trị AX không hợp lệ

c)

Lệnh ADD không ảnh hưởng đến CX

d)

Lệnh MOV không tương thích

14.

Điểm hạn chế của đoạn lệnh sau là gì?

START:

MOV CX,10

LOOP START

a)

Không có lệnh thoát vòng lặp

b)

CX được giảm tự động

c)

Vòng lặp chạy vô hạn

d)

START không phải nhãn hợp lệ

15.

Đoạn lệnh sau có vấn đề gì?

MOV AX,4C00H

INT 20H

a)

AX bị ghi đè

b)

Dịch vụ không được gọi đúng cách

c)

INT 20H không hỗ trợ DOS

d)

Lệnh INT không đúng chức năng

16.

Đoạn mã sau gây ra lỗi gì?

MOV AX,BX

DIV BX

a)

BX không được khởi tạo

b)

AX không được khởi tạo

c)

Không có lỗi

d)

DIV không hỗ trợ BX

17.

Lệnh NEG AX trong đoạn mã sau có thể dẫn đến kết quả gì?

MOV AX,98000H

NEG

a)

Giá trị âm hợp lệ

b)

Lỗi tràn số học

c)

AX trở về 0

d)

Không có lỗi

18.

Đoạn mã sau gây ra lỗi gì?

MOV CX,0

LOOP

a)

CX không hợp lệ

b)

START không hợp lệ

c)

Lỗi tràn ngăn xếp

d)

Vòng lặp không bao giờ thực thi

19.

Tại sao đoạn mã sau không hiển thị đúng ký tự?

MOV AH,2

MOV DL,'A'

INT 21H

a)

DL không được khởi tạo đúng cách

b)

INT 21H không hỗ trợ hiển thị ký tự

c)

AH không đúng giá trị

d)

Lệnh MOV không hợp lệ

20.

Đoạn mã sau có vấn đề gì trong việc khởi tạo dữ liệu?

MOV AX,DATA

MOV DS,AX

a)

AX không khởi tạo đúng cách

b)

DS không tương thích với DATA

c)

DATA không tương thích với AX

d)

Không có vấn đề

21.

Bộ vi điều khiển 8051 thuộc kiến trúc nào?

a)

Vốn Cumulon

b)

ARM

c)

Harvard

d)

MIPS

22.

Bộ vi điều khiển 8051 có bao nhiêu chân I/O?

a)

32 chân

b)

40 chân

c)

16 chân

d)

8 chân

23.

Dung lượng bộ nhớ RAM nội của 8051 là bao nhiêu?

a)

512 bít

b)

2 KB

c)

1 KB

d)

128 bít

24.

Bộ nhớ ROM trên chip của 8051 có dung lượng bao nhiêu?

a)

512 bít

b)

4 KB

c)

2 KB

d)

128 bít

25.

Bộ vi điều khiển 8051 có bao nhiêu thành ghi chức năng đặc biệt (SFRs)?

a)

16

b)

24

c)

21

d)

32

26.

Bộ đếm/định thời (Timer) của 8051 có bao nhiêu bộ?

a)

2 bộ

b)

4 bộ

c)

1 bộ

d)

3 bộ

27.

Chức năng của chân A (Control Access) trên 8051 là gì?

a)

Kích hoạt ngắt ngoài

b)

Lựa chọn sử dụng bộ nhớ ROM nội hay ngoài

c)

Truy cập bộ nhớ dữ liệu

d)

Điều khiển chế độ hoạt động

28.

Thành ghi nào được sử dụng để lưu địa chỉ ngăn xếp trong 8051?

a)

DPTR

b)

PC

c)

ACC

d)

SP

29.

Tại sao kiến trúc Harvard được áp dụng trong 8051?

a)

Để tăng tốc độ xử lý bằng cách phân chia dữ liệu và chương trình

b)

Để giảm chi phí phần cứng

c)

Để hỗ trợ thêm các ngắt ngoài

d)

Để mở rộng dung lượng bộ nhớ

30.

Bộ nhớ dữ liệu và bộ nhớ chương trình trong 8051 được tổ chức như thế nào?

a)

Kết hợp trong một không gian địa chỉ chung

b)

Chỉ dùng bộ nhớ ngoài

c)

Tách biệt hoàn toàn trong kiến trúc Harvard

d)

Lưu trữ trong các thành ghi chức năng

31.

Lợi ích của việc sử dụng thành ghi DPTR trong 8051 là gì?

a)

Quản lý các ngắt hệ thống

b)

Điều khiển cổng I/O

c)

Lưu giá trị bộ đếm

d)

Truy cập bộ nhớ ngoài

32.

Vai trò của bộ đệm tích hợp (Accumulator) trong 8051 là gì?

a)

Lưu trữ địa chỉ chương trình

b)

Lưu trữ tạm thời các kết quả tính toán

c)

Điều khiển chế độ hoạt động

d)

Đếm các tín hiệu xung

33.

Tại sao bộ vi điều khiển 8051 cần có bộ đếm/định thời?

a)

Để điều khiển các cổng xuất/nhập

b)

Để thực hiện các phép toán logic

c)

Để tạo độ trễ hoặc đếm xung nhịp trong ứng dụng thời gian thực

d)

Để điều khiển ngắt ngoài

34.

Chân RST (Reset) trên 8051 hoạt động như thế nào?

a)

Đặt lại giá trị của thành ghi ACC

b)

Đặt lại các cổng I/O về giá trị mặc định

c)

Đặt lại giá trị của bộ đếm

d)

Đặt lại toàn bộ hệ thống về trạng thái ban đầu

35.

Tại sao các cổng I/O của 8051 có khả năng đa chức năng?

a)

Để tiết kiệm số lượng chân và tăng tính linh hoạt

b)

Để mở rộng bộ nhớ ngoài

c)

Để hỗ trợ nhiều chế độ định thời khác nhau

d)

Để xử lý tín hiệu ngắt hiệu quả hơn

36.

Vai trò của thành ghi PC (Program Counter) trong 8051 là gì?

a)

Lưu địa chỉ dữ liệu trong RAM

b)

Lưu địa chỉ lệnh kế tiếp cần thực thi

c)

Điều khiển trạng thái của bộ đếm

d)

Tạo xung định thời

37.

Bộ nhớ RAM nội của 8051 có dung lượng bao nhiêu?

a)

1 KB

b)

64 byte

c)

128 byte

d)

256 byte

38.

Dung lượng bộ nhớ ROM nội trong 8051 là bao nhiêu?

a)

2 KB

b)

4 KB

c)

8 KB

d)

512 byte

39.

Tổ chức bộ nhớ của 8051 tuân theo kiến trúc nào?

a)

Harvard

b)

Von Neumann

c)

ARM

d)

MIPS

40.

Bộ nhớ RAM nội trống 8051 được chia thành mấy vùng chính?

a)

2 vùng

b)

3 vùng

c)

4 vùng

d)

5 vùng

41.

Vùng thanh ghi làm việc (Working Registers) trong RAM nội của 8051 chiếm bao nhiêu bít?

a)

8 bít

b)

16 bít

c)

32 bít

d)

64 bít

42.

Vùng RAM địa chỉ bit (Bit-Addressable) của 8051 chiếm bao nhiêu bít?

a)

16 bít

b)

32 bít

c)

8 bít

d)

64 bít

43.

Bộ nhớ chương trình của 8051 được lưu trữ trong đâu?

a)

RAM nội

b)

RAM ngoài

c)

Bộ đếm/định thời

d)

ROM nội hoặc ROM ngoài

44.

Thanh ghi DPTR trong 8051 dùng để truy cập bộ nhớ nào?

a)

Bộ nhớ RAM nội

b)

ROM nội hoặc ROM ngoài

c)

Bộ nhớ địa chỉ bit

d)

Bộ nhớ ngăn xếp

45.

Tại sao bộ nhớ RAM nội trống 8051 được chia thành nhiều vùng?

a)

Để tăng hiệu quả truy cập và quản lý dữ liệu

b)

Để hỗ trợ bộ nhớ ngoài

c)

Để tiết kiệm dung lượng bộ nhớ

d)

Để lưu trữ các cờ trạng thái

46.

Vùng địa chỉ bit (Bit-Addressable) trong 8051 thường được dùng để làm gì?

a)

Lưu trữ dữ liệu tạm thời

b)

Lưu chương trình

c)

Điều khiển ngắt hệ thống

d)

Điều khiển các bit trạng thái hoặc thiết bị ngoại vi

47.

Lợi ích của việc tách biệt bộ nhớ dữ liệu và bộ nhớ chương trình trong 8051 là gì?

a)

Tăng dung lượng bộ nhớ

b)

Cho phép truy cập đồng thời dữ liệu và chương trình

c)

Giảm chi phí phần cứng

d)

Hỗ trợ nhiều chế độ ngắt

48.

Thành ghi SP (Stack Pointer) trong 8051 có vai trò gì trong tổ chức bộ nhớ?

a)

Quản lý bộ nhớ chương trình

b)

Điều khiển các cổng I/O

c)

Trỏ đến vị trí trên ngăn xếp

d)

Quản lý thành ghi làm việc

49.

Khi nào bộ nhớ ngoài được sử dụng thay vì bộ nhớ nội trong 8051?

a)

Khi truy cập dữ liệu trong RAM địa chỉ bit

b)

Khi xử lý các ngắt ngoài

c)

Khi thực hiện các phép toán logic

d)

Khi dung lượng bộ nhớ chương trình hoặc dữ liệu vượt quá giới hạn bộ nhớ nội

50.

Vùng RAM địa chỉ bit trong 8051 hỗ trợ truy cập từng bit có lợi ích gì?

a)

Để dễ dàng điều khiển các thiết bị ngoại vi hoặc cờ trạng thái

b)

Để lưu trữ các giá trị lớn

c)

Để xử lý các ngắt ngoài nhanh hơn

d)

Để hỗ trợ nhiều thành ghi hơn

51.

Tại sao cần thành ghi DPTR trong việc truy cập bộ nhớ ngoài?

a)

Để điều khiển các cổng I/O

b)

Để xác định địa chỉ bộ nhớ ngoài một cách hiệu quả

c)

Để quản lý bộ đếm/định thời

d)

Để lưu các giá trị cờ trạng thái

52.

Điều gì xảy ra nếu không khởi tạo đúng giá trị của thành ghi SP trong 8051?

a)

Các cổng I/O không hoạt động

b)

Bộ nhớ ngoài không thể truy cập

c)

Bộ đếm/định thời hoạt động không chính xác

d)

Ngăn xếp có thể ghi đè lên dữ liệu quan trọng

53.

8051 hỗ trợ bao nhiêu chế độ địa chỉ?

a)

5 chế độ

b)

4 chế độ

c)

6 chế độ

d)

3 chế độ

54.

Trong chế độ địa chỉ tức thời (Immediate), toán hạng được lưu ở đâu?

a)

Trong bộ nhớ ngoài

b)

Trong chính lệnh đó

c)

Trong thanh ghi ACC

d)

Trong ngăn xếp

55.

Chế độ địa chỉ trực tiếp (Direct) sử dụng địa chỉ nào để truy cập dữ liệu?

a)

Địa chỉ trong thanh ghi SP

b)

Địa chỉ trong ngăn xếp

c)

Địa chỉ chỉ số

d)

Địa chỉ cụ thể trong RAM nội

56.

Chế độ địa chỉ gián tiếp (Indirect) sử dụng thanh ghi nào để trỏ đến địa chỉ dữ liệu?

a)

ACC

b)

DPTR

c)

R0 và R1

d)

PC

57.

Chế độ địa chỉ thanh ghi (Register) sử dụng thanh ghi nào để lưu trữ toán hạng?

a)

R0 đến R7

b)

DPTR

c)

PSW

d)

PC

58.

Chế độ địa chỉ chỉ số (Indexed) thường được sử dụng để làm gì?

a)

Truy cập bộ nhớ RAM nội

b)

Truy cập bộ nhớ chương trình

c)

Lưu trữ kết quả phép toán

d)

Gọi chương trình con

59.

Chế độ địa chỉ nào sử dụng thanh ghi DPTR để truy cập dữ liệu?

a)

Tức thời

b)

Thanh ghi

c)

Chỉ số

d)

Trực tiếp

60.

Trong chế độ địa chỉ gián tiếp, toán hạng được lưu trữ ở đâu?

a)

Trong chính lệnh đó

b)

Trong ACC

c)

Trong RAM nội hoặc bộ nhớ ngoài

d)

Tại địa chỉ được trỏ bởi R0 hoặc R1

61.

Tại sao chế độ địa chỉ tức thời (Immediate) thường được sử dụng trong việc khởi tạo giá trị?

a)

Để tiết kiệm dung lượng bộ nhớ

b)

Để gán giá trị trực tiếp cho thanh ghi hoặc bộ nhớ

c)

Để tối ưu hóa tốc độ xử lý lệnh

d)

Để giảm số lượng thanh ghi cần sử dụng

62.

Điểm khác biệt chính giữa chế độ địa chỉ trực tiếp và gián tiếp là gì?

a)

Địa chỉ trực tiếp truy cập ngữ liệu, còn gián tiếp sử dụng thành ghi để trỏ đến dữ liệu

b)

Trực tiếp chỉ sử dụng chế bộ nhớ ngoài, gián tiếp chế bộ nhớ nội

c)

Gián tiếp có tốc độ nhanh hơn trực tiếp

d)

Gián tiếp không sử dụng các thành ghi

63.

Trong chế độ địa chỉ chỉ số (Indexed), tại sao cần kết hợp thành ghi ACC với DPTR?

a)

Để giảm dung lượng chương trình

b)

Để tối ưu hóa phép toán số học

c)

Để tính toán địa chỉ bộ nhớ chương trình

d)

Để lưu trữ tạm thời kết quả

64.

Chế độ địa chỉ gián tiếp thường được sử dụng khi nào?

a)

Khi truy cập bộ nhớ ROM

b)

Khi thực hiện phép toán số học

c)

Khi xử lý các ngắt hệ thống

d)

Khi địa chỉ dữ liệu thay đổi linh hoạt

65.

Tại sao chế độ địa chỉ thành ghi () được ưu tiên trong các phép toán đơn giản?

a)

Vì tốc độ truy cập thành ghi nhanh hơn bộ nhớ

b)

Vì thành ghi hỗ trợ nhiều chế độ ngắt hơn

c)

Vì thành ghi cho phép lưu trữ chương trình

d)

Vì thành ghi có dung lượng lớn hơn bộ nhớ

66.

Lợi ích chính của chế độ địa chỉ chỉ số (Indexed ) là gì?

a)

Truy cập nhanh vào ngăn xếp

b)

Duyệt các mảng dữ liệu trong bộ nhớ chương trình

c)

Thực hiện phép toán số học phức tạp

d)

Tăng tốc độ xử lý ngắt ngoài

67.

Trong chế độ địa chỉ trực tiếp, điều gì xảy ra nếu địa chỉ vượt quá giới hạn RAM nội?

a)

Lệnh bị bỏ qua

b)

Hệ thống tự động sử lý lỗi

c)

Truy cập vào bộ nhớ ngoài nếu có

d)

Gây lỗi phần mềm hoặc dừng chương trình

68.

Chế độ địa chỉ nào thường được sử dụng để đọc dữ liệu từ một bảng hằng trong ROM?

a)

Tức thời

b)

Gián tiếp

c)

Trực tiếp

d)

Chỉ số

69.

Lệnh MOV A, #25H thực hiện chức năng gì?

a)

Chép giá trị từ thanh ghi A và địa chỉ 25H

b)

Chép giá trị từ địa chỉ 25H và thanh ghi A

c)

Gán giá trị 25H trực tiếp vào thanh ghi A

d)

Chuyển giá trị từ thanh ghi A sang bộ nhớ ngoài

70.

Lệnh ADD A, R0 trong 8051 thực hiện nhiệm vụ gì?

a)

Cộng giá trị trong R0 và thanh ghi A

b)

Cộng giá trị trong thanh ghi A và R0

c)

Lấy giá trị từ bộ nhớ và cộng vào A

d)

Ghi giá trị A vào địa chỉ R0

71.

Tại sao cần sử dụng lệnh SJMP LAB trong chương trình?

a)

Để nhảy đến một địa chỉ cố định trong ROM

b)

Để nhảy đến nhãn LAB trong cùng đoạn mã

c)

Để so sánh hai giá trị trước khi nhảy

d)

Để thực hiện nhảy có điều kiện

72.

Lệnh CLR A trong tập lệnh 8051 có tác dụng gì?

a)

Gán giá trị mặc định cho thanh ghi A

b)

Đặt tất cả các bit trong A thành 1

c)

Đặt giá trị của A bằng hằng số

d)

Xóa toàn bộ giá trị trong thanh ghi A

73.

Lệnh SETB P1.0 thực hiện nhiệm vụ gì?

a)

Đặt bit P1.0 thành 1

b)

Xóa bit P1.0 về 0

c)

Đảo trạng thái bit P1.0

d)

Gán giá trị của P1.0 vào thanh ghi A

74.

Lệnh DJNZ R2, LAB được sử dụng để làm gì?

a)

Giảm giá trị trong R2 và thoát vòng lặp

b)

Giảm giá trị trong R2 và nhảy đến LAB nếu R2 ≠ 0

c)

Tăng giá trị trong R2 và lặp lại

d)

Ghi giá trị R2 vào LAB

75.

Lệnh ANL A, #0F0H có chức năng gì?

a)

Lấy giá trị từ địa chỉ 0F0H và lưu vào A

b)

Cộng giá trị trong A với hằng số 0F0H

c)

Đặt các bit trong A thành giá trị 0F0H

d)

Thực hiện phép toán AND giữa A và hằng số 0F0H

76.

Lệnh XCH A, R5 thực hiện điều gì?

a)

Đổi chỗ giá trị giữa thanh ghi A và R5

b)

Gán giá trị R5 vào A

c)

Cộng giá trị A với giá trị R5

d)

Xóa giá trị trong A và R5

77.

Lệnh INC DPTR được dùng khi nào?

a)

Khi khởi tạo bộ nhớ RAM nội

b)

Khi tăng giá trị của con trỏ dữ liệu DPTR lên 1

c)

Khi truy cập ngắt ngoài

d)

Khi đặt lại giá trị thanh ghi A

78.

Lệnh ORL A, #0F0H có tác dụng gì?

a)

Đặt tất cả các bit trong A thành 1

b)

Lấy giá trị từ địa chỉ 0F0H và lưu vào A

c)

Thực hiện phép toán OR giữa A và hằng số 0F0H

d)

Gán giá trị 0F0H vào A

79.

Lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) gán giá trị 7FH vào thanh ghi A:

a)

MOV A, #7FH

b)

MOV A, 7FH

c)

CLR A; ADD A, #7FH

d)

MOV R0, #7FH; MOV A, R0

80.

Lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) kiểm tra bit P1.3 có bằng 1 không, nếu bằng thì nhảy đến nhãn LAB L

a)

MOV C, P1.3

b)

JB P1.3, LAB L

c)

SETB P1.3

d)

DJNZ P1.3, LAB L

81.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) cộng giá trị trong R1 và thành ghi A:

a)

ADD A, #R1

b)

MOV A, R1; ADD A, A

c)

ADD A, R1

d)

MOV R1, A; ADD A, R1

82.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) xóa toàn bộ giá trị trong thành ghi A:

a)

MOV A, #00H

b)

CLR R0; MOV A, R0

c)

SUB A, A

d)

CLR A

83.

Đoạn lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) lặp lại 10 lần bằng R2:

a)

MOV R2, #10; DJNZ R2, LOOP

b)

MOV R2, #10; SJMP LOOP

c)

MOV R2, #0A; JNZ LOOP

d)

INC R2; LOOP

84.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) kiểm tra nếu thành ghi A = 0 thì nhảy đến nhãn ZERO:

a)

JB A, ZERO

b)

JZ ZERO

c)

CJN A, #0, ZERO

d)

ANL A, #00H; JNZ

ZERO

85.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) chuyển giá trị từ R3 sang địa chỉ được trỏ bởi R0:

a)

MOV R3, @R0

b)

MOV @R0, #R3

c)

MOV @R0, R3

d)

MOV R0, R3

86.

Đoạn lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) bật tất cả các bit của cổng P2:

a)

ORL P2, #00H

b)

SETB P2

c)

MOV P2, #0FFH

d)

SETB P2.0; SETB P2.1; SETB P2.2

87.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) gọi chương trình con tại nhãn SUB:

a)

ACALL SUB

b)

SJMP SUB

c)

JMP SUB

d)

JNB SUB

88.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) lùi giá trị từ thanh ghi A và địa chỉ 40H:

a)

MOV 40H, A

b)

MOV @40H, A

c)

MOV A, 40H

d)

MOV R0, 40H; MOV @R0, A

89.

Chỉ thị nào dùng để khởi tạo hằng số trong lập trình hợp ngữ 8051?

a)

EQU

b)

ORG

c)

DB

d)

DW

90.

Khởi tạo biến trong lập trình hợp ngữ 8051 thường sử dụng chỉ thị nào?

a)

MOV

b)

DB

c)

Q

d)

ORG

91.

Lệnh nào được sử dụng để gọi chương trình con trong hợp ngữ 8051?

a)

JMP

b)

RET

c)

MOV

d)

LCALL

92.

Lệnh RET trong hợp ngữ 8051 có chức năng gì?

a)

Kết thúc chương trình con và quay lại chương trình chính

b)

Chuyển đến một nhãn khác trong chương trình

c)

Kết thúc chương trình chính

d)

Khởi động lại chương trình

93.

Lệnh LCALL trong hợp ngữ 8051 thực hiện điều gì?

a)

Gọi chương trình con tại địa chỉ 8-bit

b)

Kết thúc chương trình con

c)

Gọi chương trình con tại địa chỉ 16-bit

d)

Chuyển giá trị giữa các thanh ghi

94.

Trong cấu trúc chương trình hợp ngữ 8051, chỉ thị nào thường được sử dụng để xác định địa chỉ bắt đầu của mã lệnh?

a)

ND

b)

MOV

c)

DB

d)

ORG

95.

Trong hợp ngữ 8051, lệnh ADD được sử dụng để thực hiện thao tác gì?

a)

Cộng hai giá trị

b)

Trừ hai giá trị

c)

Di chuyển dữ liệu

d)

So sánh giá trị

96.

Lệnh END trong chương trình hợp ngữ 8051 được sử dụng để làm gì?

a)

Đặt giá trị ban đầu cho thành ghi

b)

Xác định vị trí bắt đầu của chương trình

c)

Kết thúc chương trình

d)

Xóa nội dung thành ghi

97.

Lệnh ANL trong hợp ngữ 8051 được sử dụng để thực hiện phép toán nào?

a)

Phép OR

b)

Phép AND

c)

Phép XOR

d)

Phép NOT

98.

Trong hợp ngữ 8051, chương trình cần được thiết kế để thực hiện chức năng gì?

a)

Lưu trữ dữ liệu

b)

Xóa dữ liệu trong bộ nhớ

c)

Tăng hiệu suất xử lý

d)

Tách biệt các nhiệm vụ cụ thể để tái sử dụng

99.

Điều gì xảy ra khi thực hiện lệnh LCALL SUB1 trong hợp ngữ 8051?

a)

Chương trình nhảy đến chương trình con SUB1 và tiếp tục thực thi

b)

Chương trình nhảy đến SUB1 và không quay lại chương trình chính

c)

Dừng chương trình hiện tại và gọi B1

d)

Thực hiện lệnh đầu tiên trong chương trình chính

100.

Ý nghĩa của khởi tạo COUNT 10 trong chương trình hợp ngữ 8051 là gì?

a)

Tạo một biến có giá trị mặc định là 10

b)

Lưu giá trị 10 vào thành ghi COUNT

c)

Đặt hằng số COUNT có giá trị 10

d)

Chỉ định địa chỉ bộ nhớ cho COUNT

101.

Trong lệnh MOV R2, COUNT, nếu COUNT được khởi tạo là 05H, thì kết quả của lệnh này là gì?

a)

Giá trị trong R2 được lưu vào COUNT

b)

Thành ghi R2 nhận giá trị 05H

c)

Giá trị trong COUNT được nhân với R2

d)

R2 được xóa về 0

102.

Lệnh ADD A, COUNT thực hiện gì nếu COUNT là hằng số đã khởi tạo bằng EQU?

a)

Thực hiện phép cộng tức thì với giá trị trong thành ghi A

b)

Lưu giá trị COUNT vào A

c)

Thực hiện phép nhân giữa A và COUNT

d)

Cộng giá trị của COUNT vào A

103.

Khi sử dụng lệnh RET, CPU sẽ thực hiện thao tác gì?

a)

Quay lại vị trí tiếp theo trong chương trình chính

b)

Tiếp tục thực hiện chương trình còn lại

c)

Lặp lại chương trình còn lại

d)

Kết thúc chương trình chính

104.

Ý nghĩa của lệnh PUSH ACC trong hợp ngữ 8051 là gì?

a)

Lấy giá trị từ stack và lưu vào thanh ghi A

b)

Ghi giá trị tức thì vào thanh ghi A

c)

Lưu giá trị của thanh ghi A vào stack

d)

Tăng giá trị của thanh ghi A

105.

Khi thực hiện lệnh POP ACC, điều gì sẽ xảy ra?

a)

Giá trị của thanh ghi A bị xóa

b)

Giá trị từ stack được lấy và lưu vào thanh ghi A

c)

Giá trị từ thanh ghi A được đẩy vào stack

d)

Tất cả giá trị trong stack bị xóa

106.

Cấu trúc nào được sử dụng để tái sử dụng đoạn mã trong chương trình hợp ngữ 8051?

a)

Chương trình con

b)

Thanh ghi đệm

c)

Bộ định thời

d)

Ngắt ngoài

107.

Điều gì xảy ra nếu lệnh JMP END_LOOP được thực thi trong chương trình hợp ngữ 8051?

a)

CPU tiếp tục thực hiện lệnh tiếp theo

b)

CPU quay lại đầu chương trình

c)

CPU dừng chương trình hiện tại

d)

CPU nhảy không điều kiện đến nhãn END_LOOP

108.

Chỉ thị DB trong hợp ngữ 8051 thường được sử dụng để làm gì?

a)

Khởi tạo biến

b)

Kết thúc chương trình

c)

Khởi tạo dữ liệu hằng trong bộ nhớ

d)

Xóa giá trị trong thanh ghi

109.

Chức năng của cổng P0 trong 8051 là gì?

a)

Cổng I/O hai chiều và bus địa chỉ/bus dữ liệu

b)

Chỉ sử dụng làm cổng xuất dữ liệu

110.

Chức năng của cổng P0 trong 8051 là gì?

a)

Cổng I/O hai chiều và bus địa chỉ/bus dữ liệu

b)

Chỉ sử dụng làm cổng xuất dữ liệu

c)

Chỉ sử dụng làm cổng nhập dữ liệu

d)

Cổng điều khiển chế độ ngắt

111.

Cổng P1 trong 8051 thường được sử dụng với mục đích gì?

a)

Kết nối bộ nhớ ngoài

b)

Làm bus điều khiển

c)

Điều khiển ngắt ngoài

d)

Là cổng I/O độc lập

112.

Cổng P2 của vi xử lý 8051 thường được sử dụng làm bus địa chỉ khi nào?

a)

Khi kết nối với thiết bị ngắt ngoài

b)

Khi 8051 truy cập bộ nhớ ngoài

c)

Khi sử dụng định thời

d)

Khi lập trình cổng nối tiếp

113.

Tại sao cần sử dụng điện trở kéo lên (pull-up resistor) với cổng P0?

a)

Để giảm nhiễu tín hiệu

b)

Để tăng tốc độ xử lý tín hiệu

c)

Vì P0 không tích hợp sẵn điện trở kéo lên

d)

Để hỗ trợ truy cập bộ nhớ ROM

114.

Cổng P3 của 8051 có thể thực hiện chức năng gì ngoài vai trò cổng I/O?

a)

Điều khiển ngắt, truyền thông nối tiếp và điều khiển bộ đếm

b)

Truy cập bộ nhớ ROM ngoài

c)

Làm bus địa chỉ khi

d)

Điều khiển bộ nhớ RAM nội

115.

Lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) đặt 8 bit của cổng P1 về 0.

a)

MOV P1, #0

b)

SETB P1

c)

MOVC P1, 0

d)

XRL P1, 0

116.

Lệnh nào đúng để (giả thiết dấu chấm phẩy nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) nhảy đến nhãn CHECK nếu bit P3.2 được thiết lập.

a)

CJNE P3.2, #1, CHECK

b)

SETB P3.2; SJMP CHECK

c)

MOV C, P3.2; JC CHECK

d)

JB P3.2, CHECK

117.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) gửi dữ liệu trong thanh ghi A tới cổng P2.

a)

MOV A, P2

b)

MOV P2, A

c)

ORL P2, A

d)

S TB P2

118.

Lệnh nào đúng để (giả thiết dấu chấm phẩy. nếu có thì dùng để phân tách 2 lệnh trên cùng 1 dòng) bật bit P1.5 và giữ nguyên các bit khác của cổng P1.

a)

MOV P1.5, #1

b)

ORL P1, #20H

c)

ANL P1, #DFH

d)

SETB P1.5

119.

Đáp án nào đúng khi thực hiện đoạn mã lệnh sau

MOV A, #0FFH

MOV P0, A

a)

Có lỗi vì P0 không hỗ trợ giá trị 0FFH

b)

Không có lỗi nhưng cần sử dụng điện trở kéo lên P0

c)

Có lỗi vì P0 không hỗ trợ xuất dữ liệu

d)

Có lỗi sai tên thanh ghi A

120.

Tại sao lệnh sau lại có lỗi khi thực thi?

MOV A,P1

CPL P1

a)

Vì toán hạng của lệnh MOV không đúng cú pháp

b)

Vì lệnh MOV A không hỗ trợ dữ liệu từ cổng P1

c)

Vì lệnh CPL không hỗ trợ toán hạng có kích thước 8 bit

d)

Vì CPL không hỗ trợ địa chỉ trực tiếp P1

121.

Điều gì xảy ra nếu không đặt giá trị ban đầu cho P3 trước khi sử dụng và sau khi 8051 bị reset?

a)

Các thiết bị ngoại vi không hoạt động

b)

Chương trình bị treo

c)

Giá trị ngẫu nhiên, hoặc giá trị lưu từ lệnh trước có thể ảnh hưởng đến kết quả thực thi của lệnh hiện tại

d)

P3 tự động đặt về giá trị mặc định

122.

Lỗi gì có thể xảy ra khi xuất dữ liệu tới cổng P2 mà không kiểm tra kết nối bộ nhớ ngoài?

a)

Dữ liệu có thể bị ghi đè bởi bus địa chỉ

b)

Không có lỗi xảy ra

c)

P2 tự động xử lý dữ liệu

d)

P2 chỉ hỗ trợ đầu vào

123.

Nhận xét nào đúng với đoạn mã sau:

SETB P0.7

MOV A, P0

a)

Giá trị P0.7 không được gán đúng cách

b)

Điện trở kéo lên cần được sử dụng cho P0

c)

Không thể đọc dữ liệu từ P0 sau khi thiết lập P0.7

d)

Cần gán giá trị cho A trước

124.

Khi đọc dữ liệu từ cổng P3, điều gì có thể xảy ra nếu không cấu hình chính xác?

a)

Giá trị luôn bằng 0

b)

Giá trị luôn bằng 1

c)

Một số bit có thể bị ảnh hưởng bởi chức năng đặc biệt của P3

d)

P3 tự động cấu hình

125.

Lệnh nào sau đây thực hiện đặt 4 bit cuối của P1 bằng 1?

a)

ORL P1, #0FH

b)

ANL P1, #0FH

c)

ORL P1, #0F0H

d)

ANL P1, #0F0H

126.

Tại sao cần kiểm tra trạng thái cổng P0 trước khi gửi dữ liệu ra ngoài?

a)

Vì P0 có thể được sử dụng làm bus dữ liệu/bus địa chỉ

b)

Vì P0 không hỗ trợ đầu vào

c)

Vì P0 không hỗ trợ tín hiệu ngắt

d)

Vì P0 không có chức năng đặc biệt

127.

Nhận xét nào sau đây là đúng nhất nếu không cấu hình đúng bit EX0 hoặc EX1 trước khi sử dụng ngắt ngoài?

a)

Ngắt ngoài luôn được kích hoạt

b)

Ngắt ngoài không thể kích hoạt

c)

Giá trị P3.2 hoặc P3.3 luôn bằng 0

d)

Giá trị P3.2 hoặc P3.3 luôn bằng 1

128.

Đoạn mã sau có thể gặp vấn đề gì khi sử dụng P2 để đọc dữ liệu từ thiết bị ngoại vi?

MOV A, P2

a)

P2 không hỗ trợ đầu vào từ thiết bị ngoại vi

b)

Cần cấu hình P2 trước khi đọc dữ liệu

c)

P2 có thể bị ảnh hưởng bởi bus địa chỉ cao khi kết nối bộ nhớ ngoài

d)

P2 chỉ hỗ trợ đầu ra