Câu hỏi và đáp án môn Lập trình hệ thống EHOU

5/5 - (1 vote)

Câu hỏi và đáp án môn Lập trình hệ thống EHOU, hỗ trợ học trực tuyến tại Đại học Mở Hà Nội

Hướng dẫn tìm nhanh trên trình duyệt: Ấn Ctrl+F sau đó nhập câu hỏi và nhấn Enter.

Câu hỏi 1: API có tác dụng như thế nào trên Windows?

  • Các dịch vụ hệ thống
  • Chức năng của người dùng
  • Một chương trình ứng dụng
  • Phần mềm để lập trình
  • Thư viện để lập trình

Câu hỏi 2: Bảng vectơ ngắt chứa gì và nằm ở đâu?

  • Chứa địa chỉ đầu của các chương trình con phục vụ ngắt và nằm ở RAM
  • Chứa mã máy của các chương trình con phục vụ ngắt và nằm ở ROM BIOS
  • 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

Câu hỏi 3: 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?

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

Câu hỏi 4: Bước nhảy của các lệnh nhảy có điều kiện phải

  • 128 byte
  • 64k
  • Không giới hạn

Câu hỏi 5: 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 ?

  • 0:400h
  • 0:410h
  • 0:411h

Câu hỏi 6: 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 ?

  • 0:400h
  • 0:410h
  • 0:411h

Câu hỏi 7: Các bước để lập trình đa luồng?

  • B1) Lập trình các lệnh xử lý luồngB2) Tạo luồng chạy hàm trên bằng lệnh “CreateThread”
  • B1) Lập trình hàm bất kỳB2) Tạo luồng chạy hàm trên
  • B1) Lập trình hàm xử lý luồngB2) Tạo luồng chạy hàm trên bằng lệnh “CreateThread”
  • B1) Lập trình hàm xử lý luồngB2) Tạo luồng chạy hàm trên bằng lệnh “new Thread”
  • B1) Lập trình hàm xử lý luồngB2) Tạo luồng chạy hàm trên bằng lệnh “StartThread”

Câu hỏi 8: Các bước sử dụng thư viện theo kiểu run-time là?

  • 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ệnB3) Sử dụng các thành lấy đượcB4) Giải phóng thư viện bằng lệnh “FreeLibrary”
  • 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”
  • 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ệnB4) Giải phóng thư viện bằng lệnh “FreeLibrary”
  • 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 đượcB4) Giải phóng thư viện bằng lệnh “FreeLibrary”
  • B1) Nạp thư viện bằng lệnh “LoadLibrary”B2) Sử dụng các thành trong thư việnB4) Giải phóng thư viện bằng lệnh “FreeLibrary”

Câu hỏi 9: 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”)?

  • CreateWindowShowWindow
  • CreateWindowShowWindowUpdateWindow
  • CreateWindowsShowWindowsUpdateWindows
  • NewWindowShowWindow
  • NewWindowShowWindowPaintWindow

Câu hỏi 10: Các lệnh điều khiển khi dịch chương trình (directive) có sinh ra mã máy để chạy chương trình hay không?

  • ✅ Không sinh ra mã máy để chạy chương trình mà chỉ hỗ trợ cho chương trình dịch
  • Tùy tình huống
  • Có sinh ra mã máy để chạy chương trình

Câu hỏi 11: 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?

  • Không
  • Tùy tình huống

Câu hỏi 12: 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?

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

Câu hỏi 13: 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?

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

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

  • 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
  • Tất cả đều có độ dài 16 bit
  • Tất cả đều có độ dài 32 bit

Câu hỏi 15: Các thanh ghi segment của máy tính cấu trúc 32 bit có độ dài bao nhiêu bit?

  • ✅ Tất cả các thanh ghi segment của máy tính 32 bit đều có độ dài 16 bit
  • 32 bit
  • 64 bit
  • 8 bit

Câu hỏi 16: 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)?

  • 0
  • 1
  • 2
  • 3
  • 4

Câu hỏi 17: 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)?

  • 0
  • 1
  • 2
  • 3
  • 4

Câu hỏi 18: Các vấn đề gì cần lưu ý khi liên kết theo cách viết tách biệt ngôn ngữ bậc cao (thường thể hiện chương trình chính) và hợp ngữ (thường thể hiện hàm)?

  • ✅ Cần lưu ý đến 3 vấn đề:1.Vấn đề đa tệp: Các nhãn dùng chung (cả hai tệp đều dùng) phải hiểu nhau thông qua khai báo PUBLIC, EXTRN (với hợp ngữ) và extern với C/C++),2.Vấn đê thêm dấu _ trước tên hàm Assembly (khi liên kết với C) và thêm @tên hàm$qx (khi liên kết với C++), trong đó x sẽ là:- v nếu hàm không đôi,- i nếu hàm có đối và tham số thực là tham trị,- pi/ni là hàm có đối con trỏ near/far và tham số thực là tham biến.3.Vấn đề tên hàm viết bằng Assembly mang giá trị trả về.
  • Chỉ lưu ý đến vấn đề đa tệp
  • Không cần lưu ý gì
  • Chỉ cần lưu ý đến tên hàm Assembly mang giá trị trả về
  • .

Câu hỏi 19: Cách để một chương trình ứng dụng truy cập API là?

  • ✅ Viết lệnh gọi hàm API
  • Khai báo API trong chương trình
  • Không thể truy cập API
  • Máy tự động gọi đến API
  • Viết lệnh truy cập đến API

Câu hỏi 20: Cách dịch và liên kết của cách liên kết Inline Assembly?

  • ✅ Quá trình dịch sẽ như sau:- Chương trình dịch của TC sẽ dịch tệp nguôn (đuôi .c hoặc .cpp) sang tệp có đuôi .asm,- Chương trình dịch TASM dịch tệp có đuôi .asm sang tệp đuôi .obj,-TLINK sẽ thực hiện việc liên kết để tạo ra tệp .exe.
  • Tùy tình huống
  • Chương trình dịch của ngôn ngữ Assembly sẽ đảm nhiệm hết
  • Chương trình dịch của TC sẽ đảm nhiệm hết.

Câu hỏi 21: Cách liên kết Inline Assembly có ưu, nhược gì?

  • ✅ Ư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.
  • Dễ viết song chương trình chạy chậm
  • Chạy nhanh song khó viết

Câu hỏi 22: Cách nào thực hiện việc hiện 1 xâu ký tự lên màn hình là dễ dàng nhất và tốt nhất trong lập trình Assembly (hợp ngữ)

  • ✅ Khai báo xâu kết thúc bằng ‘$’, sau đó dùng chức năng thứ 9 của ngắt int 21h (DOS functions)
  • Dùng chức năng thứ 13h của ngắt int 10h
  • Khai báo xâu kết thúc bằng \0, sau đó viết chương trình hiện các ký tự cho đến khi gặp \0.

Câu hỏi 23: 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 ?

  • Anh A đúng
  • Anh B đúng
  • Cả hai cùng có thể

Câu hỏi 24: 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ức năng 0Eh
  • Chức năng 8h
  • Chức năng 9h

Câu hỏi 25: 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 ?

  • ✅ Chức năng 9h
  • Chức năng 0Eh
  • Chức năng 8h

Câu hỏi 26: Chức năng nào của ngắt INT 21h cho phép đọc tệp?

  • Chức năng 3Ch
  • Chức năng 3Dh
  • Chức năng 3Eh
  • Chức năng 3Fh
  • Chức năng 40h

Câu hỏi 27: 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ức năng 41h
  • Chức năng 42h
  • Chức năng 43h
  • Chức năng 56h
  • Chức năng 57h

Câu hỏi 28: Chức năng nào của ngắt INT 21h cho phép đổi tên tệp?

  • Chức năng 41h
  • Chức năng 42h
  • Chức năng 43h
  • Chức năng 56h
  • Chức năng 57h

Câu hỏi 29: Chức năng nào của ngắt INT 21h cho phép ghi tệp?

  • Chức năng 3Ch
  • Chức năng 3Dh
  • Chức năng 3Eh
  • Chức năng 3Fh
  • Chức năng 40h

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

  • Chức năng 3Ch
  • Chức năng 3Dh
  • Chức năng 3Eh
  • Chức năng 3Fh
  • Chức năng 40h

Câu hỏi 31: 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?

  • 0Ah
  • 1h
  • 9h

Câu hỏi 32: 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)?

  • 0Ah
  • 1h
  • 9h

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

  • Chức năng 3Ch
  • Chức năng 3Dh
  • Chức năng 3Eh
  • Chức năng 3Fh
  • Chức năng 40h

Câu hỏi 34: 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ức năng 0h
  • Chức năng 0Fh
  • Chức năng 2h
  • Chức năng 3h

Câu hỏi 35: 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 ?

  • Có và số lượng đối và kiểu đối do hợp ngữ quyết định
  • Có và số lượng đối và kiểu đối do ngôn ngữ bậc cao giả thiết
  • Không

Câu hỏi 36: Chương trình con và macro thì loại nào cho phép có đối?

  • Cả hai
  • Chương trình con
  • MACRO

Câu hỏi 37: Chương trình con và macro thì loại nào thực hiện nhanh hơn?

  • Bằng nhau
  • Chương trình con
  • MACRO

Câu hỏi 38: Chương trình con và macro thì loại nào tiết kiệm vùng nhớ?

  • Bằng nhau
  • Chương trình con
  • MACRO

Câu hỏi 39: 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ỉ sử dụng directive EXTRN
  • Chỉ sử dụng directive PUBLIC
  • Tất cả các phương án

Câu hỏi 40: 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 ?

  • Module nào cũng được
  • Module sử dụng chương trình con (module gọi chương trình con)
  • Module viết chương trình con

Câu hỏi 41: 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ỉ ở module chương trình con
  • Chỉ ở module của chương trình chính
  • Ở module nào cũng được

Câu hỏi 42: 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 ?

  • Chỉ ở module chương trình con
  • Chỉ ở module của chương trình chính
  • Ở module nào cũng được

Câu hỏi 43: Chương trình được viết bằng ngôn ngữ Assembly (hợp ngữ) có ưu điểm gì?

  • ✅ Chạy nhanh, tiết kiệm vùng nhớ và dễ dàng thâm nhập vào phần cứng của máy tính
  • Chạy nhanh
  • Dễ viết
  • Tiết kiệm vùng nhớ
  • Dễ tìm sai

Câu hỏi 44: 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)?

  • ✅ 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.
  • Chuyển giao qua thanh ghi
  • Chỉ thông qua biến nhớ
  • Chỉ thông qua ngăn xếp

Câu hỏi 45: 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 ?

  • Cả hai cách
  • Chỉ có cách gián tiếp nhờ chức năng 25h của ngắt int 21h
  • Chỉ có cách trực tiếp

Câu hỏi 46: Có thể dùng chung các thanh ghi làm toán hạng trong các lệnh của thân chương trình chính và chương trình con được không?

  • ✅ Được, song phải bảo vệ giá trị các thanh ghi trong chương trình con trước khi sử dụng và hồi phục lại giá trị các thanh ghi trước khi quay về chương trình chính.
  • Được, mà không cần quan tâm đến điều gì cả
  • Không được
  • Tùy tình huống

Câu hỏi 47: Có thể sử dụng dạng cơ số nào để thể hiện 1 hằng số trong lập trình Assembly?

  • Dạng bát phân (cơ số 8)
  • Dạng hexa(cơ số 16)
  • Dạng nhị phân (cơ số binary)
  • Dạng thập phân (cơ số 10)
  • Tất cả các dạng cơ số nêu trên

Câu hỏi 48: 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ữ ?

  • 2 dạng: đơn giản và chuẩn
  • 3 dạng
  • Chỉ 1 dạng chuẩn
  • Chỉ 1 dạng đơn giản

Câu hỏi 49: Con trỏ (cursor) có ở chế độ (mode) nào của màn hình ?

  • ✅ Văn bản
  • Cả văn bản và đồ họa
  • Đồ họa

Câu hỏi 50: Cũng như mọi ngôn ngữ lập trình, việc sử dụng chương trình con trong lập trình Assembly (hợp ngữ) có ý nghĩa gì?

  • ✅ Làm cho chương trình có cấu trúc và tiết kiệm vùng nhớ
  • Dễ dịch
  • Tiết kiệm vùng nhớ
  • Dễ viết

Câu hỏi 51: CX chứa số lần lặp của lệnh LOOP. Vậy CX có thể là một giá trị

  • 1≤CX≤32767
  • Bất kỳ số nào
  • CX≥0
  • Tất cả các phương án

Câu hỏi 52: Đây là loại khai báo biến gì ?.DATA A DW 10 dup(?)

  • ✅ 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
  • A là biến số 2 byte được gán giá trị ban đầu là 10
  • A là biến số có độ dài 10 byte

Câu hỏi 53: Để lập trình xử lý khi người dùng chọn mục trên menu ta thực hiện?

  • 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
  • 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
  • Kiểm tra thông điệp WM_COMMAND và xử lý trong hàm chính (WinMain)
  • 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
  • Xử lý thông điệp WM_COMMAND trong hàm cửa sổ

Câu hỏi 54: Để vẽ một hình vuông 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à )?

  • ✅ 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);
  • Rectangle(,0,0,100,100);Line (,0,0,100,100);Line(,0,100,100,0);AngleArc(50,50,50,0,360);
  • Rectangle(,0,0,100,100);LineTo(,0,0,100,100);LineTo(,0,100,100,0);AngleArc(50,50,50,0,360);
  • 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);
  • Rectangle(,0,0,50,100);MoveToEx(,0,0,0);LineTo(,50,100);MoveToEx(,0,100,0);LineTo(,50,0);Ellipse(0,0,50,100);

Câu hỏi 55: Đị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?

  • 1 byte
  • 2 byte
  • 4 byte

Câu hỏi 56: Directive INCLUDE chèn nội dung 1 tệp ngoà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 ngoài vào chương trình thì trong nội dung của tệp ngoài có cho phép có nhãn nhảy hay không ?

  • Không
  • Tùy tình huống

Câu hỏi 57: Directive nào xác lập biến 2 byte ?

  • ✅ DW
  • DB
  • DD

Câu hỏi 58: Độ lớn của bảng vectơ ngắt và vị trí của bảng vectơ ngắt?

  • 1024 byte và nằm ở đầu vùng nhớ
  • 128 byte và nằm ở đầu vùng nhớ
  • 256 byte và nằm ở cuối vùng nhớ
  • 512 byte và nằm ở cuối vùng nhớ

Câu hỏi 59: Độ lớn vùng dữ liệu ROM BIOS và địa chỉ đầu vùng dữ liệu ROM BIOS?

  • 1024 byte RAM và địa chỉ đầu là 0:100h
  • 128 byte RAM và địa chỉ đầu là 0:0h
  • 256 byte RAM và địa chỉ đầu là: 0:400h

Câu hỏi 60: Giả thiết có 1 đoạn chương trình như sau :.DATA A DW 100 dup(?) .CODE PS:LEA BX,AVậy nội dung thanh ghi BX chứa gì ?

  • ✅ Phần địa chỉ OFFSET của A[0] (địa chỉ thành phần đầu tiên của trường)
  • Giá trị A[0]
  • Phần địa chỉ OFFSET của A[99] (địa chỉ thành phần cuối cùng của trường)

Câu hỏi 61: 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 ?

  • CS:IP
  • DS:SI
  • ES:DI
  • SS:SP

Câu hỏi 62: Hàm API để hiển thị thông báo trên màn hình có tên là?

  • Alert
  • MessageBox
  • MessageScreen
  • MsgBox
  • Toast

Câu hỏi 63: 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à?

  • HINSTANCE, HANDLE, LPSTR, int
  • HINSTANCE, HINSTANCE, LPSTR, int
  • HINSTANCE, UINT, LPSTR, int
  • HWND, HINSTANCE, LPSTR, int
  • HWND, HINSTANCE, UINT, LPVOID

Câu hỏi 64: Hàm chính (WinMain) của chương trình trên Windows được khai báo như sau?

  • int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR,int);
  • int WINAPI WinMain( HINSTANCE, LPSTR, int);
  • int WINAPI WinMan( HINSTANCE, HINSTANCE, LPSTR,int);
  • int WinMain( HINSTANCE, HINSTANCE, LPSTR,int);
  • int WinMain( HINSTANCE, HWND, LPSTR, int);

Câu hỏi 65: HDC là kiểu định danh cho ngữ cảnh thiết bị để làm gì?

  • Chứa đối tượng để vẽ đồ họa
  • Chứa dữ liệu về các tham số đồ họa như màu vẽ, màu tô, kiểu nét vẽ,…
  • Chứa dữ liệu về các thông tin cấu tạo cửa sổ
  • Chứa số hiệu cửa sổ khi vẽ
  • Chứa thông tin về các thông điệp cho việc vẽ đồ họa

Câu hỏi 66: Khai báo các thành phần chia sẽ giữa thư viện và chương trình là?

  • Sử dụng cặp “__declspec(dllexport)” và “__declspec(dllimport)” trong cả thư viện và chương trình
  • Sử dụng chỉ thị “__declspec(dllexport)” trong chương trình và “__declspec(dllimport)” trong thư viện
  • Sử dụng chỉ thị “__declspec(dllexport)” trong thư viện và “__declspec(dllimport)” trong chương trình
  • Sử dụng chỉ thị “__declspec(dllexport, dllimport)” trong cả thư viện và chương trình
  • Sử dụng chỉ thị “__decspec(dllexport)” trong thư viện và “__decspec(dllimport)” trong chương trình

Câu hỏi 67: 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?

  • ✅ 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.
  • Cần khai báo tường minh PUBLIC và extern
  • Không cần khai báo gì.

Câu hỏi 68: 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ì ?

  • ✅ Tên biến nhớ, tên chương trình con và tên ký hiệu thay cho 1 hằng số
  • Tên biến nhớ
  • Tên chương trình con
  • Tên ký hiệu (symbol) thay cho 1 hằng số
  • Tên nhãn nhảy

Câu hỏi 69: 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 ?

  • ✅ Directive EXTRN
  • Directive PUBLIC
  • Không cần directive nào cả

Câu hỏi 70: 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 đó ?

  • Cần
  • Tùy tình huống
  • Tùy tình huống

Câu hỏi 71: 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 đó ?

  • ✅ 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ần
  • Tùy tình huống

Câu hỏi 72: 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) ?

  • ✅ BP
  • BX, SI hoặc DI
  • SP

Câu hỏi 73: 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 ?

  • Cần
  • Không cần
  • Tùy tình huống

Câu hỏi 74: 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++ ?.

  • ✅ 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ữ
  • Không cần thêm gì
  • Thêm dấu $

Câu hỏi 75: 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 ?

  • ✅ Từ phải sang trái
  • Từ trái sang phải
  • Tùy tình huống

Câu hỏi 76: 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 ?

  • ✅ Thêm @ vào trước tên chương trình con
  • Không cần thêm gì
  • Thêm dấu _ (dấu underscore) vào trước tên chương trình con

Câu hỏi 77: 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?

  • 2 byte
  • 4 byte
  • 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

Câu hỏi 78: 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 ?

  • Cả hai dạng
  • Dạng chuẩn
  • Dạng dơn giản

Câu hỏi 79: 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 ?

  • ✅ Có và nhờ 2 lệnh sau :mov reg16,datamov DS,reg16
  • Có và nhờ 2 lệnh sau :mov reg16,@data mov DS,reg16
  • Không, hệ điều hành sẽ tự đưa
  • Tùy tình huống

Câu hỏi 80: 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 ?

  • Có và nhờ 2 lệnh sau :mov reg16,datamov DS,reg16
  • Có và nhờ 2 lệnh sau :mov reg16,@data mov DS,reg16
  • Không, hệ điều hành sẽ tự đưa
  • Tùy tình huống

Câu hỏi 81: Khối lệnh trong thân MACRO có cho phép có nhãn nhảy hay không ?

  • Có song nhãn đó phải được khai báo sau directive LOCAL
  • Có trong bất kỳ tình huống nào
  • Không

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

  • Nhờ directive OFFSET
  • Nhờ directive OFFSET và SEG
  • Nhờ directive SEG

Câu hỏi 83: Làm thế nào xác định được độ dài 1 tệp?

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

Câu hỏi 84: Lập trình đa luồng là?

  • Cho phép chương trình chạy một hàm nhiều lần song song với nhau
  • Cho phép chương trình chạy nhiều hàm cùng lúc
  • 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
  • Cho phép chương trình chạy nhiều hàm trên cùng một luồng
  • Cho phép chương trình chạy nhiều luồng luân phiên nhau

Câu hỏi 85: Lệnh AND AX,AX có nghĩa gì không?

  • 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
  • Tất cả các phương án
  • Vô nghĩa
  • Xóa trạng thái các bit cờ

Câu hỏi 86: Lệnh khai báo thư viện API sử dụng trong chương trình là?

  • #include
  • #include
  • #include
  • #include
  • #include

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

  • Có điều kiện và bước nhảy là không giới hạn
  • Không điều kiện và có bước nhảy 64 k

Câu hỏi 88: 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ỉ chia đôi làm tròn dưới giá trị có trong AX nếu AX chứa số nguyên dương
  • Chia đôi giá trị có trong AX nếu AX chứa số nguyên
  • Chia đôi làm tròn dưới giá trị có trong AX nếu AX chứa số nguyên
  • Tất cả các phương án

Câu hỏi 89: 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ì?

  • Chia đôi giá trị có trong AX
  • Nhân đôi giá trị có trong AX
  • 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)
  • Tất cả các phương án

Câu hỏi 90: 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ì?

  • Chia đôi giá trị có trong AX nếu AX chứa số nguyên dương
  • Chia đôi làm tròn dưới giá trị có trong AX nếu AX chứa số nguyên
  • Chia đôi làm tròn dưới giá trị có trong AX nếu AX chứa số nguyên dương
  • Tất cả các phương án

Câu hỏi 91: Lệnh: LEA BX,m (trong đó m là một biến) có ý nghĩa gì?

  • ✅ Đưa phần địa chỉ offset ô nhớ được cấp phát cho biến m vào thanh ghi BX. Giá trị trong BX là con trỏ offset của ô nhớ cấp pháp cho biến
  • Đưa giá trị biến m vào thanh ghi BX
  • Xóa trạng thái các bit cờ
  • Đưa phần địa chỉ segment ô nhớ cấp phát cho biến m vào thanh ghi BX

Câu hỏi 92: 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 khối lệnh hợp ngữ vào chương trình được viết bằng ngôn ngữ bậc cao
  • 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ữ

Câu hỏi 93: Lớp cửa sổ (WNDCLASS) được đăng ký (RegisterClass) vào hệ thống có tác dụng như thế nào?

  • Không cần đăng ký lớp cửa sổ
  • Quy định các đặc điểm cửa sổ và hàm xử lý thông điệp trên nó
  • Quy định các hoạt động trên cửa sổ
  • Quy định cấu tạo cửa sổ
  • Quy định màu sắc, kiểu chữ của cửa sổ

Câu hỏi 94: MACRO của hợp ngữ có cho phép có đối hay không? Có phải bắt buộc có đối không?

  • ✅ Có thể có đối hoặc không có đối
  • Bắt buộc phải có đối
  • Không có đối

Câu hỏi 95: Máy tính cấu trúc 16 bit có bao nhiêu thanh ghi?

  • ✅ 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)
  • Không có thanh ghi nào
  • Nhiều thanh ghi
  • Có 10 thanh ghi

Câu hỏi 96: Một chương trình chính của ngôn ngữ Assembly phải kết thúc như thế nào?

  • ✅ Kết thúc phải trở về DOS với:Chương trình dạng .EXE là:mov ah,4chint 21hChương trình dạng .COM là:int 20h
  • Không phải làm gì cả.
  • Bình thường như các ngôn ngữ khác.

Câu hỏi 97: Một chương trình dạng .COM có bắt buộc sử dụng directive ORG 100h không?

  • Bắt buộc phải có
  • Không cần
  • Tùy tình huống

Câu hỏi 98: 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?

  • 1 phân đoạn duy nhất và đó là code segment
  • 2 phân đoạn và đó là code segment và data segment
  • phân đoạn và đó là code, data và stack segment

Câu hỏi 99: 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?

  • ✅ Phân đoạn vùng nhớ dành cho dữ liêu (data segment)
  • Phân đoạn vùng nhớ dành cho mã máy của CT (code segment)
  • Phân đoạn vùng nhớ dành cho ngăn xếp (stack segment)

Câu hỏi 100: Một chương trình dạng .EXE có thể chứa ít nhất bao nhiêu phân đoạn (segment) ?

  • 1 phân đoạn
  • 2 phân đoạn
  • 3 phân đoạn

Câu hỏi 101: 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à?

  • Chuỗi ký tự định danh (Handle) các thành phần
  • Ký tự mô tả thành phần
  • Số nguyên chứa nội dung của thành phần
  • Số nguyên định danh (Handle) các thành phần
  • Số nguyên nắm giữ (Hold) giá trị thành phần

Câu hỏi 102: Một thư viện DLL có thể được dùng như thế nào?

  • Chỉ được sử dụng trong một chương trình
  • Được sử dụng chung trong toàn bộ hệ thống
  • Được sử dụng trong nhiều chương trình
  • Được sử dụng tùy ý
  • Không được sử dụng trong nhiều chương trình

Câu hỏi 103: Một toán hạng đứng sau các lệnh của ngôn ngữ Assembly (hợp ngữ) có thể là gì?

  • ✅ Có thể là một thanh ghi, biến nhớ, hằng số, biểu thức hoặc một nhãn (tên CT con, nhãn nhảy)
  • Chỉ có thể là một nhãn
  • Chỉ có thể là một thanh ghi
  • Chỉ có thể là một hằng số
  • Chỉ có thể là một biến nhớ

Câu hỏi 104: 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ì ?

  • Chỉ cần viết chương trình con phục vụ ngắt
  • Đặ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
  • Tất cả các phương án

Câu hỏi 105: 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 ?

  • Bàn phím
  • Màn hình
  • Ổ đĩa

Câu hỏi 106: 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 ?

  • Bàn phím
  • Màn hình
  • Ổ đĩa

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

  • Ngắt 10h
  • Ngắt 16h
  • Ngắt 1Ah

Câu hỏi 108: 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?

  • Hầu hết đều do ngắt int 21h của DOS nắm giữ
  • Mỗi một thiết bị có một ngắt DOS riêng

Câu hỏi 109: Người lập trình ngôn ngữ Assembly (hợp ngữ) hay dùng lệnh AND với mục đích gì?

  • ✅ Để:Tách bit: Muốn tách bit nào đó (giữ trạng thái bit đó) của 1 toán hạng thì hãy AND bit đó với 1 và các bit khác với 0.Dựng cờ: Thực hiện lệnh AND toán hạng với chính nó sẽ dựng các cờ cho biết trạng thái giá trị của toán hạng đó và trên cơ sở các cờ đó thực hiện các lệnh nhảy có điều kiện.
  • Để đưa giá trị một toán hạng về 0
  • Để đưa giá trị của toán hạng lên 1
  • Xóa trạng thái các bit cờ
  • Để thay đổi giá trị của toán hạng

Câu hỏi 110: 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ớ?

  • ✅ Chỉ có thể dùng các thanh ghi sau: BX, SI, DI và BP
  • Các thanh ghi segment
  • Chỉ dùng thanh ghi DX
  • Tất cả các thanh ghi

Câu hỏi 111: 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?

  • ✅ WM_MOUSEMOVE, WM_LBUTTONDOWN,WM_RUTTONDOWN
  • WM_CLOSE, WM_LBUTTONDOWN,WM_RUTTONDOWN
  • WM_LBUTTONDOWN,WM_KEYDOWNWM_RUTTONDOWN
  • WM_MOUSE, WM_LEFTDOWN,WM_RIGHTDOWN
  • WM_MOUSEMOVE, WM_LBUTTONDOWN,WM_CHAR

Câu hỏi 112: Những vấn đề gì cần giải quyết khi viết chương trình đa tệp?

  • ✅ Vấn đề nẩy sinh cần giải quyết là làm sao các nhãn (tên biến nhớ, tên chương trình con, tên hằng, tên cấu trúc,…) dùng chung (các tệp cùng dùng) phải hiểu nhau bằng sử dụng các directive PUBLIC, EXTRN hoặc GLOBAL
  • Chỉ cần khai báo EXTRN (xin phép) với các nhãn dùng chung
  • Chỉ cần khai báo PUBLIC (cho phép) với các nhãn dùng chung
  • Viết như chương trình trên một tệp mà không cần giải quyết vấn đề nào thêm cả.

Câu hỏi 113: Những vấn đề gì cần lưu ý khi viết chương trình ngôn ngữ Assembly (hợp ngữ) để sau khi dịch và liên kết được tệp thực hiện đuôi .COM

  • ✅ Cần lưu ý:1.Chương trình chỉ có 1 phân đoạn mã máy,2.Khai báo biến trong vùng nhớ mã máy,3.Sử dụng directive ORG,4.Tốt nhất là trở về DOS bằng ngắt int 20h5. Khi liên kết sử dụng tùy chon t, cụ thể là:tlink/t têntệp
  • Cần lưu ý khi liên kết
  • Cần lưu ý khi khai báo biến
  • Không cần lưu ý gì. Viết như để tệp thực hiện có đuôi .EXE

Câu hỏi 114: Ở chế độ văn bản màn hình có bao nhiêu dòng ?

  • 25
  • 40
  • 80

Câu hỏi 115: ROM BIOS là gì, chứa thông tin gì ?

  • ✅ Là vùng nhớ dạng ROM chứa một số thông tin về máy tính đang dùng và quan trọng hơn cả là chứa mã máy của hai loại chương trình: mã máy các chương trình kiểm tra khi máy tính khởi động và mã máy của các chương trình con phục vụ ngắt BIOS.
  • Là vùng nhớ chứa hệ điều hành
  • Là vùng nhớ ROM chứa thông tin về phần cứng máy tính đang dùng.

Câu hỏi 116: 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?

  • Thanh ghi AX
  • Thanh ghi BX
  • Thanh ghi CX
  • Thanh ghi DX

Câu hỏi 117: 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)?

  • Bit cờ CF = 1 không thực hiện được và CF=0 thực hiện được
  • Bit cờ SF = 1 không thực hiện được và SF=0 thực hiện được
  • Bit cờ ZF = 1 không thực hiện được và ZF=0 thực hiện được

Câu hỏi 118: 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?

  • Thanh ghi AX
  • Thanh ghi BX
  • Thanh ghi cờ
  • Thanh ghi DX

Câu hỏi 119: Sau lệnh nhân MUL,/IMUL và lệnh chia DIV, IDIV có mấy toán hạng xuất hiện. Toán hạng ẩn nằm ở đâu?

  • ✅ Chỉ có một toán hạng xuất hiện. Tùy thuộc vào kích cỡ của toán hạng xuất hiện sẽ suy ra toán hạng thứ 2 (ẩn) nằm ở đâu.Với phép nhân nếu toán hạng xuất hiện là:- 8 bit thì toán hạng nhân thứ 2 (ẩn) nằm ở AL,- 16 bit thì toán hạng thứ 2 (ẩn) nằm ở AX.Với phép chia, nếu toán hạng xuất hiện (só chia) là:- 8 bit thì toán hạng ẩn (số bị chia) nằm ở AX- bit thì toán hạng ẩn (số bị chia) nằm ở DX:AX
  • Không có toán hạng nào
  • Tùy tình huống
  • Có 2 toán hạng

Câu hỏi 120: Sử dụng tệp dịch nào để liên kết ngôn ngữ C/C++ với ngôn ngữ Assembly (hợp ngữ)?

  • ✅ Sử dụng chương trình dịch (lệnh) tcc.exe (các tùy chọn được xác lập trên dòng lệnh dịch)
  • Sử dụng chương trình dịch của ngôn ngữ Assembly (hợp ngữ)
  • Sử dụng chương trình dịch tc.exe của chương trình dịch C/C++ (các tùy chọn được xác lập bởi Menu Options của TC)
  • Sử dụng chương trình dịch nào cũng được

Câu hỏi 121: Tài nguyên của một chương trình có tác dụng?

  • 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
  • Chứa các dữ liệu cố định và được sử dụng trong hệ điều hành Windows
  • Chứa các dữ liệu sử dụng trong chương trình và có thể thay đổi
  • Chứa các hình ảnh và được sử dụng trong chương trình
  • 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

Câu hỏi 122: 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?

  • 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
  • Không, cả hai trường hợp đều thêm dấu _ (underscore) trước tên hàm

Câu hỏi 123: 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?

  • Không thêm gì cả
  • Thêm $qi (ví dụ: @tênhàm$qi)
  • 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)
  • Thêm $qv (ví dụ: @tênhàm$qv)

Câu hỏi 124: 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?

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

Câu hỏi 125: 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?

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

Câu hỏi 126: Tham trị và tham biến khi gọi hàm có đối có gì khác nhau?

  • ✅ Khi tham số thực của hàm là tham trị thì giá sẽ được đưa vào ngăn xếp, còn tham số thực là tham biến thì địa chỉ của tham số thực sẽ được đưa vào ngăn xếp
  • Giá trị của tham số thực dạng là tham trị và tham biến sẽ đưa vào ngăn xếp
  • Không có gì khác nhau

Câu hỏi 127: 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 ngoà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?

  • Không
  • Tùy tình huống

Câu hỏi 128: Thông điệp được phát sinh và đưa vào chương trình khi nào?

  • Hệ thống tự phát sinh tùy ý
  • Hệ thống tự phát sinh vào những thời điểm cần thiết
  • Người dùng tác động lên giao diện chương trình
  • 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
  • Thông điệp không bao giờ được gửi đến chương trình

Câu hỏi 129: Thông điệp được xử lý như thế nào trong chương trình?

  • Không cần xử lý thông điệp
  • Thông điệp được xử lý bên trong hàm chính (WinMain)
  • Thông điệp được xử lý bên trong một hàm lập trình theo mẫu quy định
  • Thông điệp được xử lý bên trong vòng lặp thông điệp
  • Thông điệp sẽ do máy tự động xử lý

Câu hỏi 130: Thông điệp WM_PAINT được xử lý nhằm mục đích gì?

  • ✅ 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ổ
  • Vẽ đồ họa trên cửa sổ khi nhấn chuột
  • Vẽ đồ họa trên cửa sổ mỗi khi gõ phím
  • Vẽ đồ họa trên cửa sổ mỗi khi máy xóa dữ liệu trên cửa sổ
  • Vẽ đồ họa trên cửa sổ tại thời điểm tùy ý

Câu hỏi 131: Thứ tự các lệnh để vẽ hình tròn màu xanh và bên trong màu đỏ (với HDC là )?

  • Ellipse(,0,0,100,100);
  • HPEN p=CreatePen(PS_SOLID,2,RGB(255,0,0));HBRUSH b=CreateSolidBrush(RGB(0,0,255));SelectObject(,b);Ellipse(,0,0,100,100);
  • HPEN p=CreatePen(PS_SOLID,2,RGB(255,0,0));HBRUSH b=CreateSolidBrush(RGB(0,0,255));SelectObject(,p);Ellipse(,0,0,100,100);
  • 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);
  • 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);

Câu hỏi 132: Thường có mấy cách để liên kết ngôn ngữ bậc cao với hợp ngữ ?

  • 1
  • 2
  • 3

Câu hỏi 133: Thường có mấy dạng biểu diễn địa chỉ một ô nhớ ?

  • 1 dạng duy nhất là lôgic
  • 1 dạng duy nhất là vật lý
  • 2 dạng: dạng lôgic và dạng vật lý

Câu hỏi 134: 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ímGọi chương tình con tính an do module hợp ngữ viếtHiện kết quảModule Assembly thực hiện nhiệm vụ sau : viết chương trình con tính anVớ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?

  • ✅ Biến toàn cục (biến ngoài)
  • Biến cục bộ
  • Khai báo ở đâu cũng được

Câu hỏi 135: 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ímGọi chương tình con tính an do module hợp ngữ viếtHiện kết quảModule Assembly thực hiện nhiệm vụ sau : viết chương trình con tính anVớ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?

  • ✅ 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ắt buộc phải có
  • Có thể và không bắt buộc

Câu hỏi 136: 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ímGọi chương tình con tính an do module hợp ngữ viếtHiện kết quảModule Assembly thực hiện nhiệm vụ sau: viết chương trình con tính anVớ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?

  • ✅ Khai báo cục bộ trong main()
  • Khai báo biến toàn cục (biến ngoài)
  • Khai báo ở đâu cũng được

Câu hỏi 137: Toán hạng 2 byte có thể chứa một số nguyên có giá trị bao nhiêu?

  • Từ -32768 đến 32767
  • Từ số 0 đến số 65535
  • Từ số -32767 đến số 32768
  • Từ số -32768 đến số 0
  • Từ số -32768 đến số 32768

Câu hỏi 138: Trình tự các bước để lập trình đồ họa trên Windows là?

  • B1) Lấy cửa sổ cần vẽB2) Đặt các tham số để vẽB3) Thực hiện lệnh vẽ
  • 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
  • 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ị
  • 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ị
  • 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ị

Câu hỏi 139: 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ì?

  • Bằng \0
  • Bằng dấu ‘$’
  • Bằng Enter (0dh)
  • Bằng ký tự ‘0’

Câu hỏi 140: 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?

  • CS:IP
  • DS:DX
  • ES:SI

Câu hỏi 141: 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 ?

  • Không
  • Tùy tình huống

Câu hỏi 142: 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ỉ cần dịch lại tệp có sai khi dịch
  • Dịch lại tất cả các tệp

Câu hỏi 143: 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 đó)?

  • ✅ Có thể thể hiện bằng 3 cách trên
  • Thể hiện khối lệnh đó bằng một MACRO
  • Thể hiện khối lệnh đó bằng một chương trình con
  • 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

Câu hỏi 144: Trong hai cách trở về DOS từ một chương trình hợp ngữ sau:Cách 1: MOV AH,4CH INT 21HCách 2: INT 20Hthì chương trình dạng .COM có thể sử dụng cách nào?

  • Cả hai cách
  • Cách 1
  • Cách 2

Câu hỏi 145: 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?

  • Được
  • Không
  • Tùy tình huống

Câu hỏi 146: Vai trò của directive GLOBAL của chương trình dich Turbo Assembler của hãng Borland?

  • ✅ Tùy cách sử dụng, directive GLOBAL có thể thay cho directive PUBLIC hay EXTRN. Nếu GLOBAL cho các nhãn đã được xác lập thì vai trò của nó là PUBLIC, còn nếu các nhãn đứng sau GLOBAL chỉ xác định kiểu nhãn thì vai trò GLOBAL là EXTRN
  • Chỉ thay cho directive EXTRN
  • Chỉ thay cho directive PUBLIC

Câu hỏi 147: Viết chương trình ngôn ngữ Assembly (hợp ngữ) để sau khi dịch và liên kết được tệp thực hiện đuôi .EXE hoặc đuôi .COM thì tệp thực hiện nào tiết kiệm vùng nhớ hơn?

  • ✅ Viết chương trình với dạng sao cho được tệp thực hiện .COM sẽ tiết kiệm vùng nhớ hơn
  • Như nhau
  • Tệp có đuôi .EXE sẽ tiết kiệm vùng nhớ hơn

Câu hỏi 148: Với 2 cách để liên kết ngôn ngữ Assembly (hợp ngữ) với ngôn ngữ bậc cao là Inline Assembly và viết tách biệt tệp hợp ngữ và tệp ngôn ngữ bậc cao thì cách nào tốt hơn và hay dùng hơn?

  • ✅ Cách viết tách biệt 2 tệp của 2 loại ngôn ngữ tốt hơn và hay dùng hơn vì tận dụng được sức mạnh của 2 chương trình dịch và sức mạnh các lệnh của 2 loại ngôn ngữ.
  • Cách Inline tốt hơn và hay dùng hơn
  • Cách nào cũng như nhau.

Câu hỏi 149: Với các thiết bị ngoại vi thì ngắt BIOS và DOS được tổ chức thế nào?

  • ✅ Ngắt BIOS xác lập từng ngắt cho từng thiết bị ngoại vi. Song với ngắt DOS, việc điều khiển các thiết bị ngoại vi đều hầu hết thông qua các chức năng của ngắt int 21h (DOS functions)
  • Chỉ có ngắt của BIOS mới có các chức năng điều khiển các thiết bị ngoại vi.
  • Chỉ có ngắt của DOS mới có các chức năng điều khiển các thiết bị ngoại vi.

Câu hỏi 150: 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?

  • CF = 0 (bit cờ Carry = 0)
  • CF = 0 và số lượng byte cần đọc nằm ở DX:AX=0
  • CF = 1 (bit cờ Carry = 1)
  • ZF = 0 (bit cờ Zero = 0)
  • ZF = 1 (bit cờ Zero = 1)

Câu hỏi 151: 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ì?

  • 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
  • Không ghi gì vào tệp
  • Nội dung của tệp vẫn giữ nguyên

Câu hỏi 152: 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ì?

  • Đọc nội dung màn hình đưa vào tệp
  • Đưa số liệu lên màn hình (hiện lên màn hình)
  • Đưa số liệu ra máy in

Câu hỏi 153: 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ì?

  • FAR
  • NEAR
  • Tùy tình huống

Câu hỏi 154: 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 ?

  • .MODEL large/medium/ huge
  • .MODEL tiny/small/compact
  • Loại nào cũng được

Câu hỏi 155: 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ì chương trình con có đối không?

  • ✅ Không có
  • Tùy tình huống

Câu hỏi 156: 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ỉ thông qua biến nhớ
  • Chỉ thông qua thamh ghi
  • Thông qua ngăn xếp
  • Thông qua thamh ghi, biến nhớ

Câu hỏi 157: 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 ?

  • CS=0 và IP=0
  • CS=0 và IP=FFFFh
  • CS=F000h và IP=FFF0h
  • CS=FFF0h và IP=F000h

Câu hỏi 158: Vòng lặp thông điệp có tác dụng như thế nào?

  • Biến đổi thông điệp từ dạng thô về dạng tinh
  • Loại bỏ các thông điệp không cần thiết
  • Phát sinh thông điệp và gửi đến hệ thống Windows
  • Tiếp nhận các sự kiện diễn ra trên máy
  • Tiếp nhận các thông điệp được phát sinh và gửi đến chương trình

Câu hỏi 159: Vòng lặp thông điệp được lập trình như sau?

  • MSG m;while(1){GetMessage(&m,0,0,0);TranslateMessage(&m);DispatchMessage(&m);}
  • MSG m;while(GetMessage(&m){TranslateMessage(&m);DispatchMessage(&m);}
  • MSG m;while(GetMessage(&m,0,0,0){DispatchMessage(&m);TranslateMessage(&m);}
  • MSG m;while(GetMessage(&m,0,0,0){TranslateMessage(&m);DispatchMessage(&m);}
  • MSG m;while(GetMessage(m,0,0,0){TranslateMessage(m);DispatchMessage(m);}

Câu hỏi 160: Vòng lặp trong ngôn ngữ Assembly (hợp ngữ) thường dùng là lệnh gì? Chỉ số vòng lặp nằm ở đâu?

  • ✅ Vòng lặp của ngôn ngữ Assembly thường dùng là lệnh LOOP. Chỉ số vòng lặp bắt buộc phải là một số nguyên dương và phải nằm trong thanh ghi CX trước khi thực hiện vòng lặp.
  • Vòng lặp ngôn ngữ Assembly thường dùng là lệnh LOOP. Chỉ số vòng lặp nằm ở thanh ghi AX
  • Vòng lặp ngôn ngữ Assembly thường dùng là lệnh LOOP. Chỉ số vòng lặp nằm ở bất kỳ thanh ghi nào

Câu hỏi 161: Vùng dữ liệu ROM BIOS là gì?

  • Là vùng nhớ chứa các thông tin về máy tính đang dùng
  • Là vùng nhớ chứa mã máy các chương trình con phục vụ ngắt của BIOS
  • 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

Câu hỏi 162: Vùng nhớ ngăn xếp có vai trò gì liên quan đến hàm?

  • ✅ Vùng nhớ ngăn xếp có vai trò rất quan trọng. Có thể nói không có ngăn xếp thì không có hàm. Hàm cần ngăn xếp để:Sử dụng cho lệnh push và pop trong thân hàm hợp ngữ,Khi gọi hàm, tham số thực sẽ đưa vào ngăn xếp.Chứa địa chỉ lệnh tiếp theo (địa chỉ lệnh đứng ngay sau lệnh gọi hàm).
  • Không có vai trò gì.
  • Chỉ để sử dụng cho lệnh push và pop của ngôn ngữ Assembly.
  • Chỉ sử dụng để chứa giá trị của tham số thực