Làm thế nào để viết một lệnh xóa các bit 0 và 1 trong thanh ghi AL bằng cách sử dụng assembly?Xóa bit trong sổ đăng ký trong assembly
Trả lời
VÀ AL, 11111100b giả dạng MASM
AL là byte thấp của thanh ghi AX, vì vậy bạn có thể AND AL 0xFC để che dấu các bit thấp.
AND AL,0xfc
tương đương với số không?
như
mov al, 00000000
rìu = 16bits al = 8bits
bây giờ nếu bất cứ điều gì được ored với al câu trả lời sẽ giống như những gì được ored
nhưng
nếu có bất kỳ thứ gì được đặt cùng với câu trả lời sẽ là "0"
vì vậy tôi đoán việc xóa nó với tất cả 1s hoặc tất cả 0 phụ thuộc vào công việc của bạn và cách bạn muốn xác định rằng không có gì trong sổ đăng ký.
làm thế nào về một bình luận tại sao điều này là như vậy không rõ ràng để đánh dấu tiêu cực /? chuyện gì vậy? Tôi cũng đang học – user287745
nó sẽ xuất hiện mà bạn đã không thực sự hiểu được câu hỏi và/hoặc không biết làm thế nào để trả lời nó, đó có lẽ là lý do tại sao bạn có một vài downvotes. Xem các câu trả lời (chính xác) khác để hiểu rõ hơn về những gì đang được hỏi và cách giải quyết nó. Nói chung, có thể là một ý tưởng hay khi chỉ trả lời các câu hỏi nếu (a) bạn chắc chắn rằng bạn hiểu câu hỏi và (b) bạn có một chút tự tin rằng bạn có thể cung cấp câu trả lời hữu ích. Chúc may mắn. –
anh ta chỉ muốn xóa 2 bit thấp nhất, không phải toàn bộ thanh ghi (hoặc đăng ký phụ), phương thức của bạn loại bỏ quá nhiều bit, do đó nó hoàn toàn sai phương pháp, chỉ cần xem các phương thức ở trên của bạn. haha, 14 giây ninja Paul R là: P – Necrolis
Bạn có thể xóa bit bằng cách sử dụng AND -operation.
for each bit index `i`
result[i] = boolean_and(first[i], second[i])
.--------- commonly associated symbol for the operation
|
& 1 0 <- first argument
-------
1 | 1 0 <- result
0 | 0 0
^--------- second argument
Một ví dụ với một byte:
00101100
00111010
&
00101000
Vì vậy, bạn có thể sử dụng hoạt động này để mặt nạ và vùng lãnh thổ lật bit trong một thanh ghi. Vượt qua một hằng số như đối số thứ hai có bit lật lên bạn muốn theo kịp.
x86 mnemonic: AND a, b
operation: a = a & b
Dưới đây là làm thế nào để làm điều đó trừ khi bạn vẫn chưa hiểu nó:
AND eax, 0xfffffffc
AL là phần byte thấp nhất của EAX -register để bạn có thể làm theo cách này.
Dưới đây là nhị phân -> bảng chuyển đổi hệ thập lục phân:
0000 | 0
0001 | 1
0010 | 2
0011 | 3
0100 | 4
0101 | 5
0110 | 6
0111 | 7
1000 | 8
1001 | 9
1010 | a
1011 | b
1100 | c
1101 | d
1110 | e
1111 | f
Oh, và bạn nên nhớ điều này từ phía sau đầu của bạn nếu bạn đang đi để trở thành một lập trình viên lắp ráp-biết tự trọng.
Cũng đọc về các hoạt động OR và XOR-bit.
có một cách khác để làm điều này bằng cách sử dụng xor
dụ:
mov al, ff
xor al, 00000011b
al = fc because we cleared bit 0 and 1
'xor' chỉ hoạt động nếu cả bit 0 và bit 1 trước ngày xor, nhưng câu hỏi không làm điều kiện tiên quyết như vậy và muốn xóa các bit bất kể. –
- 1. Thêm hai số 64 bit trong Assembly
- 2. Hạn chế đăng ký r10 trong gcc inline x86_64 assembly
- 3. Cách đăng ký một assembly .NET như COM?
- 4. Viết giá trị đăng ký trong hệ thống 64 bit
- 5. Ký một assembly trong Visual Studio
- 6. Unity: Không thể đăng ký loại từ assembly khác nhau
- 7. Đăng ký các assembly vào GAC bằng InstallShield
- 8. Giữ mật khẩu trong sổ đăng ký là "bí mật"
- 9. CLSIDFromProgID() tìm trong sổ đăng ký ở đâu?
- 10. Cách đăng ký quyền ghi trong C#
- 11. Xác định cấu trúc 32/64 bit trong assembly
- 12. Đăng ký 32 bit COM DLL tới 64 bit Windows 7
- 13. Cách xóa giá trị đăng ký trong C#
- 14. Truy cập đăng ký 64 bit từ ứng dụng 32 bit
- 15. Tại sao tôi không thể đọc chính xác giá trị đăng ký 32 bit trong HKCU trên máy 64 bit?
- 16. khung công tác đăng ký/đăng ký nhẹ trong java
- 17. Cách tìm vị trí chương trình trong sổ đăng ký, nếu tôi biết MSI GUID?
- 18. Sử dụng Multiply Accumulate Instruction Assembly Inline Assembly trong C++
- 19. Cách dễ dàng để truy cập sổ đăng ký I/O CPU Intel trong Windows
- 20. Cách mở khóa đăng ký WOW64 từ ứng dụng .NET 64 bit
- 21. Tránh đặt lại khó khăn khi xóa các thay đổi đăng ký trong WIN7?
- 22. Lấy đường dẫn cài đặt tệp từ sổ đăng ký
- 23. Không thể ghi vào sổ đăng ký theo HKEY_LOCAL_MACHINE \ Software
- 24. Đăng ký thay đổi Sổ Địa chỉ, sử dụng ABAddressBookRegisterExternalChangeCallback
- 25. sổ đăng ký lắp ráp esp và ebp
- 26. Tạo khóa đăng ký cửa sổ mới bằng C++
- 27. COM đăng ký Interop
- 28. Tìm phiên bản MSXML từ sổ đăng ký
- 29. Cách tạo trình theo dõi sổ đăng ký?
- 30. Cách sử dụng .Net assembly từ Win32 mà không cần đăng ký?
Trong những lắp ráp? Trên CPU gì? –
CPU rõ ràng là x86 kể từ khi nói đến AL. – mathk
Cần thẻ 'bài tập về nhà'? –