Sự hiểu biết của tôi về sổ đăng ký lắp ráp nói rằng mỗi đăng ký có thể được truy cập bằng toàn bộ mã 32 bit và được chia thành nhiều thanh ghi có thể truy cập. Trong ví dụ này, EAX
là thanh ghi 32 bit, nếu chúng ta gọi AX
, nó sẽ trả lại 16 bit đầu tiên và nếu chúng ta gọi AH
hoặc AL
thì nó sẽ trả về 8 bit tiếp theo sau 16 bit và AL
sẽ trả lại 8 bit cuối cùng.Bộ nhớ lập trình lắp ráp Phân bổ EAX vs Axe, AH, AL
Vì vậy, câu hỏi của tôi, bởi vì tôi không thực sự tin rằng đây là cách nó hoạt động. Nếu chúng ta lưu trữ một giá trị 32 bit của bảy ... aka EAX
lưu trữ
0000 0000 0000 0000 0000 0000 0000 0111
Vì vậy, nếu chúng ta gọi là AX
nó nên trở
0000 0000 0000 0000
nếu chúng ta gọi là AH
nó nên trở
0000 0000
và khi chúng tôi gọi AL
, nó sẽ trả lại
0000 0111
Điều này có đúng không? và nếu cuộc gọi đến số AH
thực sự mang lại giá trị gì?
Không, giá trị của bạn cho AX là sai. Hack ra 16 bit cuối cùng. AH chỉ trả về các bit từ 8 đến 15 của EAX. –
hãy thay thế mẫu bit bằng thứ gì đó dễ hiểu hơn trong ngữ cảnh câu hỏi của bạn, ví dụ: 0000 0001 0010 0011 ... –