Hãy cho biết đoạn chương trình sau thực hiện việc gì?
MOV AX,4C00h
INT 21h
Trả lời:
Đáp án đúng: C
Đoạn chương trình Assembly này sử dụng ngắt INT 21h với AH=4C00h. Chức năng này được hệ điều hành DOS cung cấp để kết thúc một chương trình và trả quyền điều khiển lại cho hệ điều hành. Do đó, đáp án đúng là chấm dứt chương trình và trở về hệ điều hành DOS.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: B
Câu hỏi này kiểm tra kiến thức về các lệnh hợp ngữ (assembly) cơ bản, đặc biệt là lệnh nhân (MUL, IMUL) và lệnh MOV.
* MOV AX, 3: Lệnh này gán giá trị 3 vào thanh ghi AX. Lệnh này hợp lệ.
* MUL BX: Lệnh này nhân không dấu thanh ghi AX với thanh ghi BX. Kết quả được lưu trữ trong AX (nếu kết quả vừa đủ) hoặc DX:AX (nếu kết quả lớn hơn kích thước của AX). Lệnh này hợp lệ.
* IMUL BX: Lệnh này nhân có dấu thanh ghi AX với thanh ghi BX. Cách lưu trữ kết quả tương tự như MUL BX. Lệnh này hợp lệ.
* MOV BX, -1: Lệnh này gán giá trị -1 vào thanh ghi BX. Trong kiến trúc x86, việc gán giá trị âm trực tiếp vào thanh ghi là hợp lệ.
Tuy nhiên, khi sử dụng MUL (nhân không dấu), nếu BX chứa giá trị âm (-1), kết quả sẽ không chính xác theo ý nghĩa nhân không dấu thông thường. Dù lệnh MOV BX, -1 hợp lệ về mặt cú pháp, việc sử dụng giá trị âm này trong phép nhân không dấu MUL BX có thể dẫn đến kết quả không mong muốn. Các lệnh còn lại đều thực hiện đúng chức năng của nó. Vì vậy, theo nghĩa rộng hơn, việc sử dụng giá trị âm trong MUL BX là không nên, và câu D tạo ra tình huống đó.
Vậy câu lệnh sai là D vì nó gán một giá trị âm cho BX, có thể gây ra lỗi khi sử dụng MUL BX (mặc dù MOV BX, -1 bản thân nó là hợp lệ).
* MOV AX, 3: Lệnh này gán giá trị 3 vào thanh ghi AX. Lệnh này hợp lệ.
* MUL BX: Lệnh này nhân không dấu thanh ghi AX với thanh ghi BX. Kết quả được lưu trữ trong AX (nếu kết quả vừa đủ) hoặc DX:AX (nếu kết quả lớn hơn kích thước của AX). Lệnh này hợp lệ.
* IMUL BX: Lệnh này nhân có dấu thanh ghi AX với thanh ghi BX. Cách lưu trữ kết quả tương tự như MUL BX. Lệnh này hợp lệ.
* MOV BX, -1: Lệnh này gán giá trị -1 vào thanh ghi BX. Trong kiến trúc x86, việc gán giá trị âm trực tiếp vào thanh ghi là hợp lệ.
Tuy nhiên, khi sử dụng MUL (nhân không dấu), nếu BX chứa giá trị âm (-1), kết quả sẽ không chính xác theo ý nghĩa nhân không dấu thông thường. Dù lệnh MOV BX, -1 hợp lệ về mặt cú pháp, việc sử dụng giá trị âm này trong phép nhân không dấu MUL BX có thể dẫn đến kết quả không mong muốn. Các lệnh còn lại đều thực hiện đúng chức năng của nó. Vì vậy, theo nghĩa rộng hơn, việc sử dụng giá trị âm trong MUL BX là không nên, và câu D tạo ra tình huống đó.
Vậy câu lệnh sai là D vì nó gán một giá trị âm cho BX, có thể gây ra lỗi khi sử dụng MUL BX (mặc dù MOV BX, -1 bản thân nó là hợp lệ).
Lời giải:
Đáp án đúng: D
Trong ngôn ngữ Assembler, tên (hay còn gọi là định danh - identifier) hợp lệ phải tuân theo một số quy tắc nhất định. Cụ thể:
- Bắt đầu bằng một chữ cái (A-Z, a-z) hoặc dấu gạch dưới (_).
- Chỉ chứa các chữ cái, chữ số (0-9) và dấu gạch dưới.
- Không chứa các ký tự đặc biệt khác (ví dụ: dấu chấm, dấu phẩy, dấu cộng, dấu nháy đơn, v.v.).
- Không trùng với các từ khóa (keyword) đã được định nghĩa sẵn trong ngôn ngữ Assembler.
Dựa vào các quy tắc này, ta có thể phân tích các phương án:
- A. AB.C: Chứa dấu chấm (.), không hợp lệ.
- B. IT’S: Chứa dấu nháy đơn ('), không hợp lệ.
- C. T+: Chứa dấu cộng (+), không hợp lệ.
- D. Hello_2_ABC: Bắt đầu bằng chữ cái, chỉ chứa chữ cái, chữ số và dấu gạch dưới, hợp lệ.
Lời giải:
Đáp án đúng: C
Câu hỏi này kiểm tra kiến thức về cách sử dụng các lệnh MOV trong hợp ngữ (assembly), đặc biệt là cách di chuyển dữ liệu giữa các thanh ghi và các biến nhớ, cũng như cách sử dụng các từ khóa như LABEL và PTR. Chúng ta cần xem xét kích thước dữ liệu và tính hợp lệ của các toán hạng.
* Phương án A: MOV AH, B
* `B` được định nghĩa là `LABEL BYTE`, tức là một nhãn (label) chỉ đến một vị trí nhớ có kích thước byte. `AH` là một thanh ghi 8-bit (byte). Lệnh này hợp lệ vì nó di chuyển một byte dữ liệu từ vị trí nhớ được gán nhãn `B` vào thanh ghi `AH`.
* Phương án B: MOV CX, C
* `C` được định nghĩa là `LABEL WORD`, tức là một nhãn chỉ đến một vị trí nhớ có kích thước word (2 byte). `CX` là một thanh ghi 16-bit (word). Lệnh này hợp lệ vì nó di chuyển một word dữ liệu từ vị trí nhớ được gán nhãn `C` vào thanh ghi `CX`.
* Phương án C: MOV AX, B
* `B` được định nghĩa là `LABEL BYTE`, tức là một nhãn chỉ đến một vị trí nhớ có kích thước byte. `AX` là một thanh ghi 16-bit (word). Lệnh này không hợp lệ vì bạn đang cố gắng di chuyển một byte vào một thanh ghi word. Kích thước không khớp.
* Phương án D: MOV BX, WORD PTR B
* `B` được định nghĩa là `LABEL BYTE`. `WORD PTR B` chỉ định rằng chúng ta muốn lấy một word (2 byte) từ vị trí nhớ được gán nhãn `B`. `BX` là một thanh ghi 16-bit (word). Câu lệnh này là hợp lệ, mặc dù `B` vốn là byte, `WORD PTR` sẽ lấy 2 byte từ vị trí `B` và lưu vào `BX`.
Vậy, lệnh MOV AX, B là không hợp lệ do kích thước dữ liệu không tương thích (byte vào word).
* Phương án A: MOV AH, B
* `B` được định nghĩa là `LABEL BYTE`, tức là một nhãn (label) chỉ đến một vị trí nhớ có kích thước byte. `AH` là một thanh ghi 8-bit (byte). Lệnh này hợp lệ vì nó di chuyển một byte dữ liệu từ vị trí nhớ được gán nhãn `B` vào thanh ghi `AH`.
* Phương án B: MOV CX, C
* `C` được định nghĩa là `LABEL WORD`, tức là một nhãn chỉ đến một vị trí nhớ có kích thước word (2 byte). `CX` là một thanh ghi 16-bit (word). Lệnh này hợp lệ vì nó di chuyển một word dữ liệu từ vị trí nhớ được gán nhãn `C` vào thanh ghi `CX`.
* Phương án C: MOV AX, B
* `B` được định nghĩa là `LABEL BYTE`, tức là một nhãn chỉ đến một vị trí nhớ có kích thước byte. `AX` là một thanh ghi 16-bit (word). Lệnh này không hợp lệ vì bạn đang cố gắng di chuyển một byte vào một thanh ghi word. Kích thước không khớp.
* Phương án D: MOV BX, WORD PTR B
* `B` được định nghĩa là `LABEL BYTE`. `WORD PTR B` chỉ định rằng chúng ta muốn lấy một word (2 byte) từ vị trí nhớ được gán nhãn `B`. `BX` là một thanh ghi 16-bit (word). Câu lệnh này là hợp lệ, mặc dù `B` vốn là byte, `WORD PTR` sẽ lấy 2 byte từ vị trí `B` và lưu vào `BX`.
Vậy, lệnh MOV AX, B là không hợp lệ do kích thước dữ liệu không tương thích (byte vào word).
Lời giải:
Đáp án đúng: B
Địa chỉ vật lý được tính bằng công thức: Segment * 16 + Offset.
Với địa chỉ vật lý 1256Ah, ta cần tìm cặp Segment:Offset thỏa mãn công thức trên.
* Trường hợp 1: Segment = 1256h
Địa chỉ vật lý = 1256h * 16 + Offset = 12560h + Offset = 1256Ah
=> Offset = 1256Ah - 12560h = 000Ah
Vậy, một cặp Segment:Offset hợp lệ là 1256h:000Ah
* Trường hợp 2: Segment = 1240h
Địa chỉ vật lý = 1240h * 16 + Offset = 12400h + Offset = 1256Ah
=> Offset = 1256Ah - 12400h = 016Ah
Vậy, một cặp Segment:Offset hợp lệ là 1240h:016Ah
Xét các đáp án:
A. 1256:0000 => 12560h + 0000h = 12560h (Sai)
B. 1256:000A => 12560h + 000Ah = 1256Ah (Đúng)
C. 1256:016A => 12560h + 016Ah = 126CAh (Sai)
D. 1240:000A => 12400h + 000Ah = 1240Ah (Sai)
Vậy đáp án đúng là B.
Với địa chỉ vật lý 1256Ah, ta cần tìm cặp Segment:Offset thỏa mãn công thức trên.
* Trường hợp 1: Segment = 1256h
Địa chỉ vật lý = 1256h * 16 + Offset = 12560h + Offset = 1256Ah
=> Offset = 1256Ah - 12560h = 000Ah
Vậy, một cặp Segment:Offset hợp lệ là 1256h:000Ah
* Trường hợp 2: Segment = 1240h
Địa chỉ vật lý = 1240h * 16 + Offset = 12400h + Offset = 1256Ah
=> Offset = 1256Ah - 12400h = 016Ah
Vậy, một cặp Segment:Offset hợp lệ là 1240h:016Ah
Xét các đáp án:
A. 1256:0000 => 12560h + 0000h = 12560h (Sai)
B. 1256:000A => 12560h + 000Ah = 1256Ah (Đúng)
C. 1256:016A => 12560h + 016Ah = 126CAh (Sai)
D. 1240:000A => 12400h + 000Ah = 1240Ah (Sai)
Vậy đáp án đúng là B.
Lời giải:
Đáp án đúng: A
Khai báo intArray1 db 16 dup(0)
có nghĩa là khai báo một mảng có tên là intArray1, mỗi phần tử có kích thước 1 byte (db
- define byte), và mảng này có 16 phần tử, mỗi phần tử được khởi tạo giá trị là 0. Do đó, kích thước (SIZE) của intArray1 là 16 * 1 = 16 bytes.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng