Một chương trình chính của ngôn ngữ Assembly phải kết thúc như thế nào?
A. Bình thường như các ngôn ngữ khác.
B. Không phải làm gì cả.
C. Kết thúc phải trở về DOS với:
Chương trình dạng .EXE là:
mov ah,4ch
int 21h
Chương trình dạng .COM là:
int 20h
Máy tính cấu trúc 16 bit có bao nhiêu thanh ghi?
A. Không có thanh ghi nào
B. Có tất cả 14 thanh ghi không kể thanh ghi xử lý lệnh. Đó là: 1 thanh ghi cờ, 8 thanh ghi đa năng (AX, BX, CX, DX, SI, DI, BP, và SP), 1 thanh ghi con trỏ lệnh IP và 4 thanh ghi segment (CS, DS, ES và SS)
C. Có 10 thanh ghi
D. Nhiều thanh ghi
Các thanh ghi segment của máy tính cấu trúc 32 bit có độ dài bao nhiêu bit?
A. 8 bit
B. 32 bit
C. Tất cả các thanh ghi segment của máy tính 32 bit đều có độ dài 16 bit
D. 64 bit
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
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 đố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?
A. Không, hàm viết bằng Assembly phải vào ngăn xếp lấy giá trị a và n
B. Bắt buộc phải có
C. Có thể và không bắt buộc
Khi liên kết ngôn ngữ bậc cao C/C++ với hợp ngữ theo cách viết tách biệt tệp ngôn ngữ bậc cao và tệp của hợp ngữ thì tệp ngôn ngữ bậc cao C/C++ cần những khai báo gì với các nhãn dùng chung?
A. Cần khai báo tường minh PUBLIC và extern
B. Không cần khai báo gì.
C. Chỉ cần khai báo tường minh extern, không cần khai báo tường minh PUBLIC vì với các ngôn ngữ bậc cao nói chung và C/C++ nói riêng, bất kỳ một khai báo nào đều là PUBLIC rồi.
Trong chương trình hợp ngữ có một khối lệnh giống nhau lặp lại nhiều lần. Có mấy cách giúp người lập trình hợp ngữ viết gọn chương trình (đỡ viết đi viết lại khối lệnh đó)?
A. Có thể thể hiện bằng 3 cách trên
B. Thể hiện khối lệnh đó bằng một MACRO
C. Khối lệnh đó được thể hiện trong một tệp ngoài, sau đó dùng direcive INCLUDE để chèn khối lệnh đó vào chương trình đang viết
D. Thể hiện khối lệnh đó bằng một chương trình con
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à?
A. HINSTANCE, HANDLE, LPSTR, int
B. HWND, HINSTANCE, UINT, LPVOID
C. HINSTANCE, UINT, LPSTR, int
D. HINSTANCE, HINSTANCE, LPSTR, int
E. HWND, HINSTANCE, LPSTR, int
Cách liên kết Inline Assembly có ưu, nhược gì?
A. Ưu: Dễ viết.
Nhược:
Không cho phép có nhãn nhảy trong khối lệnh chèn vào C/C++. Suy ra khối lệnh Assembly yếu,
Các lệnh Assembly “dịch nhờ” chương trình dịch của C/C++ do vậy đôi lúc sinh ra sai sót khi dịch.
B. Dễ viết song chương trình chạy chậm
C. Chạy nhanh song khó viết
Người lập trình ứng dụng của ngôn ngữ Assembly (hợp ngữ) có thể dùng các thanh ghi nào làm con trỏ offset (thanh ghi chứa phần địa chỉ offset) của một ô nhớ?
A. Chỉ có thể dùng các thanh ghi sau: BX, SI, DI và BP
B. Chỉ dùng thanh ghi DX
C. Các thanh ghi segment
D. Tất cả các thanh ghi
Có mấy cách chuyển giao tham số giữa chương trình chính (thường do C/C++ đảm nhiệm) với chương trình con (thường do Assembly đảm nhiệm)?
A. Chỉ thông qua ngăn xếp
B. Chỉ thông qua biến nhớ
C. Có thể chuyển giao tham số theo 2 cách:
Cách 1: Thông qua khai báo biến toàn cục và sử dụng directive PUBLIC và EXTRN (với hợp ngữ) và extern (với C/C++),
Cách 2: Thông qua ngăn xếp khi ngôn ngữ C/C++ giả thiết hàm do Assembly có đối và khi gọi chương trình con, ngôn ngữ C/C++ đưa tham số thực vào ngăn xếp và hàm Assembly sẽ vào ngăn xếp lấy các giá trị đó ra mà dùng.
D. Chuyển giao qua thanh ghi
Bước nhảy của các lệnh nhảy có điều kiện phải
A. Không giới hạn
B. 64k
C. 128 byte
Lệnh nhảy JMP là loại lệnh nhảy gì và có bước nhảy bao nhiêu byte?
A. Có điều kiện và bước nhảy là không giới hạn
B. Không điều kiện và có bước nhảy 64 k
Lệnh AND AX,AX có nghĩa gì không?
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
B. Xóa trạng thái các bit cờ
C. Tất cả các phương án
D. Vô nghĩa
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. Dạng thập phân (cơ số 10)
B. Dạng nhị phân (cơ số binary)
C. Dạng bát phân (cơ số 8)
D. Tất cả các dạng cơ số nêu trên
E. Dạng hexa
(cơ số 16)
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ữ ?
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
Thường có mấy cách để liên kết ngôn ngữ bậc cao với hợp ngữ ?
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 ?
A. Có và số lượng đối và kiểu đối do ngôn ngữ bậc cao giả thiết
B. Có và số lượng đối và kiểu đối do hợp ngữ quyết định
C. Không
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?
A. Không, cả hai trường hợp đều thêm dấu _ (underscore) trước tên hàm
B. 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
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?
A. Thêm $qi (ví dụ: @tênhàm$qi)
B. Thêm $qni (ví dụ: @tênhàm$qni)
C. Không thêm gì cả
D. Thêm $qv (ví dụ: @tênhàm$qv)
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?
A. Thêm $qv (ví dụ: @tênhàm$qv)
B. Thêm $qi (ví dụ: @tênhàm$qi)
C. Không thêm gì cả
D. Thêm $qni (ví dụ: @tênhàm$qni)