Tải bản đầy đủ (.docx) (17 trang)

25. Lập trình hệ thống - IT17.012

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (147.21 KB, 17 trang )

1 Bài 1: Ngôn ngữ Assembly và cách lập

Tham khảo: Slide số 31, Bài học số 1.

trình

CX chứa số lần lặp của lệnh LOOP. Vậy CX có thể là một
giá trị

Bước nhảy của các lệnh nhảy có điều kiện phải

Chọn một câu trả lời:

Chọn một câu trả lời:

a. 1≤CX≤32767

a. 64k

b. Tất cả các phương án

b. Không giới hạn

c. Bất kỳ số nào

c. 128 byte

d. CX≥0

Tham khảo: Slide số 29, Bài học số 1.
Các lệnh trong nhóm di chuyển dữ liệu khi thực hiện có


làm thay đổi trạng thái các bit cờ khơng?
Chọn một câu trả lời:
a. Tùy tình huống

Tham khảo: Trang 26 phần phụ lục A, Tài liệu học tập “Lập
trình hệ thống”, Bản Text
Directive nào xác lập biến 2 byte ?
Chọn một câu trả lời:
a. DD

b. Khơng
c. Có
Tham khảo: Trang số 2 phần phụ lục A, Tài liệu học tập
“Lập trình hệ thống”, Bản Text.

b. DW
c. DB

Các thanh ghi của máy tính 32 bit có độ dài bao nhiêu bit?

Tham khảo: Slide số 32, Bài học số 1.

Chọn một câu trả lời:

Đây là loại khai báo biến gì ?

a. Tất cả đều có độ dài 32 bit
b. Tất cả các thanh ghi đều có độ dài 32 bit trừ các
thanh ghi đoạn (segment) vẫn là 16 bit


.DATA
A DW 10 dup(?)
Chọn một câu trả lời:

c. Tất cả đều có độ dài 16 bit
Tham khảo: Slide số 10, Bài học số 1.
Có thể sử dụng dạng cơ số nào để thể hiện 1 hằng số
trong lập trình Assembly?

a. A là biến số có độ dài 10 byte
b. A là biến số 2 byte được gán giá trị ban đầu là 10

a. Tất cả các dạng cơ số nêu trên

c. A là 1 trường số có 10 thành phần mà mỗi thành
phần là 2 byte không xác lập giá trị ban đầu

b. Dạng nhị phân (cơ số binary)

Tham khảo: Slide số 33, Bài học số 1.

c. Dạng bát phân (cơ số 8)
d. Dạng hexa (cơ số 16)

Hai thanh ghi nào trong các tổ hợp sau trỏ đến địa chỉ
vùng nhớ chứa mã lệnh sẽ được thi hành kế tiếp ?

e. Dạng thập phân (cơ số 10)

Chọn một câu trả lời:


Chọn một câu trả lời:

Tham khảo: Trang số 22, Tài liệu học tập “Lập trình hệ
thống”, Bản Text.

a. SS:SP

Có thể sử dụng mấy dạng directive điều khiển segment
trong khi viết chương trình hợp ngữ ?

c. ES:DI

Chọn một câu trả lời:
a. 3 dạng
b. Chỉ 1 dạng đơn giản
c. 2 dạng: đơn giản và chuẩn
d. Chỉ 1 dạng chuẩn

1

b. CS:IP
d. DS:SI
Tham khảo: Slide số 9, Bài học số 1.
Khi viết một chương trình hợp ngữ có thể sử dụng 2 loại
directive điều khiển segment là dạng đơn giản
(.MODEL, .STACK, .DATA, .CODE) và dạng chuẩn
(SEGMENT, GROUP, ASSUME). Loại nào có thể xử lý mọi
tình huống về điều khiển segment ?



Chọn một câu trả lời:

Chọn một câu trả lời:

a. Cả hai dạng

a. Có điều kiện và bước nhảy là khơng giới hạn

b. Dạng chuẩn

b. Khơng điều kiện và có bước nhảy 64 k

c. Dạng dơn giản
Tham khảo: Slide số 37, Bài học số 1.
Khi viết một chương trình hợp ngữ sử dụng directive điều
khiển segment dạng đơn giản và có khai báo biến thì
người lập trình có phải đưa phần địa chỉ segment của dữ
liệu vào thanh ghi DS ?
Chọn một câu trả lời:
a. Tùy tình huống
b. Có và nhờ 2 lệnh sau :
mov reg16,data
mov DS,reg16
c. Có và nhờ 2 lệnh sau :
mov reg16,@data mov DS,reg16
d. Không, hệ điều hành sẽ tự đưa

Tham khảo: Slide số 28, Bài học số 1.
Lệnh SAR AX,1 (dịch phải một lần nội dung có trong thanh

ghi AX) có nghĩa gì?
Chọn một câu trả lời:
a. Chia đơi giá trị có trong AX nếu AX chứa số nguyên
b. Tất cả các phương án
c. Chia đôi làm trịn dưới giá trị có trong AX nếu AX
chứa số ngun
d. Chỉ chia đơi làm trịn dưới giá trị có trong AX nếu AX
chứa số nguyên dương
Tham khảo: Slide số 24, Bài học số 1.
Lệnh SHR AX,1 (dịch phải một lần nội dung có trong thanh
ghi AX) có ý nghĩa gì?

Tham khảo: Slide số 33, Bài học số 1.

Chọn một câu trả lời:

Khi viết một chương trình hợp ngữ sử dụng directive điều
khiển segment dạng chuẩn và có khai báo biến thì người
lập trình có phải đưa phần địa chỉ segment của dữ liệu vào
thanh ghi DS ?

a. Chia đôi giá trị có trong AX nếu AX chứa số nguyên
dương

Chọn một câu trả lời:

c. Chia đơi làm trịn dưới giá trị có trong AX nếu AX
chứa số nguyên

a. Có và nhờ 2 lệnh sau :

mov reg16,@data mov DS,reg16

b. Chia đôi làm trịn dưới giá trị có trong AX nếu AX
chứa số nguyên dương

d. Tất cả các phương án
Tham khảo: Slide số 23, Bài học số 1.

b. Tùy tình huống

Lệnh SHL AX,1 (dịch trái một lần nội dung có trong thanh
ghi AX) có ý nghĩa gì?

c. Khơng, hệ điều hành sẽ tự đưa

Chọn một câu trả lời:

d. Có và nhờ 2 lệnh sau :
mov reg16,data
mov DS,reg16
Tham khảo: Slide số 38, Bài học số 1.
Lệnh AND AX,AX có nghĩa gì khơng?
Chọn một câu trả lời:
a. Giá trị AX không đổi song dựng trạng thái các bit cờ,
phục vụ các lệnh nhảy có điều kiện

a. Chia đơi giá trị có trong AX
b. Nhân đơi giá trị có trong AX với điều kiện bit cao
nhất là 0 (AX chứa số nguyên dương)
c. Nhân đôi giá trị có trong AX

d. Tất cả các phương án
Tham khảo: Slide số 23, Bài học số 1.
Thường có mấy dạng biểu diễn địa chỉ một ô nhớ ?
Chọn một câu trả lời:

b. Vô nghĩa

a. 1 dạng duy nhất là lơgic

c. Xóa trạng thái các bit cờ

b. 2 dạng: dạng lôgic và dạng vật lý

d. Tất cả các phương án

c. 1 dạng duy nhất là vật lý

Tham khảo: Slide 21, Bài học số 1

Tham khảo: Slide số 10, Bài học số 1.

Lệnh nhảy JMP là loại lệnh nhảy gì và có bước nhảy bao
nhiêu byte?

Tốn hạng 2 byte có thể chứa một số nguyên có giá trị bao
nhiêu?

2



Chọn một câu trả lời:
a. Từ số 0 đến số 65535
b. Từ số -32768 đến số 0
c. Từ số -32768 đến số 32768
d. Từ -32768 đến 32767
e. Từ số -32767 đến số 32768
Tham khảo: Ví dụ ở trang 52, Tài liệu học tập “Lập trình hệ
thống”, Bản Text.
Trong các lệnh MUL/IMUL (16bit với 16 bit) thì một số
hạng nhân có bắt buộc nằm trong AX hay không ?
Chọn một câu trả lời:

Chương trình đa tệp thuần túy hợp ngữ thì với nhãn là tên
các biến nhớ thì việc khai báo EXTRN các nhãn dùng
chung đó được tiến hành ở đâu ?
Chọn một câu trả lời:
a. Ở module nào cũng được
b. Chỉ ở module chương trình con
c. Chỉ ở module của chương trình chính
Tham khảo: Slide 32, Bài học số 2
Chương trình con và macro thì loại nào cho phép có đối?
Chọn một câu trả lời:
a. Chương trình con

a. Có

b. MACRO

b. Khơng


c. Cả hai

c. Tùy tình huống
Tham khảo: Slide số 19, Bài học số 1.

2 Bài 2: Chương trình con và Chương
trình đa tệp thuần túy Assembly
Chương trình đa tệp thuần túy hợp ngữ phải sử dụng các
directive nào để các nhãn dùng (các nhãn mà các module
đều dùng) chung hiểu nhau ?
Chọn một câu trả lời:
a. Chỉ sử dụng directive PUBLIC
b. Tất cả các phương án
c. Chỉ sử dụng directive EXTRN
Tham khảo: Slide 32, Bài học số 2
Chương trình đa tệp thuần túy hợp ngữ thì module nào
khai báo PUBLIC cho tên chương trình con mà các
module đều dùng ?
Chọn một câu trả lời:
a. Module nào cũng được
b. Module sử dụng chương trình con (module gọi
chương trình con)

Tham khảo: Slide 3 và 12, Bài học số 2
Chương trình con và macro thì loại nào thực hiện nhanh
hơn?
Chọn một câu trả lời:
a. MACRO
b. Chương trình con
c. Bằng nhau

Tham khảo: Slide 15, Bài học số 2
Chương trình con và macro thì loại nào tiết kiệm vùng
nhớ?
Chọn một câu trả lời:
a. MACRO
b. Bằng nhau
c. Chương trình con
Tham khảo: Slide 15, Bài học số 2
Directive INCLUDE chèn nội dung 1 tệp ngồi vào chương
trình đang viết. Nếu sử dụng directive INCLUDE nhiều lần
nội dung 1 tệp ngồi vào chương trình thì trong nội dung
của tệp ngồi có cho phép có nhãn nhảy hay khơng ?
Chọn một câu trả lời:

c. Module viết chương trình con
Tham khảo: Slide 32, Bài học số 2

a. Có

Chương trình đa tệp thuần túy hợp ngữ thì với nhãn là tên
các biến nhớ thì việc khai báo PUBLIC các nhãn dùng
chung đó được tiến hành ở đâu ?

c. Tùy tình huống

Chọn một câu trả lời:

Tham khảo: Suy luận từ tên nhãn là duy nhất trong một
chương trình


a. Chỉ ở module chương trình con

Giả thiết có 1 đoạn chương trình như sau :

b. Chỉ ở module của chương trình chính

.DATA

c. Ở module nào cũng được

A DW 100 dup(?)

Tham khảo: Slide 32, Bài học số 2

3

b. Không

.CODE


PS:

c. phân đoạn và đó là code, data và stack segment

LEA BX,A
Vậy nội dung thanh ghi BX chứa gì ?
Chọn một câu trả lời:
a. Giá trị A[0]
b. Phần địa chỉ OFFSET của A[99] (địa chỉ thành phần

cuối cùng của trường)
c. Phần địa chỉ OFFSET của A[0] (địa chỉ thành phần
đầu tiên của trường)
Tham khảo: Suy luận từ khai báo một trường số và Bài tập
ở trang 93,94 của Tài liệu học tập “Lập trình hệ thống”,
Bản Text ….
Khối lệnh trong thân MACRO có cho phép có nhãn nhảy
hay khơng ?
Chọn một câu trả lời:
a. Khơng
b. Có trong bất kỳ tình huống nào
c. Có song nhãn đó phải được khai báo sau directive
LOCAL
Tham khảo: Slide 14, Bài học số 2
Liên kết giữa ngôn ngữ bậc cao và hợp ngữ theo cách
Inline Assembly thực hiện như thế nào ?
Chọn một câu trả lời:
a. Chèn khối lệnh ngôn ngữ bậc cao vào chương trình
được viết bằng hợp ngữ
b. Chèn khối lệnh hợp ngữ vào chương trình được viết
bằng ngơn ngữ bậc cao
Tham khảo: Slide 3, Bài học số 2
Một chương trình dạng .COM có bắt buộc sử dụng
directive ORG 100h khơng?
Chọn một câu trả lời:
a. Không cần

Tham khảo: Slide 17, Bài học số 2
Một chương trình dạng .COM, nếu có khai báo biến thì
biến sẽ được cấp phát ơ nhớ của vùng nhớ dành cho

phân đoạn (seggment) nào?
Chọn một câu trả lời:
a. Phân đoạn vùng nhớ dành cho dữ liêu (data
segment)
b. Phân đoạn vùng nhớ dành cho mã máy của CT
(code segment)
c. Phân đoạn vùng nhớ dành cho ngăn xếp (stack
segment)
Tham khảo: Slide 17, Bài học số 2
Một chương trình dạng .EXE có thể chứa ít nhất bao nhiêu
phân đoạn (segment) ?
Chọn một câu trả lời:
a. 1 phân đoạn
b. 2 phân đoạn
c. 3 phân đoạn
Tham khảo: Slide 17, Bài học số 2
Thay vì phải viết đi viết lại nhiều lần 1 khối lệnh trong 1
chương trình thì sử dụng directive INCLUDE để chèn khối
lệnh đó từ 1 tệp ngồi vào chương trình đang viết. Hãy
cho biết khi sử dụng directive INCLUDE như vậy thì có tiết
kiệm được vùng nhớ hay khơng khi chèn khối lện đó nhiều
lần?
Chọn một câu trả lời:
a. Tùy tình huống
b. Có
c. Khơng
Tham khảo: Suy luận cơ chế thực hiện từ Slide 16, Bài
học số 2
Trong chương trình đa tệp khi có 1 tệp sai khi dịch thì
trước khi liên kết phải dịch lại như thế nào ?

Chọn một câu trả lời:

b. Tùy tình huống

a. Chỉ cần dịch lại tệp có sai khi dịch

c. Bắt buộc phải có

b. Dịch lại tất cả các tệp

Tham khảo: Slide 18, Bài học số 2

Tham khảo: Slide 38, Bài học số 2

Một chương trình dạng .COM có thể chứa bao nhiêu phân
đoạn (seggment) và đó là phân đoạn nào?

Trong hai cách trở về DOS từ một chương trình hợp ngữ
sau:

Chọn một câu trả lời:

Cách 1: MOV AH,4CH

a. 2 phân đoạn và đó là code segment và data
segment

INT 21H

b. 1 phân đoạn duy nhất và đó là code segment


4

Cách 2: INT 20H
thì chương trình dạng .COM có thể sử dụng cách nào?


Chọn một câu trả lời:
a. Cách 2
b. Cả hai cách
c. Cách 1
Tham khảo: Slide 18, Bài học số 2
Trong hợp ngữ một cơng việc được thể hiện bằng một
chương trình con có thể thay bằng 1 macro hoặc ngược
lại được khơng?
Chọn một câu trả lời:
a. Tùy tình huống
b. Được
c. Khơng
Tham khảo: Suy luận từ bài học về CT con và MACRO
Với chương trình hợp ngữ được viết theo khai báo
directive điều khiển segment dạng chuẩn thì khi viết
chương trình con khơng khai báo tường minh NEAR/FAR
thì mặc định sẽ là gì?
Chọn một câu trả lời:
a. Tùy tình huống
b. NEAR
c. FAR
Tham khảo: Slide 4, Bài học số 2
Với chương trình hợp ngữ được viết theo khai báo

directive điều khiển segment dạng đơn giản, khi viết
chương trình con khơng khai báo tường minh NEAR/FAR
thì trong các trường hợp khai báo sau chương trình con là
NEAR khi nào ?
Chọn một câu trả lời:
a. Loại nào cũng được

3 Bài 3: Liên kết ngôn ngữ Assembly với
các ngơn ngữ bậc cao
Cần viết 1 chương trình con để giải quyết cùng một vấn
đề. Anh A “Tôi sẽ viết chương trình con khơng đối”. Anh B
“Tơi sẽ viết chương trình con có đối”. Ai đúng, ai sai ?
Chọn một câu trả lời:
a. Cả hai cùng có thể
b. Anh A đúng
c. Anh B đúng
Tham khảo: Suy luận từ ngun lý lập trình (bất kỳ ngơn
ngữ nào)
Chương trình con thuần túy hợp ngữ (cả chương trình
chính lẫn chương trình con đều là hợp ngữ) thì khơng có
đối. Vậy khi liên kết ngơn ngữ bậc cao với ngơn ngữ
Assembly thì ngơn ngữ bậc cao có thể giả thiết chương
trình con Assembly có đối hay khơng? Ai qui định số lượng
đối và kiểu đối ?
Chọn một câu trả lời:
a. Có và số lượng đối và kiểu đối do hợp ngữ quyết
định
b. Khơng
c. Có và số lượng đối và kiểu đối do ngôn ngữ bậc cao
giả thiết

Tham khảo: Slide 13, Bài học số 3
Khi liên kết ngôn ngữ C/C++ với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ C/C++ và tệp của hợp ngữ, với giả
thiết chương trình con viết bằng hợp ngữ có đối thì khi
C/C++ gọi chương trình con đó các tham số thực sẽ được
đưa vào ngăn xếp theo thứ tự như thế nào ?
Chọn một câu trả lời:

b. .MODEL large/
medium/ huge

a. Từ phải sang trái

c. .MODEL tiny/
small/compact

b. Từ trái sang phải

Tham khảo: Slide 4, Bài học số 2

c. Tùy tình huống

Với chương trình thuần túy hợp ngữ (chương trình chính
và chương trình con đều là hợp ngữ) thì việc chuyển giao
tham số giữa chương trình chính và chương trình con
thường có thể tiến hành như thế nào ?
Chọn một câu trả lời:
a. Thông qua ngăn xếp

Khi liên kết với ngơn ngữ bậc cao với ngơn ngữ Assembly

thì địa chỉ lệnh tiếp theo được cất vào ngăn xếp gồm mấy
byte?
Chọn một câu trả lời:

b. Chỉ thông qua biến nhớ

a. 4 byte

c. Thông qua thamh ghi, biến nhớ

b. 2 byte

d. Chỉ thông qua thamh ghi
Tham khảo: Slide 6, Bài học số 2

5

Tham khảo:Slide 25, Bài học số 3

c. Nếu chương trình con là NEAR thì 2 byte, cịn nếu
chương trình con là FAR thì 4 byte
Tham khảo: Suy luận, Slide 14, Bài học số 3


Khi liên kết ngôn ngữ bậc cao với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ bậc cao và tệp của hợp ngữ thì
các nhãn dùng chung (ngơn ngữ bậc cao và hợp ngữ đều
dùng). Vậy nhãn ở đây là gì ?
Chọn một câu trả lời:
a. Tên nhãn nhảy

b. Tên ký hiệu (symbol) thay cho 1 hằng số

c. Không cần
Tham khảo:Slide 8, Bài học số 3
Khi liên kết ngôn ngữ bậc cao với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ bậc cao và tệp của hợp ngữ, với
giả thiết hàm do hợp ngữ viết có đối thì chương trình con
của hợp ngữ thường sử dụng nhất thanh ghi nào làm con
trỏ để thâm nhập vào các biến (tham số thực đã được đưa
vào ngăn xếp) ?
Chọn một câu trả lời:

c. Tên biến nhớ, tên chương trình con và tên ký hiệu
thay cho 1 hằng số
d. Tên chương trình con

a. SP
b. BP
c. BX, SI hoặc DI
Tham khảo:Slide 14, Bài học số 3

e. Tên biến nhớ
Tham khảo:Slide 8 và suy luận, Bài học số 3
Khi liên kết ngôn ngữ bậc cao với hợp ngữ theo cách viết
riêng biệt tệp ngơn ngữ bậc cao và tệp của hợp ngữ thì
với các nhãn dùng chung (ngôn ngữ bậc cao và hợp ngữ
đều dùng) hợp ngữ có cần khai báo tường minh PUBLIC
để cho phép ngôn ngữ bậc cao dùng các nhãn đó ?
Chọn một câu trả lời:
a. Tùy tình huống


Khi liên kết ngôn ngữ bậc cao với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ bậc cao và tệp của hợp ngữ thì
trong module hợp ngữ phải sử dụng directive nào để xin
phép dùng một nhãn mà ngôn ngữ bậc cao đã xác lập và
cho phép ?
Chọn một câu trả lời:
a. Khơng cần directive nào cả
b. Directive EXTRN

b. Tùy tình huống
c. Cần

c. Directive PUBLIC

Tham khảo:Slide 9, Bài học số 3

Tham khảo:Slide 9, Bài học số 3

Khi liên kết ngôn ngữ bậc cao với hợp ngữ theo cách viết
riêng biệt tệp ngơn ngữ bậc cao và tệp của hợp ngữ thì
với các nhãn dùng chung (ngôn ngữ bậc cao và hợp ngữ
đều dùng) ngơn ngữ bậc cao có cần khai báo tường minh
PUBLIC để cho phép hợp ngữ dùng các nhãn đó ?

Tên hàm Assembly khi liên kết với ngơn ngữ C và với
ngơn ngữ C++ có khác nhau khơng?

Chọn một câu trả lời:
a. Tùy tình huống

b. Khơng cần vì bất kỳ một khai báo nào của n/n bậc
cao đều cho phép các module khác dùng
c. Cần
Tham khảo:Slide 8, Bài học số 3
Khi liên kết ngôn ngữ bậc cao với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ C/C++ bậc cao và tệp của hợp
ngữ thì với các nhãn dùng chung (ngôn ngữ C/C++ và hợp
ngữ đều dùng), ngôn ngữ C/C++ có cần khai báo tường
minh EXTERNAL (extern) để xin phép dùng các nhãn mà
hợp ngữ đã xác lập và cho phép ?
Chọn một câu trả lời:
a. Cần
b. Tùy tình huống

Chọn một câu trả lời:
a. Có: Khi liên kết với C thì tên hàm Assembly thêm
dấu_ (underscore) trước tên hàm, cịn với C++ thì thêm
dấu @ trước tên hàm và $q… sau tên hàm
b. Không, cả hai trường hợp đều thêm dấu _
(underscore) trước tên hàm
Tham khảo: Slide 9, 15, Bài học số 3
Tên hàm Assembly khi liên kết với ngơn ngữ C++ với
trường hợp hàm có 1 đối là tham biến thì thêm gì sau
@tên hàm?
Chọn một câu trả lời:
a. Thêm $qpi với đối là con trỏ NEAR (ví dụ:
@tênhàm$qpi) hoặc $qni với đối là con trỏ FAR (ví dụ:
@tênhàm$qni)
b. Thêm $qi (ví dụ: @tênhàm$qi)
c. Khơng thêm gì cả

d. Thêm $qv (ví dụ: @tênhàm$qv)
Tham khảo: Slide 9, Bài học số 3

6


Tên hàm Assembly khi liên kết với ngôn ngữ C++ với
trường hợp hàm khơng đối thì thêm gì sau tên hàm?
Chọn một câu trả lời:
a. Thêm $qv (ví dụ: @tênhàm$qv)

Khi liên kết ngôn ngữ C/C++ với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ C/C++ và tệp của hợp ngữ thì
trong module hợp ngữ có phải thêm dấu gì trước các biến
dùng chung với C/C++ ?. (SAI)
Chọn một câu trả lời:

b. Khơng thêm gì cả
c. Thêm $qni (ví dụ: @tênhàm$qni)
d. Thêm $qi (ví dụ: @tênhàm$qi)

a. Thêm dấu _ (dấu underscore) trước tên biến và
thêm ở mọi nơi mà biến đó xuất hiện trong module hợp
ngữ

Tham khảo: Slide 9, Bài học số 3
Tên hàm Assembly khi liên kết với ngôn ngữ C++ với
trường hợp hàm có 1 đối là tham trị thì thêm gì sau @tên
hàm?
Chọn một câu trả lời:


b. Khơng cần thêm gì
c. Thêm dấu $ (SAI)

b. Thêm $qni (ví dụ: @tênhàm$qni)

Khi liên kết ngơn ngữ C++ với hợp ngữ theo cách viết
riêng biệt tệp ngôn ngữ C++ và tệp của hợp ngữ thì trong
module hợp ngữ có phải thêm dấu gì trước tên chương
trình con ? (SAI)

c. Thêm $qv (ví dụ: @tênhàm$qv)

Chọn một câu trả lời:

a. Thêm $qi (ví dụ: @tênhàm$qi)

d. Khơng thêm gì cả
Tham khảo: Slide 9, Bài học số 3
Thường có mấy cách để liên kết ngôn ngữ bậc cao với
hợp ngữ ?

a. Thêm @ vào trước tên chương trình con
b. Thêm dấu _ (dấu underscore) vào trước tên chương
trình con (SAI)

Chọn một câu trả lời:
a. 1
b. 2
c. 3

Tham khảo: Slide 2, Bài học số 3
Tính giá trị an bằng cách liên kết ngôn ngữ C/C++ với hợp
ngữ theo cách viết tách biệt tệp C/C++ và tệp Assembly
theo sự phân cơng sau:

c. Khơng cần thêm gì
Tính giá trị an bằng cách liên kết ngôn ngữ C/C++ với hợp
ngữ theo cách viết tách biệt tệp C/C++ và tệp Assembly
theo sự phân công sau:
Module C/C++ thực hiện các nhiệm vụ sau :
Nhận a, n từ bàn phím
Gọi chương tình con tính an do module hợp ngữ viết

Module C/C++ thực hiện các nhiệm vụ sau :

Hiện kết quả

Nhận a, n từ bàn phím

Module Assembly thực hiện nhiệm vụ sau : viết chương
trình con tính an

Gọi chương tình con tính an do module hợp ngữ viết
Hiện kết quả
Module Assembly thực hiện nhiệm vụ sau : viết chương
trình con tính an
Với giả thiết hàm con tính an do Assembly viết khơng đối
thì chúng ta phải khai báo các biến a, n ở đâu?
Chọn một câu trả lời:
a. Biến cục bộ

b. Biến toàn cục (biến ngoài)
c. Khai báo ở đâu cũng được
Tham khảo:Slide 20, Bài học số 3

7

Với giả thiết hàm do Assembly viết có 2 đối (a, n sẽ là
tham số thực của hàm) thì trong module Assembly (viết
hàm) có phải xin phép được dùng giá trị các biến a và n
(sử dụng directive EXTRN) hay không? (SAI)
Chọn một câu trả lời:
a. Có thể và khơng bắt buộc (SAI)
b. Bắt buộc phải có
c. Khơng, hàm viết bằng Assembly phải vào ngăn xếp
lấy giá trị a và n
Tính giá trị an bằng cách liên kết ngôn ngữ C/C++ với hợp
ngữ theo cách viết tách biệt tệp C/C++ và tệp Assembly
theo sự phân công sau:


Module C/C++ thực hiện các nhiệm vụ sau:

Tham khảo: Slide 11, Bài học số 4

Nhận a, n từ bàn phím

Byte có địa chỉ bao nhiêu của vùng dữ liệu ROM BIOS cho
biết các thông tin liên quan đến ổ mềm (có hay khơng và
nếu có thì bao nhiêu ổ), FPU, số lượng kRAM có thêm
trên mainboard và loại card điều khiển màn hình ?


Gọi chương tình con tính an do module hợp ngữ viết
Hiện kết quả
Module Assembly thực hiện nhiệm vụ sau: viết chương
trình con tính an
Với giả thiết hàm do Assembly viết có 2 khơng đối (a, n sẽ
là tham số thực của hàm) thì trong module C/C++ a, n phải
khai báo ở đâu?
Chọn một câu trả lời: (SAI)

Chọn một câu trả lời:
a. 0:400h
b. 0:411h
c. 0:410h
Tham khảo: Slide 10, Bài học số 4

a. Khai báo ở đâu cũng được

Các ngắt của BIOS có số ngắt bao nhiêu và mã máy của
chương trình con phục vụ ngắt nằm ở đâu?

b. Khai báo cục bộ trong main()

Chọn một câu trả lời:

c. Khai báo biến toàn cục (biến ngoài) (SAI)

a. Số ngắt từ int 20h đến int 0ffh và mã máy CT con
phục vụ ngắt nằm ROM BIOS


4 Bài 4: Ngắt - cơ chế xác lập và kích

b. Số ngắt từ int 0h đến int 1fh và mã máy CT con
phục vụ ngắt nằm ở ROM BIOS

hoạt

c. Số ngắt từ int 0h đến int 1fh và mã máy CT con
phục vụ ngắt nằm ở RAM

Bảng vectơ ngắt chứa gì và nằm ở đâu?

d. Số ngắt từ int 20h đến int 0ffh và mã máy CT con
phục vụ ngắt nằm RAM

Chọn một câu trả lời:
a. Chứa địa chỉ đầu của các chương trình con phục vụ
ngắt và nằm ở RAM
b. Chứa mã máy của các chương trình con phục vụ
ngắt và nằm ở ROM BIOS
c. Chứa mã máy lệnh đầu tiên của các chương trình
con phục vụ ngắt và nằm ở ROM hoặc RAM đều được
Tham khảo: Slide 5, Bài học số 4
Biết rằng 1 chương trình con phục vụ ngắt của hệ thống
thường có nhiều chức năng. Vậy muốn sử dụng 1 chức
năng nào đó của 1 ngắt hệ thống thì theo qui định số chức
năng sẽ được đặt vào đâu?
Chọn một câu trả lời:

Tham khảo: Slide 6, Bài học số 4

Các ngắt của DOS có số ngắt bao nhiêu và mã máy của
chương trình con phục vụ ngắt nằm ở đâu?
Chọn một câu trả lời:
a. Số ngắt từ int 0h đến int 1fh và mã máy CT con
phục vụ ngắt nằm ở ROM BIOS
b. Số ngắt từ int 20h đến int 0ffh và mã máy CT con
phục vụ ngắt nằm RAM
c. Số ngắt từ int 20h đến int 0ffh và mã máy CT con
phục vụ ngắt nằmROM BIOS
d. Số ngắt từ int 0h đến int 1fh và mã máy CT con
phục vụ ngắt nằm ở RAM

a. Thanh ghi AH

Tham khảo: Slide 6, Bài học số 4

b. Bất kỳ thanh ghi nào tùy người lập trình chọn

Chức năng nào của ngắt INT 10h cho phép hiển thị nhiều
lần1 ký tự có màu sắc lên màn hình tại vị trí con trỏ đứng ?

c. Thanh ghi AL
Tham khảo: Slide 17, Bài học số 4
Byte có địa chỉ bao nhiêu của vùng dữ liệu ROM BIOS cho
biết các thông tin liên quan đến DMA, số lượng cổng
COM, số lượng cổng LPT, cổng joystick và cổng máy in
nối tiếp ?
Chọn một câu trả lời:

Chọn một câu trả lời:

a. Chức năng 8h
b. Chức năng 0Eh
c. Chức năng 9h

a. 0:410h
b. 0:400h
c. 0:411h

8

Tham khảo: Slide 27, Bài học số 4
Chức năng nào trong các chức năng sau của ngắt INT 10h
cho phép xác lập chế độ (mode) cho màn hình ?


Chọn một câu trả lời:
a. Chức năng 0Fh
b. Chức năng 3h

Tham khảo: Slide 9, Bài học số 4
Độ lớn của bảng vectơ ngắt và vị trí của bảng vectơ ngắt?
Chọn một câu trả lời:
a. 1024 byte và nằm ở đầu vùng nhớ
b. 128 byte và nằm ở đầu vùng nhớ

c. Chức năng 0h
d. Chức năng 2h
Tham khảo: Slide 26, Bài học số 4
Chức năng nào của ngắt INT 10h cho phép hiển thị 1 ký tự
dạng teletype lên màn hình tại vị trí con trỏ đứng (khơng

làm thay đổi các thuộc tính của màn hình) ?
Chọn một câu trả lời:
a. Chức năng 9h

c. 512 byte và nằm ở cuối vùng nhớ
d. 256 byte và nằm ở cuối vùng nhớ
Tham khảo: Slide 5, Bài học số 4
Độ lớn vùng dữ liệu ROM BIOS và địa chỉ đầu vùng dữ
liệu ROM BIOS?
Chọn một câu trả lời:
a. 1024 byte RAM và địa chỉ đầu là 0:100h
b. 256 byte RAM và địa chỉ đầu là: 0:400h
c. 128 byte RAM và địa chỉ đầu là 0:0h

b. Chức năng 0Eh

Tham khảo: Slide 10, Bài học số 4

c. Chức năng 8h

Làm thế nào để xác định địa chỉ đầu của chương trình con
phục vụ ngắt ?

Tham khảo: Slide 27, Bài học số 4

Chọn một câu trả lời:

Chức năng nào của ngắt int 21h cho phép nhận 1 ký tự từ
bàn phím?


a. Nhờ directive OFFSET và SEG

Chọn một câu trả lời:

c. Nhờ directive SEG

b. Nhờ directive OFFSET

a. 0Ah

Tham khảo: Slide 8, Bài học số 4

b. 1h

Muốn xác lập một ngắt người lập trình phải tiến hành các
bước cần thiết gì ?

c. 9h
Tham khảo: Slide 20, Bài học số 4
Chức năng nào của ngắt int 21h cho phép nhận 1 xâu ký
tự từ bàn phím và để vào trong 1 vùng đệm (cho phép
đánh sai và sửa)?
Chọn một câu trả lời:

Chọn một câu trả lời:
a. Tất cả các phương án
b. Chỉ cần viết chương trình con phục vụ ngắt
c. Đặt địa chỉ đầu của chương trình con phục vụ ngắt
vào vị trí tương ứng của bảng vectơ ngắt


a. 9h

Tham khảo: Slide 8, Bài học số 4

b. 1h

Ngắt BIOS int 10h là ngắt gồm các chức năng liên quan
đến thiết bị nào ?

c. 0Ah
Tham khảo: Slide 21, Bài học số 4
Có mấy phương pháp đưa địa chỉ đầu của chương trình
con phục vụ ngắt vào vị trí tương ứng của bảng vectơ ngắt
?
Chọn một câu trả lời:
a. Chỉ có cách gián tiếp nhờ chức năng 25h của ngắt
int 21h
b. Chỉ có cách trực tiếp
c. Cả hai cách

Chọn một câu trả lời:
a. Bàn phím
b. Ổ đĩa
c. Màn hình
Tham khảo: Slide 26, Bài học số 4
Ngắt BIOS int 16h là ngắt gồm các chức năng liên quan
đến thiết bị nào ?
Chọn một câu trả lời:
a. Ổ đĩa


9


b. Màn hình
c. Bàn phím
Tham khảo: Slide 18, Bài học số 4

5 Bài 5: Các ngắt làm việc với thư mục,
tệp tin và thời gian hệ thống

Ngắt nào của DOS có các chức năng liên quan đến các
thiết bị của máy tính?

Các thiết bị vào/ra chuẩn của máy tính có thể coi là một
tệp với các thẻ tệp (file handle) mặc định. Số thẻ tệp có giá
trị bao nhiêu mặc định cho thiết bị vào chuẩn (bàn phím)?

Chọn một câu trả lời:

Chọn một câu trả lời:

a. Hầu hết đều do ngắt int 21h của DOS nắm giữ

a. 2

b. Mỗi một thiết bị có một ngắt DOS riêng

b. 3

Tham khảo: Slide 17, Bài học số 4

Ở chế độ văn bản màn hình có bao nhiêu dịng ?
Chọn một câu trả lời:
a. 80
b. 40
c. 25
Tham khảo: Slide 25, Bài học số 4
Với máy tính có CPU của hãng Intel hoặc tương thích thì
khi khởi động máy tính các thanh ghi CS và IP trỏ đến địa
chỉ nào ?
Chọn một câu trả lời:
a. CS=0 và IP=0
b. CS=0 và IP=FFFFh
c. CS=FFF0h và IP=F000h
d. CS=F000h và IP=FFF0h
Tham khảo: Slide 2, Bài học số 4
Vùng dữ liệu ROM BIOS là gì?
Chọn một câu trả lời:
a. Là vùng nhớ chứa các thơng tin về máy tính đang
dùng
b. Là vùng nhớ chứa mã máy các chương trình con
phục vụ ngắt của BIOS
c. Là vùng nhớ chứa mã máy của các chương trình
kiểm tra khi máy tính khởi động
Tham khảo: Slide 10, Bài học số 4

c. 1
d. 4
e. 0
Tham khảo: Slide 7, Bài học số 5
Các thiết bị vào/ra chuẩn có thể coi là một tệp với các thẻ

tệp (file handle) mặc định. Số thẻ tệp có giá trị bao nhiêu
mặc định cho thiết bị ra chuẩn (màn hình)?
Chọn một câu trả lời:
a. 2
b. 4
c. 3
d. 1
e. 0
Tham khảo: Slide 7, Bài học số 5
Chức năng nào của ngắt INT 21h cho phép đọc tệp?
Chọn một câu trả lời:
a. Chức năng 40h
b. Chức năng 3Ch
c. Chức năng 3Dh
d. Chức năng 3Eh
e. Chức năng 3Fh
Tham khảo: Slide 10, Bài học số 5
Chức năng nào của ngắt INT 21h cho phép ghi tệp?
Chọn một câu trả lời:

Con trỏ (cursor) có ở chế độ (mode) nào của màn hình ?
(SAI)

a. Chức năng 3Fh

Chọn một câu trả lời:

b. Chức năng 3Dh

10


a. Cả văn bản và đồ họa (SAI)

c. Chức năng 3Ch

b. Văn bản

d. Chức năng 3Eh

c. Đồ họa

e. Chức năng 40h


Tham khảo: Slide 10, Bài học số 5

Tham khảo: Slide 12, Bài học số 5

Chức năng nào của ngắt INT 21h cho phép mở tệp mới đã
có?

Địa chỉ các cổng của các thiết bị VÀO/RA của máy tính
gồm mấy byte?

Chọn một câu trả lời:

Chọn một câu trả lời:

a. Chức năng 3Eh


a. 2 byte

b. Chức năng 40h

b. 1 byte

c. Chức năng 3Fh

c. 4 byte

d. Chức năng 3Ch

Tham khảo: Suy luận tư mơn Kiến trúc máy tính

e. Chức năng 3Dh

Làm thế nào xác định được độ dài 1 tệp?

Tham khảo: Slide 9, Bài học số 5

Chọn một câu trả lời:

Chức năng nào của ngắt INT 21h cho phép tạo tệp mới và
mở?

a. Đưa con trỏ tệp về cuối tệp và CF = 0 (bit cờ Carry
= 0) thì DX:AX=độ dài tệp

Chọn một câu trả lời:


b. Đưa con trỏ tệp về cuối tệp và CF = 1 (bit cờ Carry
= 1) thì DX:AX=độ dài tệp

a. Chức năng 40h
b. Chức năng 3Eh

Tham khảo: Slide 11, Bài học số 5

c. Chức năng 3Fh

Ngắt nào của BIOS cho phép làm việc với thời gian máy
tính?

d. Chức năng 3Dh
e. Chức năng 3Ch
Tham khảo: Slide 9, Bài học số 5

Chọn một câu trả lời:
a. Ngắt 16h

Chức năng nào của ngắt INT 21h cho phép đổi tên tệp?
Chọn một câu trả lời:
a. Chức năng 41h
b. Chức năng 42h

b. Ngắt 1Ah
c. Ngắt 10h
Tham khảo: Slide 27, Bài học số 5

c. Chức năng 56h


Sau khi đọc nội dung trong 1 tệp thành cơng (chức năng
3Fh của ngắt int 21h) thì thanh ghi nào cho biết số lượng
byte thực tế đã đọc được?

d. Chức năng 57h

Chọn một câu trả lời:
a. Thanh ghi CX

e. Chức năng 43h
Tham khảo: Slide 12, Bài học số 5
Chức năng nào của ngắt INT 21h cho phép đổi lấy hoặc
đặt thuộc tính tệp?
Chọn một câu trả lời:
a. Chức năng 41h
b. Chức năng 42h
c. Chức năng 57h
d. Chức năng 43h

b. Thanh ghi AX
c. Thanh ghi BX
d. Thanh ghi DX
Tham khảo: Slide 10, Bài học số 5
Sau khi thực hiện các chức năng mở 1 tệp đã có (chức
năng 3dh) hoặc tạo 1 tệp mới và mở (chức năng 3ch) của
ngắt DOS int 21h thì sau khi thực hiện thành công thẻ tệp
nằm ở thanh ghi nào?
Chọn một câu trả lời:
a. Thanh ghi cờ

b. Thanh ghi BX
c. Thanh ghi AX
d. Thanh ghi DX

e. Chức năng 56h

11


Tham khảo: Slide 9, Bài học số 5
Sau khi thực hiện các chức năng liên quan đến thư mục
và tệp thì trạng thái bit cờ nào cho biết kết quả thực hiện
của các chức năng trên (được hay không được)?
Chọn một câu trả lời:
a. Bit cờ ZF = 1 không thực hiện được và ZF=0 thực
hiện được
b. Bit cờ CF = 1 không thực hiện được và CF=0 thực
hiện được
c. Bit cờ SF = 1 không thực hiện được và SF=0 thực
hiện được

c. Đọc nội dung màn hình đưa vào tệp
Tham khảo: Slide 10, Bài học số 5
Với chức năng ghi tệp (chức năng 40h của ngắt INT 21h)
thì khi CX=0 (số lượng byte cần ghi vào tệp là 0) có nghĩa
gì?
Chọn một câu trả lời:
a. Nội dung của tệp vẫn giữ nguyên
b. Cắt bỏ phần nội dung của tệp từ nơi con trỏ tệp trở
về cuối tệp

c. Không ghi gì vào tệp

Tham khảo: Slide 2, 3, 9, … Bài học số 5

Tham khảo: Suy luận

Trong các chức năng liên quan đến thư mục (tạo, xóa,
chuyển) và tệp (tạo, mở, xóa) thì đơi thanh ghi nào dùng
để chứa địa chỉ đầu xâu ký tự chứa tên thư mục hoặc tệp?

6 Bài 6: Lập trình hệ thống trong mơi

Chọn một câu trả lời:
a. CS:IP
b. DS:DX
c. ES:SI
Tham khảo: Slide 2, 3, 9, … Bài học số 5
Trong các chức năng liên quan đến thư mục (tạo, xóa,
chuyển) và tệp (tạo, mở, xóa ...) thì xâu ký tự chứa tên thư
mục hoặc tệp phải kết thúc bằng gì?
Chọn một câu trả lời:

trường windows
API có tác dụng như thế nào trên Windows?
Chọn một câu trả lời:
a. Các dịch vụ hệ thống
b. Một chương trình ứng dụng
c. Chức năng của người dùng
d. Phần mềm để lập trình


a. Bằng Enter (0dh)
b. Bằng ký tự ‘0’
c. Bằng \0
d. Bằng dấu ‘$’
Tham khảo: Slide 2, 3, 9, … Bài học số 5
Với chức năng đọc tệp (chức năng 3Fh của ngắt INT 21h)
thì khi nào biết đã hết tệp?
Chọn một câu trả lời:
a. CF = 1 (bit cờ Carry = 1)
b. ZF = 1 (bit cờ Zero = 1)

e. Thư viện để lập trình
Xem slide 3, Bài học số 6
Các bước để lập trình đa luồng?
Chọn một câu trả lời:
a. B1) Lập trình hàm xử lý luồng
B2) Tạo luồng chạy hàm trên bằng lệnh “CreateThread”
b. B1) Lập trình hàm xử lý luồng
B2) Tạo luồng chạy hàm trên bằng lệnh “StartThread”

c. CF = 0 (bit cờ Carry = 0)
d. ZF = 0 (bit cờ Zero = 0)
e. CF = 0 và số lượng byte cần đọc nằm ở DX:AX=0
Tham khảo: Suy ra từ Slide 10, Bài học số 5
Với chức năng ghi tệp (chức năng 40h của ngắt INT 21h)
thì với thẻ tệp (file handle) bằng 1 có nghĩa gì?
Chọn một câu trả lời:
a. Đưa số liệu lên màn hình (hiện lên màn hình)
b. Đưa số liệu ra máy in


12

c. B1) Lập trình hàm bất kỳ
B2) Tạo luồng chạy hàm trên
d. B1) Lập trình hàm xử lý luồng
B2) Tạo luồng chạy hàm trên bằng lệnh “new Thread”
e. B1) Lập trình các lệnh xử lý luồng
B2) Tạo luồng chạy hàm trên bằng lệnh “CreateThread”
Xem slide 29, Bài học số 6


Các bước sử dụng thư viện theo kiểu run-time là?
Chọn một câu trả lời:
a. B1) Nạp thư viện bằng lệnh “LoadLibrary”
B2) Sử dụng các thành trong thư viện
B4) Giải phóng thư viện bằng lệnh “FreeLibrary”
b. B1) Nạp thư viện bằng lệnh “LoadLibrary”
B2) Lấy địa chỉ các thành phần muốn dùng bằng lệnh
“GetProcAddress”
B3) Sử dụng bất kỳ thành nào trong thư viện
B4) Giải phóng thư viện bằng lệnh “FreeLibrary”
c. B1) Nạp thư viện bằng lệnh “LoadLibrary”
B2) Lấy địa chỉ các thành phần muốn dùng bằng lệnh
“GetProcAddress”
B3) Sử dụng các thành phần lấy được
B4) Giải phóng thư viện bằng lệnh “FreeLibrary”
d. B1) Nạp thư viện bằng lệnh “LoadLibrary”
B2) Lấy các thành phần muốn dùng trong thư viện
B3) Sử dụng các thành lấy được
B4) Giải phóng thư viện bằng lệnh “FreeLibrary”

e. B1) Nạp thư viện bằng lệnh “LoadLibrary”
B2) Lấy địa chỉ các thành phần muốn dùng bằng lệnh
“GetProcAddress”
B3) Giải phóng thư viện bằng lệnh “FreeLibrary”
Xem slide 40, Bài học số 6
Cách để một chương trình ứng dụng truy cập API là?
Chọn một câu trả lời:
a. Khai báo API trong chương trình
b. Viết lệnh gọi hàm API
c. Máy tự động gọi đến API
d. Viết lệnh truy cập đến API

b. CreateWindows
ShowWindows
UpdateWindows
c. NewWindow
ShowWindow
PaintWindow
d. CreateWindow
ShowWindow
UpdateWindow
e. NewWindow
ShowWindow
Xem slide 8, Bài học số 6
Để lập trình xử lý khi người dùng chọn mục trên menu ta
thực hiện?
Chọn một câu trả lời:
a. Kiểm tra thông điệp WM_COMMAND và xử lý nếu
tham số kiểu UINT trong hàm thông điệp bằng số hiệu của
mục chọn

b. Kiểm tra thông điệp WM_COMMAND và xử lý trong
hàm chính (WinMain)
c. Kiểm tra và xử lý nếu tham số kiểu WPARAM trong
hàm thông điệp bằng số hiệu của mục chọn
d. Xử lý thông điệp WM_COMMAND trong hàm cửa sổ
e. Kiểm tra thông điệp WM_COMMAND và xử lý nếu
tham số WPARAM trong hàm thông điệp bằng số hiệu của
mục chọn
Xem slide 20-22, Bài học số 6
Để vẽ một hình vng cạnh 100, có hai đường chéo và
bên trong có hình trịn nội tiếp ta dùng thứ tự các lệnh sau
(với HDC là )?
Chọn một câu trả lời:

e. Không thể truy cập API
Xem slide 3, Bài học số 6
Các lệnh để tạo cửa sổ và hiển thị lên màn hình (tên lớp
cửa sổ đăng ký là “CS1”)?
Chọn một câu trả lời:
a. CreateWindow
ShowWindow

13

a. Rectangle(,0,0,50,100);
MoveToEx(,0,0,0);
LineTo(,50,100);
MoveToEx(,0,100,0);
LineTo(,50,0);
Ellipse(0,0,50,100);

b. Rectangle(,0,0,100,100);
MoveToEx(,0,0,0);


LineTo(,100,100);
MoveToEx(,0,100,0);
LineTo(,100,0);
AngleArc(0,0,100,0,360);
c. Rectangle(,0,0,100,100);
MoveToEx(,0,0,0);
LineTo(,100,100);
MoveToEx(,0,100,0);
LineTo(,100,0);
AngleArc(50,50,50,0,360);
d. Rectangle(,0,0,100,100);
LineTo(,0,0,100,100);
LineTo(,0,100,100,0);
AngleArc(50,50,50,0,360);
e. Rectangle(,0,0,100,100);
Line (,0,0,100,100);
Line(,0,100,100,0);
AngleArc(50,50,50,0,360);
Xem slide 13, Bài học số 6

Xem slide 5, Bài học số 6
Hàm chính (WinMain) của chương trình trên Windows
được khai báo như sau?
Chọn một câu trả lời:
a. int WINAPI WinMain( HINSTANCE, HINSTANCE,
LPSTR,int);

b. int WinMain( HINSTANCE, HWND, LPSTR, int);
c. int WinMain( HINSTANCE, HINSTANCE,
LPSTR,int);
d. int WINAPI WinMan( HINSTANCE, HINSTANCE,
LPSTR,int);
e. int WINAPI WinMain( HINSTANCE, LPSTR, int);
Xem slide 5, Bài học số 6
HDC là kiểu định danh cho ngữ cảnh thiết bị để làm gì?
Chọn một câu trả lời:

Hàm API để hiển thị thơng báo trên màn hình có tên là?

a. Chứa đối tượng để vẽ đồ họa

Chọn một câu trả lời:
b. Chứa dữ liệu về các thông tin cấu tạo cửa sổ
a. Alert
b. MessageScreen
c. Toast

d. Chứa số hiệu cửa sổ khi vẽ

d. MessageBox

e. Chứa thông tin về các thông điệp cho việc vẽ đồ

e. MsgBox
Xem slide 4, Bài học số 6
Hàm chính (WinMain) của chương trình trên Windows có 4
tham số với kiểu tương ứng là?

Chọn một câu trả lời:
a. HWND, HINSTANCE, UINT, LPVOID
b. HINSTANCE, UINT, LPSTR, int
c. HWND, HINSTANCE, LPSTR, int
d. HINSTANCE, HANDLE, LPSTR, int
e. HINSTANCE, HINSTANCE, LPSTR, int

14

c. Chứa dữ liệu về các tham số đồ họa như màu vẽ,
màu tô, kiểu nét vẽ,…

họa
Xem slide 12, Bài học số 6
Khai báo các thành phần chia sẽ giữa thư viện và chương
trình là?
Chọn một câu trả lời:
a. Sử dụng chỉ thị “__declspec(dllexport)” trong thư
viện và “__declspec(dllimport)” trong chương trình
b. Sử dụng cặp “__declspec(dllexport)” và
“__declspec(dllimport)” trong cả thư viện và chương trình
c. Sử dụng chỉ thị “__declspec(dllexport, dllimport)”
trong cả thư viện và chương trình
d. Sử dụng chỉ thị “__decspec(dllexport)” trong thư
viện và “__decspec(dllimport)” trong chương trình


e. Sử dụng chỉ thị “__declspec(dllexport)” trong
chương trình và “__declspec(dllimport)” trong thư viện


e. Quy định các đặc điểm cửa sổ và hàm xử lý thơng
điệp trên nó

Xem slide 37-39, Bài học số 6

Xem slide 8, Bài học số 6

Lập trình đa luồng là?

Một số kiểu dữ liệu trên Windows có tiền tố chữ H (HWND,
HINSTANCE, HPEN,…). Chữ H có nghĩa là?

Chọn một câu trả lời:

Chọn một câu trả lời:
a. Cho phép chương trình chạy một hàm nhiều lần
song song với nhau
b. Cho phép chương trình chạy nhiều hàm cùng lúc
hoặc một hàm nhiều lần cùng lúc

a. Số nguyên chứa nội dung của thành phần
b. Ký tự mô tả thành phần
c. Số nguyên định danh (Handle) các thành phần

c. Cho phép chương trình chạy nhiều hàm trên cùng
một luồng
d. Cho phép chương trình chạy nhiều luồng luân phiên
nhau
e. Cho phép chương trình chạy nhiều hàm cùng lúc
Xem slide 27-28, Bài học số 6


d. Số nguyên nắm giữ (Hold) giá trị thành phần
e. Chuỗi ký tự định danh (Handle) các thành phần
Xem slide 4, Bài học số 6
Một thư viện DLL có thể được dùng như thế nào?
Chọn một câu trả lời:

Lệnh khai báo thư viện API sử dụng trong chương trình
là?

a. Được sử dụng chung trong toàn bộ hệ thống

Chọn một câu trả lời:

b. Được sử dụng tùy ý

a. #include<window.h>

c. Không được sử dụng trong nhiều chương trình

b. #include<win.h>

d. Được sử dụng trong nhiều chương trình

c. #include<string.h>

e. Chỉ được sử dụng trong một chương trình

d. #include<windows.h>


Xem slide 35-37, Bài học số 6

e. #include<stdio.h>

Những thông điệp phát sinh khi người dùng tác động lên
thiết bị chuột bao gồm?

Xem slide 5, Bài học số 6
Lớp cửa sổ (WNDCLASS) được đăng ký (RegisterClass)
vào hệ thống có tác dụng như thế nào?

Chọn một câu trả lời:
a. WM_MOUSE, WM_LEFTDOWN,
WM_RIGHTDOWN

Chọn một câu trả lời:
a. Quy định các hoạt động trên cửa sổ
b. Không cần đăng ký lớp cửa sổ

b. WM_MOUSEMOVE, WM_LBUTTONDOWN,
WM_RUTTONDOWN
c. WM_MOUSEMOVE, WM_LBUTTONDOWN,
WM_CHAR

c. Quy định cấu tạo cửa sổ
d. Quy định màu sắc, kiểu chữ của cửa sổ

15

d. WM_CLOSE, WM_LBUTTONDOWN,

WM_RUTTONDOWN


e. WM_LBUTTONDOWN,
WM_KEYDOWN
WM_RUTTONDOWN
Xem slide 9, Bài học số 6
Tài nguyên của một chương trình có tác dụng?
Chọn một câu trả lời:
a. Chứa các mã lệnh của chương trình để điều khiển
máy thực hiện công việc

d. Thông điệp được xử lý bên trong vịng lặp thơng
điệp
e. Thơng điệp được xử lý bên trong hàm chính
(WinMain)
Xem slide 7, Bài học số 6
Thơng điệp WM_PAINT được xử lý nhằm mục đích gì?
Chọn một câu trả lời:
a. Vẽ đồ họa trên cửa sổ khi nhấn chuột

b. Chứa các dữ liệu sử dụng trong chương trình và có
thể thay đổi
c. Chứa các dữ liệu cố định và được sử dụng trong
chương trình nhanh chóng và thuận tiện
d. Chứa các dữ liệu cố định và được sử dụng trong hệ
điều hành Windows
e. Chứa các hình ảnh và được sử dụng trong chương
trình
Xem slide 19, Bài học số 6

Thơng điệp được phát sinh và đưa vào chương trình khi
nào?

b. Vẽ đồ họa trên cửa sổ mỗi khi máy xóa dữ liệu trên
cửa sổ
c. Vẽ đồ họa trên cửa sổ tại thời điểm tùy ý
d. Vẽ đồ họa trên cửa sổ mỗi khi cần cập nhật nội
dung trên cửa sổ
e. Vẽ đồ họa trên cửa sổ mỗi khi gõ phím
Xem slide 15, Bài học số 6
Thứ tự các lệnh để vẽ hình trịn màu xanh và bên trong
màu đỏ (với HDC là )?
Chọn một câu trả lời:

Chọn một câu trả lời:
a. Hệ thống tự phát sinh vào những thời điểm cần thiết
b. Hệ thống tự phát sinh tùy ý
c. Thơng điệp khơng bao giờ được gửi đến chương
trình
d. Người dùng tác động lên giao diện chương trình
e. Người dùng tương tác trên giao diện hoặc hệ thống
tự phát sinh khi cần
Xem slide 7, Bài học số 6
Thông điệp được xử lý như thế nào trong chương trình?
Chọn một câu trả lời:
a. Không cần xử lý thông điệp
b. Thông điệp sẽ do máy tự động xử lý
c. Thông điệp được xử lý bên trong một hàm lập trình
theo mẫu quy định


16

a. HPEN p=CreatePen(PS_SOLID,2,RGB(255,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,255));
SelectObject(,p);
Ellipse(,0,0,100,100);
b. HPEN p=CreatePen(PS_SOLID,2,RGB(255,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,255));
SelectObject(,b);
Ellipse(,0,0,100,100);
c. HPEN p=CreatePen(PS_SOLID,2,RGB(255,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,255));
SelectObject(,p);
SelectObject(,b);
Ellipse(,0,0,100,100);
d. Ellipse(,0,0,100,100);
e. HPEN p=CreatePen(PS_SOLID,2,RGB(255,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,255));
SelectObject(,p,b);
Ellipse(,0,0,100,100);
Xem slide 14, Bài học số 6


Trình tự các bước để lập trình đồ họa trên Windows là?
Chọn một câu trả lời:
a. B1) Lấy ngữ cảnh thiết bị (thiết bị ảo)
B2) Đặt các tham số để vẽ
B3) Thực hiện lệnh vẽ
B4) Giải phóng ngữ cảnh thiết bị
b. B1) Lấy ngữ cảnh thiết bị (thiết bị ảo)

B2) Tạo các đối tượng vẽ
B3) Thực hiện lệnh vẽ
B4) Giải phóng ngữ cảnh thiết bị
c. B1) Lấy cửa sổ cần vẽ
B2) Tạo các đối tượng vẽ
B3) Thực hiện lệnh vẽ
B4) Giải phóng cửa sổ đã lấy
d. B1) Lấy cửa sổ cần vẽ
B2) Đặt các tham số để vẽ
B3) Thực hiện lệnh vẽ
e. B1) Lấy ngữ cảnh thiết bị (thiết bị ảo)
B2) Thực hiện lệnh vẽ
B3) Đặt các tham số để vẽ
B4) Giải phóng ngữ cảnh thiết bị
Xem slide 12, Bài học số 6
Vịng lặp thơng điệp có tác dụng như thế nào?
Chọn một câu trả lời:
a. Biến đổi thông điệp từ dạng thô về dạng tinh
b. Tiếp nhận các thông điệp được phát sinh và gửi đến
chương trình
c. Tiếp nhận các sự kiện diễn ra trên máy
d. Loại bỏ các thông điệp không cần thiết
e. Phát sinh thông điệp và gửi đến hệ thống Windows
Xem slide 7, Bài học số 6
Vịng lặp thơng điệp được lập trình như sau?
Chọn một câu trả lời:
a. MSG m;
while(GetMessage(m,0,0,0){
TranslateMessage(m);
DispatchMessage(m);

}

17

b. MSG m;
while(GetMessage(&m,0,0,0){
TranslateMessage(&m);
DispatchMessage(&m);
}
c. MSG m;
while(GetMessage(&m){
TranslateMessage(&m);
DispatchMessage(&m);
}
d. MSG m;
while(GetMessage(&m,0,0,0){
DispatchMessage(&m);
TranslateMessage(&m);
}
e. MSG m;
while(1){
GetMessage(&m,0,0,0);
TranslateMessage(&m);
DispatchMessage(&m);
}
Xem slide 7, Bài học số 6




×